Implement CLI configuration generation.
[nemo.git] / nemo-impl / src / test / java / org / opendaylight / nemo / user / vnspacemanager / syntaxcheck / NodeDefinitionCheckTest.java
index ede790b9e70cf83b2d78355b9289bc862aaeaedb..b20108138d3b857f599f07d35d10ea3a33a0bb41 100644 (file)
@@ -7,11 +7,18 @@
  */\r
 package org.opendaylight.nemo.user.vnspacemanager.syntaxcheck;\r
 \r
+import org.junit.runner.RunWith;\r
+import static org.powermock.api.mockito.PowerMockito.verifyPrivate;\r
+import static org.powermock.api.mockito.PowerMockito.doNothing;\r
+import static org.powermock.api.mockito.PowerMockito.spy;\r
+import org.powermock.core.classloader.annotations.PrepareForTest;\r
+import org.powermock.modules.junit4.PowerMockRunner;\r
+\r
 import junit.framework.TestCase;\r
 import org.junit.Assert;\r
 import org.junit.Before;\r
 import org.junit.Test;\r
-import static org.mockito.Mockito.*;\r
+\r
 import static org.junit.Assert.*;\r
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeType;\r
@@ -22,6 +29,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.obj
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition;\r
 \r
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;\r
@@ -39,28 +48,75 @@ import com.google.common.util.concurrent.ListenableFuture;
 \r
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
-\r
 import java.util.List;\r
 \r
-/**\r
- * Created by Thomas Liu on 2015/11/11.\r
- */\r
-public class NodeDefinitionCheckTest extends TestCase {\r
+import java.util.Collection;\r
+import java.util.Iterator;\r
+import java.util.ArrayList;\r
+import java.util.ListIterator;\r
 \r
-    private Node node;\r
-    private NodeDefinitionCheck nodeDefinitionCheckTest;\r
-    @Before\r
-    public void setUp() throws Exception {\r
-        node = mock(Node.class);\r
-        nodeDefinitionCheckTest = mock(NodeDefinitionCheck.class);\r
+import java.lang.reflect.Method; \r
+import static org.mockito.Mockito.*;\r
 \r
+@RunWith(PowerMockRunner.class) \r
+@PrepareForTest(NodeDefinitionCheck.class) \r
+public class NodeDefinitionCheckTest{\r
+       private NodeDefinitionCheck nodeDefinitionCheck;\r
+       private DataBroker dataBroker;\r
+    private List<NodeDefinition> nodeDefinitionList;\r
+       private Node node;\r
+       private NodeDefinition nodeDefinition;\r
+       private List<Property> nodeProperties;\r
+       private List<PropertyDefinition> nodePropertyDefinitions;\r
+       private Property property;\r
+       private PropertyDefinition propertyDefinition;\r
+    //private static final Logger LOG = LoggerFactory.getLogger(NodeDefinitionCheck.class);\r
+        @org.junit.Before\r
+    public void setUp() throws Exception {\r
+               nodeDefinition = mock(NodeDefinition.class);\r
+               nodeDefinitionList = new ArrayList<NodeDefinition>(3);\r
+        // LOG = mock(Logger.class);\r
+           node = mock(Node.class);\r
+        dataBroker = mock(DataBroker.class);\r
+        nodeDefinitionCheck = new NodeDefinitionCheck(dataBroker);\r
+               property = mock(Property.class);\r
+               propertyDefinition = mock(PropertyDefinition.class);\r
+               nodeProperties = new ArrayList<Property>(3);\r
+               nodePropertyDefinitions = new ArrayList<PropertyDefinition>(3);\r
     }\r
-\r
-    @Test\r
-    public void testCheckNodeDefinition() throws Exception {\r
-        nodeDefinitionCheckTest.CheckNodeDefinition(node);\r
-        Assert.assertNotNull(nodeDefinitionCheckTest);\r
-        verify(nodeDefinitionCheckTest).CheckNodeDefinition(node);\r
-\r
+        @org.junit.Test\r
+    public void testcheckConnectionDefinition() throws Exception {\r
+        CheckedFuture nodedefinitionFuture = mock(CheckedFuture.class);\r
+        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);\r
+        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);\r
+        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(nodedefinitionFuture);\r
+        //branch nodeDefinitionList null\r
+               Assert.assertEquals(nodeDefinitionCheck.CheckNodeDefinition(node),"This type of Node has not been defined.");\r
+               \r
+               //use reflact test private checkProperty\r
+               Method testcheckProperty = nodeDefinitionCheck.getClass().getDeclaredMethod("checkProperty",List.class,List.class);  \r
+               testcheckProperty.setAccessible(true);\r
+               //branch1 nodeProperties null, nodePropertyDefinition null\r
+               Assert.assertNull(testcheckProperty.invoke(nodeDefinitionCheck,nodeProperties,nodePropertyDefinitions));\r
+               //branch2 \r
+               nodeProperties.add(property);\r
+               nodePropertyDefinitions.add(propertyDefinition);\r
+               PropertyName propertyName1 = mock(PropertyName.class);\r
+               PropertyName propertyName2 = mock(PropertyName.class);\r
+               when(property.getPropertyName()).thenReturn(propertyName1);\r
+               when(propertyDefinition.getPropertyName()).thenReturn(propertyName2);\r
+               Assert.assertEquals(testcheckProperty.invoke(nodeDefinitionCheck,nodeProperties,nodePropertyDefinitions),"The property"+property.getPropertyName().toString()+"has not been defined.");\r
+               //branch3\r
+               when(property.getPropertyName()).thenReturn(propertyName1);\r
+               PropertyName propertyName3 = propertyName1;\r
+               when(propertyDefinition.getPropertyName()).thenReturn(propertyName3);\r
+               PropertyValues propertyValues = mock(PropertyValues.class);\r
+               when(property.getPropertyValues()).thenReturn(propertyValues);\r
+               Assert.assertNotNull(property.getPropertyValues());\r
+               Assert.assertNull(propertyDefinition.getPropertyValueType());\r
+               //dataBroker test\r
+        verify(dataBroker).newReadOnlyTransaction();\r
+        verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));\r
+               verifyPrivate(nodeDefinitionCheck).invoke("fetchNodeDefinitions");\r
     }\r
 }
\ No newline at end of file