Serenity Operating System
1#include <AK/StringUtils.h>
2#include <AK/TestSuite.h>
3
4TEST_CASE(matches_null)
5{
6 EXPECT(AK::StringUtils::matches(StringView(), StringView()));
7
8 EXPECT(!AK::StringUtils::matches(StringView(), ""));
9 EXPECT(!AK::StringUtils::matches(StringView(), "*"));
10 EXPECT(!AK::StringUtils::matches(StringView(), "?"));
11 EXPECT(!AK::StringUtils::matches(StringView(), "a"));
12
13 EXPECT(!AK::StringUtils::matches("", StringView()));
14 EXPECT(!AK::StringUtils::matches("a", StringView()));
15}
16
17TEST_CASE(matches_empty)
18{
19 EXPECT(AK::StringUtils::matches("", ""));
20
21 EXPECT(AK::StringUtils::matches("", "*"));
22 EXPECT(!AK::StringUtils::matches("", "?"));
23 EXPECT(!AK::StringUtils::matches("", "a"));
24
25 EXPECT(!AK::StringUtils::matches("a", ""));
26}
27
28TEST_CASE(matches_case_sensitive)
29{
30 EXPECT(AK::StringUtils::matches("a", "a", CaseSensitivity::CaseSensitive));
31 EXPECT(!AK::StringUtils::matches("a", "A", CaseSensitivity::CaseSensitive));
32 EXPECT(!AK::StringUtils::matches("A", "a", CaseSensitivity::CaseSensitive));
33}
34
35TEST_CASE(matches_case_insensitive)
36{
37 EXPECT(!AK::StringUtils::matches("aa", "a"));
38 EXPECT(AK::StringUtils::matches("aa", "*"));
39 EXPECT(!AK::StringUtils::matches("cb", "?a"));
40 EXPECT(AK::StringUtils::matches("adceb", "a*b"));
41 EXPECT(!AK::StringUtils::matches("acdcb", "a*c?b"));
42}
43
44TEST_CASE(convert_to_int)
45{
46 bool ok = false;
47 AK::StringUtils::convert_to_int(StringView(), ok);
48 EXPECT(!ok);
49
50 AK::StringUtils::convert_to_int("", ok);
51 EXPECT(!ok);
52
53 AK::StringUtils::convert_to_int("a", ok);
54 EXPECT(!ok);
55
56 AK::StringUtils::convert_to_int("+", ok);
57 EXPECT(!ok);
58
59 AK::StringUtils::convert_to_int("-", ok);
60 EXPECT(!ok);
61
62 int actual = AK::StringUtils::convert_to_int("0", ok);
63 EXPECT(ok && actual == 0);
64
65 actual = AK::StringUtils::convert_to_int("1", ok);
66 EXPECT(ok && actual == 1);
67
68 actual = AK::StringUtils::convert_to_int("+1", ok);
69 EXPECT(ok && actual == 1);
70
71 actual = AK::StringUtils::convert_to_int("-1", ok);
72 EXPECT(ok && actual == -1);
73
74 actual = AK::StringUtils::convert_to_int("01", ok);
75 EXPECT(ok && actual == 1);
76
77 actual = AK::StringUtils::convert_to_int("12345", ok);
78 EXPECT(ok && actual == 12345);
79
80 actual = AK::StringUtils::convert_to_int("-12345", ok);
81 EXPECT(ok && actual == -12345);
82}
83
84TEST_CASE(convert_to_uint)
85{
86 bool ok = false;
87 AK::StringUtils::convert_to_uint(StringView(), ok);
88 EXPECT(!ok);
89
90 AK::StringUtils::convert_to_uint("", ok);
91 EXPECT(!ok);
92
93 AK::StringUtils::convert_to_uint("a", ok);
94 EXPECT(!ok);
95
96 AK::StringUtils::convert_to_uint("+", ok);
97 EXPECT(!ok);
98
99 AK::StringUtils::convert_to_uint("-", ok);
100 EXPECT(!ok);
101
102 AK::StringUtils::convert_to_uint("+1", ok);
103 EXPECT(!ok);
104
105 AK::StringUtils::convert_to_uint("-1", ok);
106 EXPECT(!ok);
107
108 uint actual = AK::StringUtils::convert_to_uint("0", ok);
109 EXPECT(ok && actual == 0u);
110
111 actual = AK::StringUtils::convert_to_uint("1", ok);
112 EXPECT(ok && actual == 1u);
113
114 actual = AK::StringUtils::convert_to_uint("01", ok);
115 EXPECT(ok && actual == 1u);
116
117 actual = AK::StringUtils::convert_to_uint("12345", ok);
118 EXPECT(ok && actual == 12345u);
119}
120
121TEST_MAIN(StringUtils)