Merge "Fix duplicate dependency warnings"
[controller.git] / opendaylight / config / yang-jmx-generator-plugin / src / test / java / org / opendaylight / controller / config / yangjmxgenerator / plugin / module / concrete / ConcreteModuleGeneratedObjectFactoryTest.java
1 package org.opendaylight.controller.config.yangjmxgenerator.plugin.module.concrete;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.mockito.Mockito.doReturn;
5 import static org.mockito.Mockito.mock;
6
7 import com.google.common.base.Optional;
8 import java.io.File;
9 import java.util.Map.Entry;
10 import net.sourceforge.pmd.lang.ast.Node;
11 import net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceDeclaration;
12 import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit;
13 import org.junit.Test;
14 import org.opendaylight.controller.config.yangjmxgenerator.ModuleMXBeanEntry;
15 import org.opendaylight.controller.config.yangjmxgenerator.plugin.gofactory.ConcreteModuleGeneratedObjectFactory;
16 import org.opendaylight.controller.config.yangjmxgenerator.plugin.java.FullyQualifiedName;
17 import org.opendaylight.controller.config.yangjmxgenerator.plugin.java.GeneratedObject;
18 import org.opendaylight.controller.config.yangjmxgenerator.plugin.module.AbstractGeneratedObjectTest;
19
20 public class ConcreteModuleGeneratedObjectFactoryTest extends AbstractGeneratedObjectTest {
21
22     @Test
23     public void test() throws Exception {
24         FullyQualifiedName fqn = new FullyQualifiedName("foo.bar", "Baz");
25         FullyQualifiedName abstractFQN = new FullyQualifiedName("foo.bar", "AbstractBaz");
26         String nullableDescription = null;
27
28         ModuleMXBeanEntry moduleMXBeanEntry = mockModuleMXBeanEntry(fqn, abstractFQN, nullableDescription);
29         Optional<String> copyright = Optional.absent();
30         Optional<String> header = Optional.absent();
31         GeneratedObject go = new ConcreteModuleGeneratedObjectFactory().toGeneratedObject(moduleMXBeanEntry, copyright, header);
32         Entry<FullyQualifiedName, File> entry = go.persist(generatorOutputPath).get();
33
34         File dstFile = entry.getValue();
35         Node c = parse(dstFile);
36         assertEquals(fqn.getPackageName(), ((ASTCompilationUnit) c).getPackageDeclaration().getPackageNameImage());
37         assertEquals(fqn.getTypeName(), c.getFirstDescendantOfType(ASTClassOrInterfaceDeclaration.class).getImage());
38         assertHasMethodNamed(c, "customValidation");
39         assertHasMethodNamed(c, "createInstance");
40     }
41
42     static ModuleMXBeanEntry mockModuleMXBeanEntry(FullyQualifiedName fqn, FullyQualifiedName abstractFQN, String nullableDescription) {
43         ModuleMXBeanEntry mock = mock(ModuleMXBeanEntry.class);
44         assertEquals(fqn.getPackageName(), abstractFQN.getPackageName());
45         doReturn(fqn.getPackageName()).when(mock).getPackageName();
46         doReturn(fqn.getTypeName()).when(mock).getStubModuleName();
47         doReturn(nullableDescription).when(mock).getNullableDescription();
48         doReturn(abstractFQN.getTypeName()).when(mock).getAbstractModuleName();
49         return mock;
50     }
51 }