Merge "Added two test files"
[nemo.git] / nemo-impl / src / test / java / org / opendaylight / nemo / user / vnspacemanager / languagestyle / updateintentlang / UpdateTemplateInstanceLangTest.java
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateTemplateInstanceLangTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateTemplateInstanceLangTest.java
new file mode 100644 (file)
index 0000000..7477350
--- /dev/null
@@ -0,0 +1,94 @@
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang;\r
+\r
+import junit.framework.TestCase;\r
+import org.junit.Assert;\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateTemplateInstanceLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateTemplateInstance;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.instances.TemplateInstance;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.instances.TemplateInstanceBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.instances.TemplateInstanceKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameter;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameterBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameterKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.ParameterValuesBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.*;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+\r
+import java.lang.reflect.Field;\r
+import java.util.*;\r
+import static org.junit.Assert.*;\r
+import static org.mockito.Mockito.*;\r
+/**\r
+ * Created by zhangmeng on 2015/12/29.\r
+ */\r
+public class UpdateTemplateInstanceLangTest extends TestCase {\r
+    private DataBroker dataBroker;\r
+    private TenantManage tenantManage;\r
+    private UpdateTemplateInstanceLang updateTemplateInstanceLang;\r
+    @Before\r
+    public void setUp() throws Exception {\r
+        dataBroker = mock(DataBroker.class);\r
+        tenantManage = mock(TenantManage.class);\r
+\r
+        updateTemplateInstanceLang = new UpdateTemplateInstanceLang(dataBroker,tenantManage);\r
+    }\r
+\r
+    @Test\r
+    public void testTemplateInstanceLang() throws Exception {\r
+        Class<UpdateTemplateInstanceLang> class1 = UpdateTemplateInstanceLang.class;\r
+        Field field = class1.getDeclaredField("updateTemplateInstance");\r
+        field.setAccessible(true);\r
+\r
+        UserId userId = mock(UserId.class);\r
+        String nodeName = new String("nodename");\r
+        String nodeType = new String("nodetype");\r
+        LinkedHashMap<String, LinkedHashMap<String,String>> propertyList = new LinkedHashMap<String, LinkedHashMap<String, String>>();\r
+        LinkedHashMap<String, String> values =  new LinkedHashMap<String, String>();\r
+        Map map = mock(Map.class);\r
+        UpdateTemplateInstance updateTemplateInstance = mock(UpdateTemplateInstance.class);\r
+        String parameterName = new String("parameterName");\r
+\r
+        propertyList.put(parameterName, values);\r
+        values.put("string", NEMOConstants.string);\r
+        field.set(updateTemplateInstanceLang, updateTemplateInstance);\r
+\r
+        when(tenantManage.getTemplateInstance(userId))\r
+                .thenReturn(map)\r
+                .thenReturn(map)\r
+                .thenReturn(null);\r
+        when(tenantManage.getObjectId(userId, nodeName)).thenReturn("11111111-1111-1111-1111-111111111111");\r
+        when(map.containsKey(any(TemplateInstanceId.class)))\r
+                .thenReturn(true)\r
+                .thenReturn(false);\r
+        Assert.assertTrue(updateTemplateInstanceLang.templateInstanceLang(userId, nodeName, nodeType, propertyList).equals("The instance " + nodeName + " has exist."));\r
+        verify(tenantManage,times(2)).getTemplateInstance(userId);\r
+        Assert.assertTrue(propertyList.get(parameterName) == values);\r
+        when(updateTemplateInstance.checkTemplateInstance(any(UserId.class), any(TemplateInstance.class)))\r
+                .thenReturn(null)\r
+                .thenReturn("int")\r
+                .thenReturn("range");\r
+        doNothing().when(tenantManage).setUserTemplateInstance(any(UserId.class), any(TemplateInstanceId.class), any(TemplateInstance.class));\r
+        Assert.assertTrue(updateTemplateInstanceLang.templateInstanceLang(userId, nodeName, nodeType, propertyList) == null);\r
+        values.clear();\r
+        values.put("11", NEMOConstants.integer);\r
+        Assert.assertTrue(updateTemplateInstanceLang.templateInstanceLang(userId, nodeName, nodeType, propertyList).equals("int"));\r
+        values.clear();\r
+        values.put("1,1", NEMOConstants.range);\r
+        Assert.assertTrue(updateTemplateInstanceLang.templateInstanceLang(userId, nodeName, nodeType, propertyList).equals("range"));\r
+        verify(updateTemplateInstance,times(3)).checkTemplateInstance(any(UserId.class), any(TemplateInstance.class));\r
+    }\r
+}
\ No newline at end of file