--- /dev/null
+/*\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