-package org.opendaylight.yangtools.sal.java.api.generator.test;\r
-\r
-import static org.junit.Assert.assertEquals;\r
-import static org.junit.Assert.assertNotNull;\r
-import static org.junit.Assert.assertTrue;\r
-\r
-import java.io.File;\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-import java.util.Set;\r
-\r
-import org.junit.BeforeClass;\r
-import org.junit.Ignore;\r
-import org.junit.Test;\r
-import org.opendaylight.yangtools.binding.generator.util.Types;\r
-import org.opendaylight.yangtools.binding.generator.util.generated.type.builder.GeneratedTOBuilderImpl;\r
-import org.opendaylight.yangtools.sal.binding.generator.api.BindingGenerator;\r
-import org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl;\r
-import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty;\r
-import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject;\r
-import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType;\r
-import org.opendaylight.yangtools.sal.binding.model.api.Type;\r
-import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedPropertyBuilder;\r
-import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedTOBuilder;\r
-import org.opendaylight.yangtools.sal.java.api.generator.TOGenerator;\r
-import org.opendaylight.yangtools.yang.model.api.Module;\r
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;\r
-import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;\r
-import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;\r
-\r
-public class ClassCodeGeneratorTest {\r
-\r
- private final static List<File> testModels = new ArrayList<File>();\r
-\r
- @BeforeClass\r
- public static void loadTestResources() {\r
- final File listModelFile = new File(ClassCodeGeneratorTest.class\r
- .getResource("/list-composite-key.yang").getPath());\r
- testModels.add(listModelFile);\r
- }\r
-\r
- @Test\r
- public void compositeKeyClassTest() {\r
- final YangModelParser parser = new YangParserImpl();\r
- final Set<Module> modules = parser.parseYangModels(testModels);\r
- final SchemaContext context = parser.resolveSchemaContext(modules);\r
-\r
- assertNotNull(context);\r
- final BindingGenerator bindingGen = new BindingGeneratorImpl();\r
- final List<Type> genTypes = bindingGen.generateTypes(context);\r
-\r
- assertTrue(genTypes != null);\r
- assertEquals(7, genTypes.size());\r
-\r
- int genTypesCount = 0;\r
- int genTOsCount = 0;\r
- for (final Type type : genTypes) {\r
- if (type instanceof GeneratedType\r
- && !(type instanceof GeneratedTransferObject)) {\r
- genTypesCount++;\r
- } else if (type instanceof GeneratedTransferObject) {\r
- final GeneratedTransferObject genTO = (GeneratedTransferObject) type;\r
-\r
- if (genTO.getName().equals("CompositeKeyListKey")) {\r
- final List<GeneratedProperty> properties = genTO\r
- .getProperties();\r
- int propertyCount = 0;\r
- for (final GeneratedProperty prop : properties) {\r
- if (prop.getName().equals("Key1")) {\r
- propertyCount++;\r
- } else if (prop.getName().equals("Key2")) {\r
- propertyCount++;\r
- }\r
- }\r
-\r
- final TOGenerator clsGen = new TOGenerator();\r
- final String outputStr = clsGen.generate(genTO);\r
-\r
- assertNotNull(outputStr);\r
- assertTrue(outputStr.contains("public CompositeKeyListKey(Byte _Key1, String _Key2)"));\r
-\r
- assertEquals(2, propertyCount);\r
- genTOsCount++;\r
- } else if (genTO.getName().equals("InnerListKey")) {\r
- final List<GeneratedProperty> properties = genTO\r
- .getProperties();\r
- assertEquals(1, properties.size());\r
- genTOsCount++;\r
- }\r
- }\r
- }\r
-\r
- assertEquals(5, genTypesCount);\r
- assertEquals(2, genTOsCount);\r
- }\r
-\r
- @Ignore\r
- @Test\r
- public void defaultConstructorTest() {\r
- final GeneratedTOBuilder toBuilder = new GeneratedTOBuilderImpl(\r
- "simple.pack", "DefCtor");\r
-\r
- GeneratedPropertyBuilder propBuilder = toBuilder.addProperty("foo");\r
- propBuilder.setReturnType(Types.typeForClass(String.class));\r
- propBuilder.setReadOnly(false);\r
-\r
- propBuilder = toBuilder.addProperty("bar");\r
- propBuilder.setReturnType(Types.typeForClass(Integer.class));\r
- propBuilder.setReadOnly(false);\r
-\r
- final GeneratedTransferObject genTO = toBuilder.toInstance();\r
-\r
- final TOGenerator clsGen = new TOGenerator();\r
- final String outputStr = clsGen.generate(genTO);\r
-\r
- assertNotNull(outputStr);\r
- assertTrue(outputStr.contains("public DefCtor()"));\r
- }\r
-\r
- @Test\r
- public void toStringTest() {\r
- final GeneratedTOBuilder toBuilder = new GeneratedTOBuilderImpl(\r
- "simple.pack", "DefCtor");\r
-\r
- GeneratedPropertyBuilder propBuilder = toBuilder.addProperty("foo");\r
- propBuilder.setReturnType(Types.typeForClass(String.class));\r
- propBuilder.setReadOnly(false);\r
- toBuilder.addToStringProperty(propBuilder);\r
-\r
- propBuilder = toBuilder.addProperty("bar");\r
- propBuilder.setReturnType(Types.typeForClass(Integer.class));\r
- propBuilder.setReadOnly(false);\r
- toBuilder.addToStringProperty(propBuilder);\r
- final GeneratedTransferObject genTO = toBuilder.toInstance();\r
- final TOGenerator clsGen = new TOGenerator();\r
- assertNotNull(clsGen.generate(genTO));\r
- }\r
-}\r
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.sal.java.api.generator.test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import java.io.File;
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.opendaylight.yangtools.binding.generator.util.Types;
+import org.opendaylight.yangtools.binding.generator.util.generated.type.builder.GeneratedTOBuilderImpl;
+import org.opendaylight.yangtools.sal.binding.generator.api.BindingGenerator;
+import org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl;
+import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty;
+import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject;
+import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType;
+import org.opendaylight.yangtools.sal.binding.model.api.Type;
+import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedPropertyBuilder;
+import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedTOBuilder;
+import org.opendaylight.yangtools.sal.java.api.generator.TOGenerator;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.parser.api.YangContextParser;
+import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
+
+public class ClassCodeGeneratorTest {
+
+ private final static List<File> testModels = new ArrayList<File>();
+
+ @BeforeClass
+ public static void loadTestResources() throws URISyntaxException {
+ final File listModelFile = new File(ClassCodeGeneratorTest.class
+ .getResource("/list-composite-key.yang").toURI());
+ testModels.add(listModelFile);
+ }
+
+ @Test
+ public void compositeKeyClassTest() throws IOException {
+ final YangContextParser parser = new YangParserImpl();
+ final SchemaContext context = parser.parseFiles(testModels);
+
+ assertNotNull(context);
+ final BindingGenerator bindingGen = new BindingGeneratorImpl();
+ final List<Type> genTypes = bindingGen.generateTypes(context);
+
+ assertTrue(genTypes != null);
+ assertEquals(7, genTypes.size());
+
+ int genTypesCount = 0;
+ int genTOsCount = 0;
+ for (final Type type : genTypes) {
+ if (type instanceof GeneratedType
+ && !(type instanceof GeneratedTransferObject)) {
+ genTypesCount++;
+ } else if (type instanceof GeneratedTransferObject) {
+ final GeneratedTransferObject genTO = (GeneratedTransferObject) type;
+
+ if (genTO.getName().equals("CompositeKeyListKey")) {
+ final List<GeneratedProperty> properties = genTO
+ .getProperties();
+ int propertyCount = 0;
+ for (final GeneratedProperty prop : properties) {
+ if (prop.getName().equals("key1")) {
+ propertyCount++;
+ } else if (prop.getName().equals("key2")) {
+ propertyCount++;
+ }
+ }
+
+ final TOGenerator clsGen = new TOGenerator();
+ final String outputStr = clsGen.generate(genTO);
+
+ assertNotNull(outputStr);
+ assertTrue(outputStr.contains("public CompositeKeyListKey(java.lang.Byte _key1, java.lang.String _key2)"));
+
+ assertEquals(2, propertyCount);
+ genTOsCount++;
+ } else if (genTO.getName().equals("InnerListKey")) {
+ final List<GeneratedProperty> properties = genTO
+ .getProperties();
+ assertEquals(1, properties.size());
+ genTOsCount++;
+ }
+ }
+ }
+
+ assertEquals(5, genTypesCount);
+ assertEquals(2, genTOsCount);
+ }
+
+ /**
+ * Test for testing of false scenario.
+ *
+ * Test tests value types. Value types are not allowed to have default constructor.
+ */
+ @Test
+ public void defaultConstructorNotPresentInValueTypeTest() {
+ final GeneratedTOBuilder toBuilder = new GeneratedTOBuilderImpl(
+ "simple.pack", "DefCtor");
+
+ GeneratedPropertyBuilder propBuilder = toBuilder.addProperty("foo");
+ propBuilder.setReturnType(Types.typeForClass(String.class));
+ propBuilder.setReadOnly(false);
+
+ propBuilder = toBuilder.addProperty("bar");
+ propBuilder.setReturnType(Types.typeForClass(Integer.class));
+ propBuilder.setReadOnly(false);
+
+ final GeneratedTransferObject genTO = toBuilder.toInstance();
+
+ final TOGenerator clsGen = new TOGenerator();
+ final String outputStr = clsGen.generate(genTO);
+
+ assertNotNull(outputStr);
+ assertFalse(outputStr.contains("public DefCtor()"));
+ }
+
+ @Test
+ public void toStringTest() {
+ final GeneratedTOBuilder toBuilder = new GeneratedTOBuilderImpl(
+ "simple.pack", "DefCtor");
+
+ GeneratedPropertyBuilder propBuilder = toBuilder.addProperty("foo");
+ propBuilder.setReturnType(Types.typeForClass(String.class));
+ propBuilder.setReadOnly(false);
+ toBuilder.addToStringProperty(propBuilder);
+
+ propBuilder = toBuilder.addProperty("bar");
+ propBuilder.setReturnType(Types.typeForClass(Integer.class));
+ propBuilder.setReadOnly(false);
+ toBuilder.addToStringProperty(propBuilder);
+ final GeneratedTransferObject genTO = toBuilder.toInstance();
+ final TOGenerator clsGen = new TOGenerator();
+ assertNotNull(clsGen.generate(genTO));
+ }
+}