2 * Copyright (c) 2013, 2015 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.controller.config.yangjmxgenerator.plugin.module.concrete;
11 import static org.junit.Assert.assertEquals;
12 import static org.mockito.Mockito.doReturn;
13 import static org.mockito.Mockito.mock;
15 import com.google.common.base.Optional;
17 import java.util.Map.Entry;
18 import net.sourceforge.pmd.lang.ast.Node;
19 import net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceDeclaration;
20 import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit;
21 import org.junit.Test;
22 import org.opendaylight.controller.config.yangjmxgenerator.ModuleMXBeanEntry;
23 import org.opendaylight.controller.config.yangjmxgenerator.plugin.gofactory.ConcreteModuleGeneratedObjectFactory;
24 import org.opendaylight.controller.config.yangjmxgenerator.plugin.java.FullyQualifiedName;
25 import org.opendaylight.controller.config.yangjmxgenerator.plugin.java.GeneratedObject;
26 import org.opendaylight.controller.config.yangjmxgenerator.plugin.module.AbstractGeneratedObjectTest;
28 public class ConcreteModuleGeneratedObjectFactoryTest extends AbstractGeneratedObjectTest {
31 public void test() throws Exception {
32 FullyQualifiedName fqn = new FullyQualifiedName("foo.bar", "Baz");
33 FullyQualifiedName abstractFQN = new FullyQualifiedName("foo.bar", "AbstractBaz");
34 String nullableDescription = null;
36 ModuleMXBeanEntry moduleMXBeanEntry = mockModuleMXBeanEntry(fqn, abstractFQN, nullableDescription);
37 Optional<String> copyright = Optional.absent();
38 Optional<String> header = Optional.absent();
39 GeneratedObject go = new ConcreteModuleGeneratedObjectFactory().toGeneratedObject(moduleMXBeanEntry, copyright, header);
40 Entry<FullyQualifiedName, File> entry = go.persist(generatorOutputPath).get();
42 File dstFile = entry.getValue();
43 Node c = parse(dstFile);
44 assertEquals(fqn.getPackageName(), ((ASTCompilationUnit) c).getPackageDeclaration().getPackageNameImage());
45 assertEquals(fqn.getTypeName(), c.getFirstDescendantOfType(ASTClassOrInterfaceDeclaration.class).getImage());
46 assertHasMethodNamed(c, "customValidation");
47 assertHasMethodNamed(c, "createInstance");
50 static ModuleMXBeanEntry mockModuleMXBeanEntry(FullyQualifiedName fqn, FullyQualifiedName abstractFQN, String nullableDescription) {
51 ModuleMXBeanEntry mock = mock(ModuleMXBeanEntry.class);
52 assertEquals(fqn.getPackageName(), abstractFQN.getPackageName());
53 doReturn(fqn.getPackageName()).when(mock).getPackageName();
54 doReturn(fqn.getTypeName()).when(mock).getStubModuleName();
55 doReturn(nullableDescription).when(mock).getNullableDescription();
56 doReturn(abstractFQN.getTypeName()).when(mock).getAbstractModuleName();