Browse Source

[3560] Client classes may now be created from the csv string.

Marcin Siodelski 10 years ago
parent
commit
e2850e9081
3 changed files with 34 additions and 4 deletions
  1. 1 1
      src/lib/dhcp/Makefile.am
  2. 11 0
      src/lib/dhcp/classify.h
  3. 22 3
      src/lib/dhcp/tests/classify_unittest.cc

+ 1 - 1
src/lib/dhcp/Makefile.am

@@ -14,7 +14,7 @@ CLEANFILES = *.gcno *.gcda
 
 lib_LTLIBRARIES = libkea-dhcp++.la
 libkea_dhcp___la_SOURCES  =
-libkea_dhcp___la_SOURCES += classify.h
+libkea_dhcp___la_SOURCES += classify.cc classify.h
 libkea_dhcp___la_SOURCES += dhcp6.h dhcp4.h
 libkea_dhcp___la_SOURCES += duid.cc duid.h
 libkea_dhcp___la_SOURCES += hwaddr.cc hwaddr.h

+ 11 - 0
src/lib/dhcp/classify.h

@@ -53,6 +53,17 @@ namespace dhcp {
     /// documentation. See  http://www.cplusplus.com/reference/set/set/.
     class ClientClasses : public std::set<ClientClass> {
     public:
+
+        /// @brief Default constructor.
+        ClientClasses() : std::set<ClientClass>() {
+        }
+
+        /// @brief Constructor from comma separated values.
+        ///
+        /// @param class_names A string containing a client classes separated
+        /// with commas. The class names are trimmed before insertion to the set.
+        ClientClasses(const std::string& class_names);
+
         /// @brief returns if class x belongs to the defined classes
         ///
         /// @param x client class to be checked

+ 22 - 3
src/lib/dhcp/tests/classify_unittest.cc

@@ -1,4 +1,4 @@
-// Copyright (C) 2011-2013  Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2011-2014 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,8 +36,7 @@ TEST(ClassifyTest, ClientClasses) {
     EXPECT_FALSE(classes.contains(""));
     EXPECT_FALSE(classes.contains("alpha"));
     EXPECT_FALSE(classes.contains("beta"));
-    EXPECT_FALSE(classes.contains("gamma"));
-
+    EXPECT_FALSE(classes.contains("gamma")); 
     classes.insert("beta");
     EXPECT_FALSE(classes.contains(""));
     EXPECT_FALSE(classes.contains("alpha"));
@@ -50,3 +49,23 @@ TEST(ClassifyTest, ClientClasses) {
     EXPECT_TRUE (classes.contains("beta"));
     EXPECT_TRUE (classes.contains("gamma"));
 }
+
+// Check if ClientClasses object can be created from the string of comma
+// separated values.
+TEST(ClassifyTest, ClientClassesFromString) {
+    {
+        ClientClasses classes("alpha, beta, gamma");
+
+        EXPECT_FALSE(classes.contains(""));
+        EXPECT_TRUE(classes.contains("alpha"));
+        EXPECT_TRUE(classes.contains("beta"));
+        EXPECT_TRUE(classes.contains("gamma"));
+    }
+
+    {
+        ClientClasses classes("alpha, , beta ,");
+        EXPECT_TRUE(classes.contains("alpha"));
+        EXPECT_FALSE(classes.contains(""));
+        EXPECT_TRUE(classes.contains("beta"));
+    }
+}