blob: dea63cb42070cd71db11364f91bcca53b8826254 [file] [log] [blame]
//===---------------------------------------------------------------------===//
// 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