X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=code-generator%2Fbinding-java-api-generator%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fsal%2Fjava%2Fapi%2Fgenerator%2Ftest%2FClassCodeGeneratorTest.java;h=e2b65e8d764aa3a8570e25e94cd0881904511bff;hb=559e58f94e0d93c20f6895f64b97af3b4db519ec;hp=4efffc1d7c22f97830039dc85da3e7ec463421dd;hpb=a84774697e485cc456711d76e2d9281a9c08611e;p=mdsal.git diff --git a/code-generator/binding-java-api-generator/src/test/java/org/opendaylight/yangtools/sal/java/api/generator/test/ClassCodeGeneratorTest.java b/code-generator/binding-java-api-generator/src/test/java/org/opendaylight/yangtools/sal/java/api/generator/test/ClassCodeGeneratorTest.java index 4efffc1d7c..e2b65e8d76 100644 --- a/code-generator/binding-java-api-generator/src/test/java/org/opendaylight/yangtools/sal/java/api/generator/test/ClassCodeGeneratorTest.java +++ b/code-generator/binding-java-api-generator/src/test/java/org/opendaylight/yangtools/sal/java/api/generator/test/ClassCodeGeneratorTest.java @@ -1,143 +1,146 @@ -/* - * 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.*; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import org.junit.BeforeClass; -import org.junit.Ignore; -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.Module; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser; -import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl; - -public class ClassCodeGeneratorTest { - - private final static List testModels = new ArrayList(); - - @BeforeClass - public static void loadTestResources() { - final File listModelFile = new File(ClassCodeGeneratorTest.class - .getResource("/list-composite-key.yang").getPath()); - testModels.add(listModelFile); - } - - @Test - public void compositeKeyClassTest() { - final YangModelParser parser = new YangParserImpl(); - final Set modules = parser.parseYangModels(testModels); - final SchemaContext context = parser.resolveSchemaContext(modules); - - assertNotNull(context); - final BindingGenerator bindingGen = new BindingGeneratorImpl(); - final List 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 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(Byte _key1, String _key2)")); - - assertEquals(2, propertyCount); - genTOsCount++; - } else if (genTO.getName().equals("InnerListKey")) { - final List properties = genTO - .getProperties(); - assertEquals(1, properties.size()); - genTOsCount++; - } - } - } - - assertEquals(5, genTypesCount); - assertEquals(2, genTOsCount); - } - - @Ignore - @Test - public void defaultConstructorTest() { - 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); - assertTrue(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)); - } -} +/* + * 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 testModels = new ArrayList(); + + @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 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 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 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)); + } +}