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