|
@@ -1,4 +1,4 @@
|
|
|
-// Copyright (C) 2012 Internet Systems Consortium, Inc. ("ISC")
|
|
|
+// Copyright (C) 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
|
|
//
|
|
|
// Permission to use, copy, modify, and/or distribute this software for any
|
|
|
// purpose with or without fee is hereby granted, provided that the above
|
|
@@ -36,6 +36,57 @@ TEST(OptionSpaceTest, constructor) {
|
|
|
OptionSpace space2("abc", false);
|
|
|
EXPECT_EQ("abc", space2.getName());
|
|
|
EXPECT_FALSE(space2.isVendorSpace());
|
|
|
+
|
|
|
+ // Verify that constructor throws exception if invalid
|
|
|
+ // option space name is provided.
|
|
|
+ EXPECT_THROW(OptionSpace("invalid%space.name"), InvalidOptionSpace);
|
|
|
+}
|
|
|
+
|
|
|
+// The purpose of this test is to verify that the vendor-space flag
|
|
|
+// can be overriden.
|
|
|
+TEST(OptionSpaceTest, setVendorSpace) {
|
|
|
+ OptionSpace space("isc", true);
|
|
|
+ EXPECT_EQ("isc", space.getName());
|
|
|
+ EXPECT_TRUE(space.isVendorSpace());
|
|
|
+
|
|
|
+ // Override the vendor space flag.
|
|
|
+ space.setVendorSpace(false);
|
|
|
+ EXPECT_FALSE(space.isVendorSpace());
|
|
|
+}
|
|
|
+
|
|
|
+// The purpose of this test is to verify that the static function
|
|
|
+// to validate the option space name works correctly.
|
|
|
+TEST(OptionSpaceTest, validateName) {
|
|
|
+ // Positive test scenarios: letters, digits, dashes, underscores
|
|
|
+ // lower/upper case allowed.
|
|
|
+ EXPECT_TRUE(OptionSpace::validateName("abc"));
|
|
|
+ EXPECT_TRUE(OptionSpace::validateName("dash-allowed"));
|
|
|
+ EXPECT_TRUE(OptionSpace::validateName("two-dashes-allowed"));
|
|
|
+ EXPECT_TRUE(OptionSpace::validateName("underscore_allowed"));
|
|
|
+ EXPECT_TRUE(OptionSpace::validateName("underscore_three_times_allowed"));
|
|
|
+ EXPECT_TRUE(OptionSpace::validateName("digits0912"));
|
|
|
+ EXPECT_TRUE(OptionSpace::validateName("1234"));
|
|
|
+ EXPECT_TRUE(OptionSpace::validateName("UPPER_CASE_allowed"));
|
|
|
+
|
|
|
+ // Negative test scenarions: empty strings, dots, spaces are not
|
|
|
+ // allowed
|
|
|
+ EXPECT_FALSE(OptionSpace::validateName(""));
|
|
|
+ EXPECT_FALSE(OptionSpace::validateName(" "));
|
|
|
+ EXPECT_FALSE(OptionSpace::validateName(" isc "));
|
|
|
+ EXPECT_FALSE(OptionSpace::validateName("isc "));
|
|
|
+ EXPECT_FALSE(OptionSpace::validateName(" isc"));
|
|
|
+ EXPECT_FALSE(OptionSpace::validateName("isc with-space"));
|
|
|
+
|
|
|
+ // Test other special characters
|
|
|
+ const char specials[] = { '!', '@', '#', '$', '%', '^', '&', '*', '(', ')',
|
|
|
+ '+', '=', '[', ']', '{', '}', ';', ':', '"', '\'',
|
|
|
+ '\\', '|', '<','>', ',', '.', '?', '~', '`' };
|
|
|
+ for (int i = 0; i < sizeof(specials); ++i) {
|
|
|
+ std::ostringstream stream;
|
|
|
+ stream << "abc" << specials[i];
|
|
|
+ EXPECT_FALSE(OptionSpace::validateName(stream.str()))
|
|
|
+ << "Test failed for special character '" << specials[i] << "'.";
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}; // end of anonymous namespace
|