1 package org.opendaylight.controller.config.yangjmxgenerator.plugin.module.concrete;
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;
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;
15 import java.util.Map.Entry;
17 import static org.junit.Assert.assertEquals;
18 import static org.mockito.Mockito.doReturn;
19 import static org.mockito.Mockito.mock;
21 public class ConcreteModuleGeneratedObjectFactoryTest extends AbstractGeneratedObjectTest {
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;
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();
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");
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();