blob: 032c9d074a7288535a781c8ffd9490a52cdc032c [file]
// Copyright 2022 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "runtime_probe/utils/value_utils.h"
#include <string>
#include <utility>
#include <base/json/json_reader.h>
#include <base/values.h>
#include <gtest/gtest.h>
namespace {
base::Value LoadValueFromJSON(const char* raw_json_content) {
auto load_result = base::JSONReader::Read(
raw_json_content, base::JSON_PARSE_CHROMIUM_EXTENSIONS);
EXPECT_TRUE(load_result.has_value());
return std::move(load_result.value());
}
} // namespace
namespace runtime_probe {
TEST(ValueUtilsTest, TestPrependToDVKey) {
auto dict_value = LoadValueFromJSON(R"({
"key_1": "value_1",
"key_2": 123
})");
auto expected_converted_dict_value = LoadValueFromJSON(R"({
"the_prefix_key_1": "value_1",
"the_prefix_key_2": 123
})");
PrependToDVKey(&dict_value, "the_prefix_");
EXPECT_EQ(dict_value, expected_converted_dict_value);
}
TEST(ValueUtilsTest, TestRenameKey) {
auto dict_value = LoadValueFromJSON(R"({
"old_key_1": "value_1",
"old_key_2": 123
})");
auto expected_converted_dict_value = LoadValueFromJSON(R"({
"new_key_1": "value_1",
"old_key_2": 123
})");
EXPECT_TRUE(RenameKey(&dict_value, "old_key_1", "new_key_1"));
EXPECT_EQ(dict_value, expected_converted_dict_value);
}
TEST(ValueUtilsTest, TestRenameKeyWithNonDictValue) {
base::Value int_value(123);
auto expected_converted_int_value = int_value.Clone();
EXPECT_FALSE(RenameKey(&int_value, "old_key", "new_key"));
EXPECT_EQ(int_value, expected_converted_int_value);
}
TEST(ValueUtilsTest, TestRenameKeyWithNonExistKey) {
auto dict_value = LoadValueFromJSON(R"({
"old_key_1": "value_1",
"old_key_2": 123
})");
auto expected_converted_dict_value = dict_value.Clone();
EXPECT_FALSE(RenameKey(&dict_value, "old_key_3", "new_key_3"));
EXPECT_EQ(dict_value, expected_converted_dict_value);
}
} // namespace runtime_probe