blob: b4504772db0fa23c40fa3e6cbabf01e72b7e729f [file] [log] [blame]
Kun Yi4dc76482019-03-05 16:06:19 -08001#include "parse_config.hpp"
2
3#include <gmock/gmock.h>
4#include <gtest/gtest.h>
5
6using json = nlohmann::json;
7using namespace conf;
8
9TEST(ParseConfigTest, ExceptionWhenMissingRequiredFields)
10{
11 auto j = R"(
12 {
13 "blobBaseId": "/test/"
14 }
15 )"_json;
16
17 BinaryBlobConfig config;
18
19 EXPECT_THROW(parseFromConfigFile(j, config), std::exception);
20}
21
22TEST(ParseConfigTest, TestSimpleConfig)
23{
24 auto j = R"(
25 {
26 "blobBaseId": "/test/",
27 "sysFilePath": "/sys/fake/path",
28 "offsetBytes": 32,
29 "maxSizeBytes": 2
30 }
31 )"_json;
32
33 BinaryBlobConfig config;
34
35 EXPECT_NO_THROW(parseFromConfigFile(j, config));
36 EXPECT_EQ(config.blobBaseId, "/test/");
37 EXPECT_EQ(config.sysFilePath, "/sys/fake/path");
38 EXPECT_EQ(config.offsetBytes, 32);
39 EXPECT_EQ(config.maxSizeBytes, 2);
40}
41
42TEST(ParseConfigTest, TestConfigArray)
43{
44 auto j = R"(
45 [{
46 "blobBaseId": "/test/",
47 "sysFilePath": "/sys/fake/path",
48 "offsetBytes": 32,
49 "maxSizeBytes": 32
50 },
51 {
52 "blobBaseId": "/test/",
53 "sysFilePath": "/another/path"
54 }]
55 )"_json;
56
57 for (auto& element : j)
58 {
59 BinaryBlobConfig config;
60
61 EXPECT_NO_THROW(parseFromConfigFile(element, config));
62 EXPECT_EQ(config.blobBaseId, "/test/");
63 EXPECT_TRUE(config.offsetBytes == 32 || config.offsetBytes == 0);
64 EXPECT_TRUE(config.maxSizeBytes == 32 || config.maxSizeBytes == 0);
65 }
66}