]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/tests/testCharacterSet.cc
3e9d6e8363eb5f9c78d468f1be23617faaa83b05
2 * Copyright (C) 1996-2017 The Squid Software Foundation and contributors
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
10 #include "base/CharacterSet.h"
11 #include "testCharacterSet.h"
12 #include "unitTestMain.h"
16 CPPUNIT_TEST_SUITE_REGISTRATION( testCharacterSet
);
19 testCharacterSet::CharacterSetConstruction()
22 CharacterSet
t(nullptr,"");
23 CPPUNIT_ASSERT_EQUAL(std::string("anonymous"),std::string(t
.name
));
26 CharacterSet
t("test","");
27 CPPUNIT_ASSERT_EQUAL(std::string("test"),std::string(t
.name
));
30 CharacterSet
t("test","");
31 for (int j
= 0; j
< 256; ++j
)
32 CPPUNIT_ASSERT_EQUAL(false,t
[j
]);
35 CharacterSet
t("test","0");
36 CPPUNIT_ASSERT_EQUAL(true,t
['0']);
37 for (int j
= 0; j
< 256; ++j
) {
39 CPPUNIT_ASSERT_EQUAL(false,t
[j
]);
41 CPPUNIT_ASSERT_EQUAL(true,t
[j
]);
48 testCharacterSet::CharacterSetAdd()
50 CharacterSet
t("test","0");
52 CPPUNIT_ASSERT_EQUAL(true,t
['\0']);
53 CPPUNIT_ASSERT_EQUAL(true,t
['0']);
57 testCharacterSet::CharacterSetAddRange()
59 CharacterSet
t("test","");
61 CPPUNIT_ASSERT_EQUAL(true,t
['0']);
62 CPPUNIT_ASSERT_EQUAL(true,t
['5']);
63 CPPUNIT_ASSERT_EQUAL(true,t
['9']);
64 CPPUNIT_ASSERT_EQUAL(false,t
['a']);
68 testCharacterSet::CharacterSetConstants()
70 CPPUNIT_ASSERT_EQUAL(true,CharacterSet::ALPHA
['a']);
71 CPPUNIT_ASSERT_EQUAL(true,CharacterSet::ALPHA
['z']);
72 CPPUNIT_ASSERT_EQUAL(true,CharacterSet::ALPHA
['A']);
73 CPPUNIT_ASSERT_EQUAL(true,CharacterSet::ALPHA
['Z']);
74 CPPUNIT_ASSERT_EQUAL(false,CharacterSet::ALPHA
['5']);
78 testCharacterSet::CharacterSetUnion()
81 CharacterSet
hex("hex","");
82 hex
+= CharacterSet::DIGIT
;
83 hex
+= CharacterSet(nullptr,"aAbBcCdDeEfF");
84 CPPUNIT_ASSERT_EQUAL(CharacterSet::HEXDIG
, hex
);
85 for (int j
= 0; j
< 256; ++j
)
86 CPPUNIT_ASSERT_EQUAL(CharacterSet::HEXDIG
[j
],hex
[j
]);
89 CharacterSet
hex(nullptr,"");
90 hex
= CharacterSet::DIGIT
+ CharacterSet(nullptr,"aAbBcCdDeEfF");
91 for (int j
= 0; j
< 256; ++j
)
92 CPPUNIT_ASSERT_EQUAL(CharacterSet::HEXDIG
[j
],hex
[j
]);
97 testCharacterSet::CharacterSetEqualityOp()
99 CPPUNIT_ASSERT_EQUAL(CharacterSet::ALPHA
, CharacterSet::ALPHA
);
100 CPPUNIT_ASSERT_EQUAL(CharacterSet::BIT
, CharacterSet(nullptr,"01"));
101 CPPUNIT_ASSERT_EQUAL(CharacterSet(nullptr,"01"), CharacterSet(nullptr,"01"));
102 CPPUNIT_ASSERT_EQUAL(CharacterSet(nullptr,"01"), CharacterSet("","01"));
103 CPPUNIT_ASSERT_EQUAL(CharacterSet::BIT
, CharacterSet("bit",'0','1'));
104 CPPUNIT_ASSERT_EQUAL(CharacterSet::BIT
, CharacterSet("bit", {{'0','1'}}));
105 CPPUNIT_ASSERT_EQUAL(CharacterSet::BIT
, CharacterSet("bit", {{'0','0'},{'1','1'}}));
109 testCharacterSet::CharacterSetSubtract()
111 CharacterSet
sample(nullptr, "0123456789aAbBcCdDeEfFz");
113 sample
-= CharacterSet(nullptr, "z"); //character in set
114 CPPUNIT_ASSERT_EQUAL(CharacterSet::HEXDIG
, sample
);
116 sample
-= CharacterSet(nullptr, "z"); // character not in set
117 CPPUNIT_ASSERT_EQUAL(CharacterSet::HEXDIG
, sample
);
119 sample
+= CharacterSet(nullptr, "z");
120 // one in set, one not; test operator-
121 CPPUNIT_ASSERT_EQUAL(CharacterSet::HEXDIG
, sample
- CharacterSet(nullptr, "qz"));