aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/core/api/src/test/java/org/onosproject/net/config/ConfigTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/core/api/src/test/java/org/onosproject/net/config/ConfigTest.java')
-rw-r--r--framework/src/onos/core/api/src/test/java/org/onosproject/net/config/ConfigTest.java141
1 files changed, 141 insertions, 0 deletions
diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/config/ConfigTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/config/ConfigTest.java
new file mode 100644
index 00000000..34b0fe7b
--- /dev/null
+++ b/framework/src/onos/core/api/src/test/java/org/onosproject/net/config/ConfigTest.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright 2014-2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.net.config;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.onosproject.net.config.Config.FieldPresence.MANDATORY;
+import static org.onosproject.net.config.Config.FieldPresence.OPTIONAL;
+
+/**
+ * Test of the base network config class.
+ */
+public class ConfigTest {
+
+ private static final String SUBJECT = "subject";
+ private static final String KEY = "key";
+
+ private static final String TEXT = "text";
+ private static final String LONG = "long";
+ private static final String DOUBLE = "double";
+ private static final String MAC = "mac";
+ private static final String IP = "ip";
+
+ private final ObjectMapper mapper = new ObjectMapper();
+ private final ConfigApplyDelegate delegate = new TestDelegate();
+
+ private Config<String> cfg;
+ private JsonNode json;
+
+ @Before
+ public void setUp() {
+ json = new ObjectMapper().createObjectNode()
+ .put(TEXT, "foo").put(LONG, 5).put(DOUBLE, 0.5)
+ .put(MAC, "ab:cd:ef:ca:fe:ed").put(IP, "12.34.56.78");
+ cfg = new TestConfig();
+ cfg.init(SUBJECT, KEY, json, mapper, delegate);
+ }
+
+ @Test
+ public void hasOnlyFields() {
+ assertTrue("has unexpected fields", cfg.hasOnlyFields(TEXT, LONG, DOUBLE, MAC, IP));
+ assertFalse("did not detect unexpected fields", cfg.hasOnlyFields(TEXT, LONG, DOUBLE, MAC));
+ assertTrue("is not proper text", cfg.isString(TEXT, MANDATORY));
+ }
+
+ @Test
+ public void isString() {
+ assertTrue("is not proper text", cfg.isString(TEXT, MANDATORY));
+ assertTrue("is not proper text", cfg.isString(TEXT, MANDATORY, "^f.*"));
+ assertTrue("is not proper text", cfg.isString(TEXT, OPTIONAL, "^f.*"));
+ assertTrue("is not proper text", cfg.isString(TEXT, OPTIONAL));
+ assertTrue("is not proper text", cfg.isString("none", OPTIONAL));
+ assertFalse("did not detect missing field", cfg.isString("none", MANDATORY));
+ }
+
+ @Test
+ public void isNumber() {
+ assertTrue("is not proper number", cfg.isNumber(LONG, MANDATORY));
+ assertTrue("is not proper number", cfg.isNumber(LONG, MANDATORY, 0));
+ assertTrue("is not proper number", cfg.isNumber(LONG, MANDATORY, 0, 10));
+ assertTrue("is not proper number", cfg.isNumber(LONG, MANDATORY, 5, 6));
+ assertFalse("is not in range", cfg.isNumber(LONG, MANDATORY, 6, 10));
+ assertFalse("is not in range", cfg.isNumber(LONG, MANDATORY, 4, 5));
+ assertTrue("is not proper number", cfg.isNumber(LONG, OPTIONAL, 0, 10));
+ assertTrue("is not proper number", cfg.isNumber(LONG, OPTIONAL));
+ assertTrue("is not proper number", cfg.isNumber("none", OPTIONAL));
+ assertFalse("did not detect missing field", cfg.isNumber("none", MANDATORY));
+ }
+
+ @Test
+ public void isDecimal() {
+ assertTrue("is not proper decimal", cfg.isDecimal(DOUBLE, MANDATORY));
+ assertTrue("is not proper decimal", cfg.isDecimal(DOUBLE, MANDATORY, 0.0));
+ assertTrue("is not proper decimal", cfg.isDecimal(DOUBLE, MANDATORY, 0.0, 1.0));
+ assertTrue("is not proper decimal", cfg.isDecimal(DOUBLE, MANDATORY, 0.5, 0.6));
+ assertFalse("is not in range", cfg.isDecimal(DOUBLE, MANDATORY, 0.6, 1.0));
+ assertFalse("is not in range", cfg.isDecimal(DOUBLE, MANDATORY, 0.4, 0.5));
+ assertTrue("is not proper decimal", cfg.isDecimal(DOUBLE, OPTIONAL, 0.0, 1.0));
+ assertTrue("is not proper decimal", cfg.isDecimal(DOUBLE, OPTIONAL));
+ assertTrue("is not proper decimal", cfg.isDecimal("none", OPTIONAL));
+ assertFalse("did not detect missing field", cfg.isDecimal("none", MANDATORY));
+ }
+
+ @Test
+ public void isMacAddress() {
+ assertTrue("is not proper mac", cfg.isMacAddress(MAC, MANDATORY));
+ assertTrue("is not proper mac", cfg.isMacAddress(MAC, OPTIONAL));
+ assertTrue("is not proper mac", cfg.isMacAddress("none", OPTIONAL));
+ assertFalse("did not detect missing field", cfg.isMacAddress("none", MANDATORY));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void badMacAddress() {
+ assertTrue("is not proper mac", cfg.isMacAddress(TEXT, MANDATORY));
+ }
+
+
+ @Test
+ public void isIpAddress() {
+ assertTrue("is not proper ip", cfg.isIpAddress(IP, MANDATORY));
+ assertTrue("is not proper ip", cfg.isIpAddress(IP, OPTIONAL));
+ assertTrue("is not proper ip", cfg.isIpAddress("none", OPTIONAL));
+ assertFalse("did not detect missing field", cfg.isMacAddress("none", MANDATORY));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void badIpAddress() {
+ assertTrue("is not proper ip", cfg.isIpAddress(TEXT, MANDATORY));
+ }
+
+
+ // TODO: Add tests for other helper methods
+
+ private class TestConfig extends Config<String> {
+ }
+
+ private class TestDelegate implements ConfigApplyDelegate {
+ @Override
+ public void onApply(Config config) {
+ }
+ }
+} \ No newline at end of file