/*
- * Copyright (C) 1996-2016 The Squid Software Foundation and contributors
+ * Copyright (C) 1996-2020 The Squid Software Foundation and contributors
*
* Squid software is distributed under GPLv2+ license and includes
* contributions from numerous individuals and organizations.
testCharacterSet::CharacterSetConstruction()
{
{
- CharacterSet t(NULL,"");
+ CharacterSet t(nullptr,"");
CPPUNIT_ASSERT_EQUAL(std::string("anonymous"),std::string(t.name));
}
{
}
{
CharacterSet t("test","");
- for (int j = 0; j < 255; ++j)
+ for (int j = 0; j < 256; ++j)
CPPUNIT_ASSERT_EQUAL(false,t[j]);
}
{
CharacterSet t("test","0");
CPPUNIT_ASSERT_EQUAL(true,t['0']);
- for (int j = 0; j < 255; ++j)
- if (j != '0')
+ for (int j = 0; j < 256; ++j) {
+ if (j != '0') {
CPPUNIT_ASSERT_EQUAL(false,t[j]);
+ } else {
+ CPPUNIT_ASSERT_EQUAL(true,t[j]);
+ }
+ }
}
}
{
CharacterSet hex("hex","");
hex += CharacterSet::DIGIT;
- hex += CharacterSet(NULL,"aAbBcCdDeEfF");
- for (int j = 0; j < 255; ++j)
+ hex += CharacterSet(nullptr,"aAbBcCdDeEfF");
+ CPPUNIT_ASSERT_EQUAL(CharacterSet::HEXDIG, hex);
+ for (int j = 0; j < 256; ++j)
CPPUNIT_ASSERT_EQUAL(CharacterSet::HEXDIG[j],hex[j]);
}
{
- CharacterSet hex(NULL,"");
- hex = CharacterSet::DIGIT + CharacterSet(NULL,"aAbBcCdDeEfF");
- for (int j = 0; j < 255; ++j)
+ CharacterSet hex(nullptr,"");
+ hex = CharacterSet::DIGIT + CharacterSet(nullptr,"aAbBcCdDeEfF");
+ for (int j = 0; j < 256; ++j)
CPPUNIT_ASSERT_EQUAL(CharacterSet::HEXDIG[j],hex[j]);
}
}
+void
+testCharacterSet::CharacterSetEqualityOp()
+{
+ CPPUNIT_ASSERT_EQUAL(CharacterSet::ALPHA, CharacterSet::ALPHA);
+ CPPUNIT_ASSERT_EQUAL(CharacterSet::BIT, CharacterSet(nullptr,"01"));
+ CPPUNIT_ASSERT_EQUAL(CharacterSet(nullptr,"01"), CharacterSet(nullptr,"01"));
+ CPPUNIT_ASSERT_EQUAL(CharacterSet(nullptr,"01"), CharacterSet("","01"));
+ CPPUNIT_ASSERT_EQUAL(CharacterSet::BIT, CharacterSet("bit",'0','1'));
+ CPPUNIT_ASSERT_EQUAL(CharacterSet::BIT, CharacterSet("bit", {{'0','1'}}));
+ CPPUNIT_ASSERT_EQUAL(CharacterSet::BIT, CharacterSet("bit", {{'0','0'},{'1','1'}}));
+}
+
+void
+testCharacterSet::CharacterSetSubtract()
+{
+ CharacterSet sample(nullptr, "0123456789aAbBcCdDeEfFz");
+
+ sample -= CharacterSet(nullptr, "z"); //character in set
+ CPPUNIT_ASSERT_EQUAL(CharacterSet::HEXDIG, sample);
+
+ sample -= CharacterSet(nullptr, "z"); // character not in set
+ CPPUNIT_ASSERT_EQUAL(CharacterSet::HEXDIG, sample);
+
+ sample += CharacterSet(nullptr, "z");
+ // one in set, one not; test operator-
+ CPPUNIT_ASSERT_EQUAL(CharacterSet::HEXDIG, sample - CharacterSet(nullptr, "qz"));
+}
+