]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[3560] Client classes may now be created from the csv string.
authorMarcin Siodelski <marcin@isc.org>
Tue, 14 Oct 2014 08:47:10 +0000 (10:47 +0200)
committerMarcin Siodelski <marcin@isc.org>
Tue, 14 Oct 2014 08:47:10 +0000 (10:47 +0200)
src/lib/dhcp/Makefile.am
src/lib/dhcp/classify.h
src/lib/dhcp/tests/classify_unittest.cc

index ce5090f09eefbcd7c4bfb0ae9373c140344f2002..e0549068183cda9bd8f939cd39bb937d307c1511 100644 (file)
@@ -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
index 47db9421a50bb11725a1364d8a9b7ce98bc0a470..df00cc5bfbe645f863fab056bc3663f2aa0a0ae2 100644 (file)
@@ -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
index cf978ce1a33dc0e1529770b307e88849617656ec..21e485de142011016d89565b859cb42cea30a11c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2011-201 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"));
+    }
+}