value_builder_unittest.cc 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // Copyright 2015 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "extensions/common/value_builder.h"
  5. #include <list>
  6. #include <memory>
  7. #include <set>
  8. #include <utility>
  9. #include <vector>
  10. #include "base/json/json_writer.h"
  11. #include "base/values.h"
  12. #include "testing/gtest/include/gtest/gtest.h"
  13. using ValueBuilderTest = testing::Test;
  14. namespace extensions {
  15. TEST(ValueBuilderTest, Basic) {
  16. ListBuilder permission_list;
  17. permission_list.Append("tabs").Append("history");
  18. std::unique_ptr<base::DictionaryValue> settings(new base::DictionaryValue);
  19. ASSERT_FALSE(settings->GetList("permissions", nullptr));
  20. settings =
  21. DictionaryBuilder().Set("permissions", permission_list.Build()).Build();
  22. base::ListValue* list_value;
  23. ASSERT_TRUE(settings->GetList("permissions", &list_value));
  24. ASSERT_EQ(list_value->GetList().size(), 2u);
  25. ASSERT_TRUE(list_value->GetList()[0].is_string());
  26. ASSERT_EQ(list_value->GetList()[0].GetString(), "tabs");
  27. ASSERT_TRUE(list_value->GetList()[1].is_string());
  28. ASSERT_EQ(list_value->GetList()[1].GetString(), "history");
  29. }
  30. TEST(ValueBuilderTest, AppendList) {
  31. auto get_json = [](const base::Value& value) -> std::string {
  32. std::string json;
  33. if (!base::JSONWriter::Write(value, &json)) {
  34. // Since this isn't valid JSON, there shouldn't be any risk of this
  35. // matching expected output.
  36. return "JSONWriter::Write() failed!";
  37. }
  38. return json;
  39. };
  40. {
  41. std::vector<std::string> strings = {"hello", "world", "!"};
  42. std::unique_ptr<base::Value> value =
  43. ListBuilder().Append(strings.begin(), strings.end()).Build();
  44. EXPECT_EQ(R"(["hello","world","!"])", get_json(*value));
  45. }
  46. {
  47. std::set<int> ints = {0, 1, 2, 3};
  48. std::unique_ptr<base::Value> value =
  49. ListBuilder().Append(ints.begin(), ints.end()).Build();
  50. EXPECT_EQ(R"([0,1,2,3])", get_json(*value));
  51. }
  52. {
  53. std::list<bool> bools = {false, true, false, true};
  54. std::unique_ptr<base::Value> value =
  55. ListBuilder().Append(bools.begin(), bools.end()).Build();
  56. EXPECT_EQ(R"([false,true,false,true])", get_json(*value));
  57. }
  58. }
  59. } // namespace extensions