-
-
Notifications
You must be signed in to change notification settings - Fork 469
/
Copy pathxr_ini_test.cpp
94 lines (77 loc) · 1.89 KB
/
xr_ini_test.cpp
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
#include <doctest/doctest.h>
#include <Common/Platform.hpp>
#include <xrCore/xrCore.h>
#include <xrCore/xr_types.h>
#include <xrCore/xr_ini.h>
CInifile read_from_string(pcstr str, CInifile::allow_include_func_t allow_include = nullptr)
{
IReader reader = IReader(const_cast<pstr>(str), xr_strlen(str));
return CInifile(&reader, "test.ini", allow_include);
}
TEST_CASE("parse empty file")
{
CInifile ini = read_from_string("");
CHECK_EQ(ini.section_count(), 0);
}
TEST_CASE("parse empty section")
{
CInifile ini = read_from_string("[a]");
CHECK_EQ(ini.section_count(), 1);
CHECK_UNARY(ini.section_exist("a"));
}
TEST_CASE("parse simple section")
{
CInifile ini = read_from_string(
R"ini(
[a]
key = value
)ini");
CHECK_UNARY(ini.section_exist("a"));
CHECK_UNARY(ini.line_exist("a", "key"));
CHECK_EQ(ini.read<pcstr>("a", "key"), "value");
}
TEST_CASE("parse integer value")
{
CInifile ini = read_from_string(
R"ini(
[a]
key = 123
)ini");
CHECK_UNARY(ini.section_exist("a"));
CHECK_UNARY(ini.line_exist("a", "key"));
CHECK_EQ(ini.read<u32>("a", "key"), 123);
}
TEST_CASE("Parse float value")
{
CInifile ini = read_from_string(
R"ini(
[a]
key = 123.456
)ini");
CHECK_UNARY(ini.section_exist("a"));
CHECK_UNARY(ini.line_exist("a", "key"));
CHECK_EQ(ini.read<f32>("a", "key"), 123.456f);
}
TEST_CASE("Parse quoted value")
{
CInifile ini = read_from_string(
R"ini(
[a]
key = "value"
)ini");
CHECK_UNARY(ini.section_exist("a"));
CHECK_UNARY(ini.line_exist("a", "key"));
CHECK_EQ(ini.read<pcstr>("a", "key"), "\"value\"");
}
TEST_CASE("Parse multiline value")
{
CInifile ini = read_from_string(
R"ini(
[a]
key = "multiline
value"
)ini");
CHECK_UNARY(ini.section_exist("a"));
CHECK_UNARY(ini.line_exist("a", "key"));
CHECK_EQ(ini.read<pcstr>("a", "key"), "\"multiline\r\nvalue\"");
}