MCPcopy Create free account
hub / github.com/BYVoid/OpenCC / LoadCases

Function LoadCases

test/CommandLineConvertTest.cpp:307–345  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

305using CasesByConfig = std::unordered_map<std::string, std::vector<CaseInput>>;
306
307CasesByConfig LoadCases(const std::string& jsonPath) {
308 CasesByConfig cases;
309 std::string content;
310 {
311 std::ifstream ifs(jsonPath);
312 if (!ifs.is_open()) {
313 throw std::runtime_error("Cannot open " + jsonPath);
314 }
315 std::stringstream buffer;
316 buffer << ifs.rdbuf();
317 content = buffer.str();
318 }
319
320 rapidjson::Document doc;
321 doc.Parse<rapidjson::kParseCommentsFlag |
322 rapidjson::kParseTrailingCommasFlag>(content.c_str());
323 if (doc.HasParseError() || !doc.IsObject() || !doc.HasMember("cases") ||
324 !doc["cases"].IsArray()) {
325 throw std::runtime_error("Invalid testcases.json format");
326 }
327
328 for (auto& entry : doc["cases"].GetArray()) {
329 if (!entry.IsObject() || !entry.HasMember("input") ||
330 !entry["input"].IsString() || !entry.HasMember("expected") ||
331 !entry["expected"].IsObject()) {
332 continue;
333 }
334 const std::string input = entry["input"].GetString();
335 for (auto itr = entry["expected"].MemberBegin();
336 itr != entry["expected"].MemberEnd(); ++itr) {
337 if (!itr->value.IsString()) {
338 continue;
339 }
340 const std::string config = itr->name.GetString();
341 cases[config].push_back({input, itr->value.GetString()});
342 }
343 }
344 return cases;
345}
346
347TEST_F(CommandLineConvertTest, ConvertFromJson) {
348#ifdef BAZEL

Callers 2

TEST_FFunction · 0.85
TEST_FFunction · 0.85

Calls 8

HasMemberMethod · 0.80
GetStringMethod · 0.80
MemberBeginMethod · 0.80
MemberEndMethod · 0.80
is_openMethod · 0.45
strMethod · 0.45
HasParseErrorMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected