File: config_test.cpp

package info (click to toggle)
swayimg 4.6-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,764 kB
  • sloc: ansic: 13,338; cpp: 2,470; makefile: 9
file content (173 lines) | stat: -rw-r--r-- 6,146 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
// SPDX-License-Identifier: MIT
// Copyright (C) 2024 Artem Senichev <artemsen@gmail.com>

#include "config_test.h"

TEST(ConfigLoader, Load)
{
    testing::internal::CaptureStderr();

    struct config* config = config_create();
    ASSERT_TRUE(config);
    ASSERT_TRUE(config_load(config, TEST_DATA_DIR "/config"));

    const struct config* general = config_section(config, CFG_GENERAL);
    ASSERT_NE(general, nullptr);
    EXPECT_STREQ(config_get(general, CFG_GNRL_MODE), "s p a c e s");
    EXPECT_STREQ(config_get(general, CFG_GNRL_APP_ID), "my_ap_id");

    config_free(config);

    EXPECT_FALSE(testing::internal::GetCapturedStderr().empty());
}

TEST_F(ConfigTest, Defaults)
{
    const struct config* general = config_section(config, CFG_GENERAL);
    EXPECT_STREQ(config_get_default(CFG_GENERAL, CFG_GNRL_APP_ID), "swayimg");
    EXPECT_STREQ(config_get(general, CFG_GNRL_APP_ID), "swayimg");
}

TEST_F(ConfigTest, Set)
{
    const struct config* general = config_section(config, CFG_GENERAL);

    EXPECT_TRUE(config_set(config, CFG_GENERAL, CFG_GNRL_APP_ID, "test123"));
    EXPECT_STREQ(config_get(general, CFG_GNRL_APP_ID), "test123");

    testing::internal::CaptureStderr();

    EXPECT_FALSE(config_set(config, CFG_GENERAL, CFG_GNRL_APP_ID, ""));
    EXPECT_FALSE(config_set(config, CFG_GENERAL, "unknown", "test123"));
    EXPECT_FALSE(config_set(config, "unknown", "unknown", "test123"));

    EXPECT_FALSE(testing::internal::GetCapturedStderr().empty());
}

TEST_F(ConfigTest, SetArg)
{
    const struct config* general = config_section(config, CFG_GENERAL);

    EXPECT_TRUE(
        config_set_arg(config, CFG_GENERAL "." CFG_GNRL_APP_ID "=test123"));
    EXPECT_STREQ(config_get(general, CFG_GNRL_APP_ID), "test123");

    EXPECT_TRUE(config_set_arg(
        config, "\t\n" CFG_GENERAL "." CFG_GNRL_APP_ID "  = \ttest321"));
    EXPECT_STREQ(config_get(general, CFG_GNRL_APP_ID), "test321");

    testing::internal::CaptureStderr();

    EXPECT_FALSE(config_set_arg(config, ""));
    EXPECT_FALSE(config_set_arg(config, "abc=1"));
    EXPECT_FALSE(config_set_arg(config, "abc.def"));
    EXPECT_FALSE(config_set_arg(config, "abc.def="));

    EXPECT_FALSE(testing::internal::GetCapturedStderr().empty());
}

TEST_F(ConfigTest, Add)
{
    const struct config* section = config_section(config, CFG_KEYS_VIEWER);

    testing::internal::CaptureStderr();
    EXPECT_STREQ(config_get(section, "F12"), "");
    EXPECT_FALSE(testing::internal::GetCapturedStderr().empty());

    EXPECT_TRUE(config_set(config, CFG_KEYS_VIEWER, "F12", "quit"));
    EXPECT_STREQ(config_get(section, "F12"), "quit");
}

TEST_F(ConfigTest, Replace)
{
    const struct config* section = config_section(config, CFG_KEYS_VIEWER);
    EXPECT_STREQ(config_get(section, "F1"), "help");
    EXPECT_TRUE(config_set(config, CFG_KEYS_VIEWER, "F1", "quit"));
    EXPECT_STREQ(config_get(section, "F1"), "quit");
}

TEST_F(ConfigTest, GetDefault)
{
    EXPECT_TRUE(config_set(config, CFG_GENERAL, CFG_GNRL_APP_ID, "test123"));
    EXPECT_STREQ(config_get_default(CFG_GENERAL, CFG_GNRL_APP_ID), "swayimg");

    testing::internal::CaptureStderr();

    EXPECT_STREQ(config_get_default(CFG_GENERAL, "unknown"), "");
    EXPECT_STREQ(config_get_default("unknown", "unknown"), "");

    EXPECT_FALSE(testing::internal::GetCapturedStderr().empty());
}

TEST_F(ConfigTest, Get)
{
    const struct config* section = config_section(config, CFG_GENERAL);
    EXPECT_STREQ(config_get(section, CFG_GNRL_APP_ID), "swayimg");
    testing::internal::CaptureStderr();
    EXPECT_STREQ(config_get(section, "unknown"), "");
    EXPECT_FALSE(testing::internal::GetCapturedStderr().empty());
}

TEST_F(ConfigTest, GetOneOf)
{
    const struct config* section = config_section(config, CFG_LIST);
    const char* possible[] = { "one", "two", "three" };

    EXPECT_TRUE(config_set(config, CFG_LIST, CFG_LIST_ORDER, "two"));
    EXPECT_EQ(config_get_oneof(section, CFG_LIST_ORDER, possible, 3), 1);

    testing::internal::CaptureStderr();
    EXPECT_TRUE(config_set(config, CFG_LIST, CFG_LIST_ORDER, "four"));
    EXPECT_EQ(config_get_oneof(section, CFG_LIST_ORDER, possible, 3), 0);
    EXPECT_FALSE(testing::internal::GetCapturedStderr().empty());
}

TEST_F(ConfigTest, GetBool)
{
    const struct config* section = config_section(config, CFG_GALLERY);

    EXPECT_TRUE(config_set(config, CFG_GALLERY, CFG_GLRY_FILL, CFG_YES));
    EXPECT_TRUE(config_get_bool(section, CFG_GLRY_FILL));
    EXPECT_TRUE(config_set(config, CFG_GALLERY, CFG_GLRY_FILL, CFG_NO));
    EXPECT_FALSE(config_get_bool(section, CFG_GLRY_FILL));
}

TEST_F(ConfigTest, GetNum)
{
    const struct config* section = config_section(config, CFG_FONT);

    EXPECT_TRUE(config_set(config, CFG_FONT, CFG_FONT_SIZE, "123"));
    EXPECT_EQ(config_get_num(section, CFG_FONT_SIZE, 0, 1024), 123);

    testing::internal::CaptureStderr();
    EXPECT_EQ(config_get_num(section, CFG_FONT_SIZE, 0, -1), 14);
    EXPECT_EQ(config_get_num(section, CFG_FONT_SIZE, 0, 1), 14);
    EXPECT_EQ(config_get_num(section, CFG_FONT_SIZE, -1, 0), 14);
    EXPECT_FALSE(testing::internal::GetCapturedStderr().empty());
}

TEST_F(ConfigTest, GetColor)
{
    const struct config* section = config_section(config, CFG_VIEWER);

    config_set(config, CFG_VIEWER, CFG_VIEW_WINDOW, "#010203");
    EXPECT_EQ(config_get_color(section, CFG_VIEW_WINDOW),
              static_cast<argb_t>(0xff010203));

    config_set(config, CFG_VIEWER, CFG_VIEW_WINDOW, "#010203aa");
    EXPECT_EQ(config_get_color(section, CFG_VIEW_WINDOW),
              static_cast<argb_t>(0xaa010203));

    config_set(config, CFG_VIEWER, CFG_VIEW_WINDOW, "010203aa");
    EXPECT_EQ(config_get_color(section, CFG_VIEW_WINDOW),
              static_cast<argb_t>(0xaa010203));

    config_set(config, CFG_VIEWER, CFG_VIEW_WINDOW, "# 010203aa");
    EXPECT_EQ(config_get_color(section, CFG_VIEW_WINDOW),
              static_cast<argb_t>(0xaa010203));

    testing::internal::CaptureStderr();
    config_set(config, CFG_VIEWER, CFG_VIEW_WINDOW, "invalid");
    config_get_color(section, CFG_VIEW_WINDOW);
    EXPECT_FALSE(testing::internal::GetCapturedStderr().empty());
}