xref: /aosp_15_r20/external/icing/icing/testing/common-matchers.cc (revision 8b6cd535a057e39b3b86660c4aa06c99747c2136)
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