[M120 Migration][VD] Enable direct rendering for TVPlus
[platform/framework/web/chromium-efl.git] / components / fuchsia_component_support / config_reader_unittest.cc
1 // Copyright 2021 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "components/fuchsia_component_support/config_reader.h"
6
7 #include <string>
8
9 #include "base/files/file_util.h"
10 #include "base/files/scoped_temp_dir.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 namespace fuchsia_component_support {
14
15 TEST(ConfigReaderTest, NoConfigData) {
16   base::ScopedTempDir temp_dir;
17   ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
18
19   auto config = LoadConfigFromDirForTest(temp_dir.GetPath());
20   EXPECT_FALSE(config.has_value());
21 }
22
23 TEST(ConfigReaderTest, SingleConfigJson) {
24   base::ScopedTempDir temp_dir;
25   ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
26   ASSERT_TRUE(base::WriteFile(temp_dir.GetPath().Append("config.json"),
27                               "{ \"name\": \"value\" }"));
28
29   auto config = LoadConfigFromDirForTest(temp_dir.GetPath());
30   ASSERT_TRUE(config.has_value());
31
32   EXPECT_EQ(config->size(), 1u);
33   const std::string* value = config->FindString("name");
34   ASSERT_TRUE(value);
35   EXPECT_EQ(*value, "value");
36 }
37
38 TEST(ConfigReaderTest, MultipleConfigJson) {
39   base::ScopedTempDir temp_dir;
40   ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
41   ASSERT_TRUE(base::WriteFile(temp_dir.GetPath().Append("foo.json"),
42                               "{ \"name1\": \"value?\" }"));
43   ASSERT_TRUE(base::WriteFile(temp_dir.GetPath().Append("bar.json"),
44                               "{ \"name2\": \"value!\" }"));
45   ASSERT_TRUE(base::WriteFile(temp_dir.GetPath().Append("wibble.json"),
46                               "{ \"name3\": \"value...\" }"));
47
48   auto config = LoadConfigFromDirForTest(temp_dir.GetPath());
49   ASSERT_TRUE(config.has_value());
50
51   EXPECT_EQ(config->size(), 3u);
52
53   std::string* value = config->FindString("name1");
54   ASSERT_TRUE(value);
55   EXPECT_EQ(*value, "value?");
56
57   value = config->FindString("name2");
58   ASSERT_TRUE(value);
59   EXPECT_EQ(*value, "value!");
60
61   value = config->FindString("name3");
62   ASSERT_TRUE(value);
63   EXPECT_EQ(*value, "value...");
64 }
65
66 TEST(ConfigReaderTest, OneOfTheseConfigsIsNotValidLikeTheOthers) {
67   base::ScopedTempDir temp_dir;
68   ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
69
70   // Provide some valid config JSONs.
71   ASSERT_TRUE(base::WriteFile(temp_dir.GetPath().Append("foo.json"),
72                               "{ \"name1\": \"value?\" }"));
73   ASSERT_TRUE(base::WriteFile(temp_dir.GetPath().Append("wibble.json"),
74                               "{ \"name2\": \"value...\" }"));
75
76   // Provide an invalid one, which should cause a CHECK failure.
77   ASSERT_TRUE(base::WriteFile(temp_dir.GetPath().Append("not_valid.json"),
78                               "{ \"name3\"= }"));
79
80   EXPECT_DEATH({ LoadConfigFromDirForTest(temp_dir.GetPath()); }, "");
81 }
82
83 TEST(ConfigReaderTest, MultipleClashingConfigJson) {
84   base::ScopedTempDir temp_dir;
85   ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
86   ASSERT_TRUE(base::WriteFile(temp_dir.GetPath().Append("foo.json"),
87                               "{ \"name\": \"value?\" }"));
88   ASSERT_TRUE(base::WriteFile(temp_dir.GetPath().Append("bar.json"),
89                               "{ \"name\": \"value!\" }"));
90   ASSERT_TRUE(base::WriteFile(temp_dir.GetPath().Append("wibble.json"),
91                               "{ \"name\": \"value...\" }"));
92
93   EXPECT_DEATH({ LoadConfigFromDirForTest(temp_dir.GetPath()); }, "");
94 }
95
96 }  // namespace fuchsia_component_support