1 package org.opendaylight.controller.config.yangjmxgenerator.plugin.module.concrete;
3 import static org.junit.Assert.assertEquals;
4 import static org.mockito.Mockito.doReturn;
5 import static org.mockito.Mockito.mock;
7 import com.google.common.base.Optional;
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;
20 public class ConcreteModuleGeneratedObjectFactoryTest extends AbstractGeneratedObjectTest {
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;
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();
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");
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();