3#include "absl/strings/ascii.h"
4#include "absl/strings/str_cat.h"
5#include "absl/strings/str_format.h"
6#include "absl/strings/str_replace.h"
13 return absl::StrFormat(
"%s:%d", host, port);
18 out.reserve(value.size() + 8);
19 for (
unsigned char c : value) {
45 absl::StrFormat(
"\\u%04X",
static_cast<int>(c)));
47 out.push_back(
static_cast<char>(c));
55 std::string escaped(value);
56 absl::StrReplaceAll({{
"\\",
"\\\\"}, {
"\"",
"\\\""}}, &escaped);
57 return absl::StrCat(
"\"", escaped,
"\"");
61 if (!time.has_value()) {
64 return absl::FormatTime(
"%Y-%m-%dT%H:%M:%SZ", *time, absl::UTCTimeZone());
68 if (!time.has_value()) {
71 return absl::FormatTime(
"%Y-%m-%dT%H:%M:%SZ", *time, absl::UTCTimeZone());
79 return absl::StrCat(
"\"",
JsonEscape(iso),
"\"");
123std::optional<TestRunStatus> ParseStatusFilter(absl::string_view value) {
124 std::string lower = std::string(absl::AsciiStrToLower(value));
125 if (lower ==
"queued")
127 if (lower ==
"running")
129 if (lower ==
"passed")
131 if (lower ==
"failed")
133 if (lower ==
"timeout")
135 if (lower ==
"unknown")
140std::optional<WidgetTypeFilter> ParseWidgetTypeFilter(absl::string_view value) {
141 std::string lower = std::string(absl::AsciiStrToLower(value));
142 if (lower.empty() || lower ==
"unspecified" || lower ==
"any") {
145 if (lower ==
"all") {
148 if (lower ==
"button" || lower ==
"buttons") {
151 if (lower ==
"input" || lower ==
"textbox" || lower ==
"field") {
154 if (lower ==
"menu" || lower ==
"menuitem" || lower ==
"menu-item") {
157 if (lower ==
"tab" || lower ==
"tabs") {
160 if (lower ==
"checkbox" || lower ==
"toggle") {
163 if (lower ==
"slider" || lower ==
"drag" || lower ==
"sliderfloat") {
166 if (lower ==
"canvas" || lower ==
"viewport") {
169 if (lower ==
"selectable" || lower ==
"list-item") {
172 if (lower ==
"other") {
std::string FormatOptionalTime(const std::optional< absl::Time > &time)
std::string YamlQuote(absl::string_view value)
std::string OptionalTimeToYaml(const std::optional< absl::Time > &time)
std::string HarnessAddress(const std::string &host, int port)
std::string JsonEscape(absl::string_view value)
std::string OptionalTimeToJson(const std::optional< absl::Time > &time)
std::string OptionalTimeToIso(const std::optional< absl::Time > &time)
TestRunStatus
Execution status codes returned by the harness.