1 // Copyright (C) 2023 Google LLC
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 #include "icing/testing/common-matchers.h"
15
16 namespace icing {
17 namespace lib {
18
ExtractTermFrequencies(const std::unordered_map<SectionId,Hit::TermFrequency> & section_ids_tf_map)19 ExtractTermFrequenciesResult ExtractTermFrequencies(
20 const std::unordered_map<SectionId, Hit::TermFrequency>&
21 section_ids_tf_map) {
22 ExtractTermFrequenciesResult result;
23 for (const auto& [section_id, tf] : section_ids_tf_map) {
24 result.term_frequencies[section_id] = tf;
25 result.section_mask |= UINT64_C(1) << section_id;
26 }
27 return result;
28 }
29
CheckTermFrequency(const std::array<Hit::TermFrequency,kTotalNumSections> & expected_term_frequencies,const std::array<Hit::TermFrequency,kTotalNumSections> & actual_term_frequencies)30 CheckTermFrequencyResult CheckTermFrequency(
31 const std::array<Hit::TermFrequency, kTotalNumSections>&
32 expected_term_frequencies,
33 const std::array<Hit::TermFrequency, kTotalNumSections>&
34 actual_term_frequencies) {
35 CheckTermFrequencyResult result;
36 for (SectionId section_id = 0; section_id < kTotalNumSections; ++section_id) {
37 if (expected_term_frequencies.at(section_id) !=
38 actual_term_frequencies.at(section_id)) {
39 result.term_frequencies_match = false;
40 }
41 }
42 result.actual_term_frequencies_str =
43 absl_ports::StrCat("[",
44 absl_ports::StrJoin(actual_term_frequencies, ",",
45 absl_ports::NumberFormatter()),
46 "]");
47 result.expected_term_frequencies_str =
48 absl_ports::StrCat("[",
49 absl_ports::StrJoin(expected_term_frequencies, ",",
50 absl_ports::NumberFormatter()),
51 "]");
52 return result;
53 }
54
StatusCodeToString(libtextclassifier3::StatusCode code)55 std::string StatusCodeToString(libtextclassifier3::StatusCode code) {
56 switch (code) {
57 case libtextclassifier3::StatusCode::OK:
58 return "OK";
59 case libtextclassifier3::StatusCode::CANCELLED:
60 return "CANCELLED";
61 case libtextclassifier3::StatusCode::UNKNOWN:
62 return "UNKNOWN";
63 case libtextclassifier3::StatusCode::INVALID_ARGUMENT:
64 return "INVALID_ARGUMENT";
65 case libtextclassifier3::StatusCode::DEADLINE_EXCEEDED:
66 return "DEADLINE_EXCEEDED";
67 case libtextclassifier3::StatusCode::NOT_FOUND:
68 return "NOT_FOUND";
69 case libtextclassifier3::StatusCode::ALREADY_EXISTS:
70 return "ALREADY_EXISTS";
71 case libtextclassifier3::StatusCode::PERMISSION_DENIED:
72 return "PERMISSION_DENIED";
73 case libtextclassifier3::StatusCode::RESOURCE_EXHAUSTED:
74 return "RESOURCE_EXHAUSTED";
75 case libtextclassifier3::StatusCode::FAILED_PRECONDITION:
76 return "FAILED_PRECONDITION";
77 case libtextclassifier3::StatusCode::ABORTED:
78 return "ABORTED";
79 case libtextclassifier3::StatusCode::OUT_OF_RANGE:
80 return "OUT_OF_RANGE";
81 case libtextclassifier3::StatusCode::UNIMPLEMENTED:
82 return "UNIMPLEMENTED";
83 case libtextclassifier3::StatusCode::INTERNAL:
84 return "INTERNAL";
85 case libtextclassifier3::StatusCode::UNAVAILABLE:
86 return "UNAVAILABLE";
87 case libtextclassifier3::StatusCode::DATA_LOSS:
88 return "DATA_LOSS";
89 case libtextclassifier3::StatusCode::UNAUTHENTICATED:
90 return "UNAUTHENTICATED";
91 default:
92 return "";
93 }
94 }
95
ProtoStatusCodeToString(StatusProto::Code code)96 std::string ProtoStatusCodeToString(StatusProto::Code code) {
97 switch (code) {
98 case StatusProto::OK:
99 return "OK";
100 case StatusProto::UNKNOWN:
101 return "UNKNOWN";
102 case StatusProto::INVALID_ARGUMENT:
103 return "INVALID_ARGUMENT";
104 case StatusProto::NOT_FOUND:
105 return "NOT_FOUND";
106 case StatusProto::ALREADY_EXISTS:
107 return "ALREADY_EXISTS";
108 case StatusProto::OUT_OF_SPACE:
109 return "OUT_OF_SPACE";
110 case StatusProto::FAILED_PRECONDITION:
111 return "FAILED_PRECONDITION";
112 case StatusProto::ABORTED:
113 return "ABORTED";
114 case StatusProto::INTERNAL:
115 return "INTERNAL";
116 case StatusProto::WARNING_DATA_LOSS:
117 return "WARNING_DATA_LOSS";
118 default:
119 return "";
120 }
121 }
122
123 } // namespace lib
124 } // namespace icing
125