mirror of
https://github.com/google/benchmark.git
synced 2025-03-16 20:20:09 +08:00
58 lines
1.8 KiB
C++
58 lines
1.8 KiB
C++
|
//===---------------------------------------------------------------------===//
|
||
|
// json_test - Unit tests for benchmark/json.h
|
||
|
//===---------------------------------------------------------------------===//
|
||
|
|
||
|
#include "benchmark/benchmark.h"
|
||
|
#include "gtest/gtest.h"
|
||
|
|
||
|
namespace {
|
||
|
TEST(JSONTest, BreathingTest) {
|
||
|
using benchmark::json;
|
||
|
using namespace benchmark;
|
||
|
json obj{{"name", "foo"}, {"value", 42}, {"list", {1, 2, 3}}};
|
||
|
auto expect_json = R"(
|
||
|
{
|
||
|
"name": "foo",
|
||
|
"value": 42,
|
||
|
"list": [1, 2, 3]
|
||
|
})"_json;
|
||
|
EXPECT_EQ(obj, expect_json);
|
||
|
EXPECT_EQ(obj.at("name"), "foo");
|
||
|
EXPECT_EQ(obj.at("value"), 42);
|
||
|
EXPECT_EQ(obj.at("list"), (json::array_t{1, 2, 3}));
|
||
|
auto list = obj.at("list");
|
||
|
auto expect_list = expect_json.at("list");
|
||
|
for (auto It = list.begin(), EIt = expect_list.begin(); It != list.end();
|
||
|
++It, ++EIt) {
|
||
|
EXPECT_EQ(*It, *EIt);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
TEST(JSONTest, JSONInputTest) {
|
||
|
using namespace benchmark;
|
||
|
RegisterBenchmark("test1",
|
||
|
[](State& st) {
|
||
|
json obj = st.GetInput();
|
||
|
assert(!obj.is_null());
|
||
|
switch (obj.at("case").get<int>()) {
|
||
|
case 1:
|
||
|
assert(obj.at("name") == "foo");
|
||
|
assert(obj.at("a") == 42);
|
||
|
break;
|
||
|
case 2:
|
||
|
assert(obj.count("name") == 0);
|
||
|
assert(obj.at("b") == 101);
|
||
|
break;
|
||
|
default:
|
||
|
assert(false && "in default case");
|
||
|
}
|
||
|
for (auto _ : st) {
|
||
|
}
|
||
|
})
|
||
|
->WithInput({{"case", 1}, {"name", "foo"}, {"a", 42}})
|
||
|
->WithInput({{"case", 2}, {"b", 101}});
|
||
|
RunSpecifiedBenchmarks();
|
||
|
}
|
||
|
|
||
|
} // end namespace
|