package org.opendaylight.yangtools.yang2sources.plugin;
import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doAnswer;
-import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableTable;
import com.google.common.collect.Iterables;
import com.google.common.io.Resources;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
-import java.util.Collection;
import java.util.List;
-import java.util.Map;
import java.util.Optional;
-import java.util.Set;
import org.apache.maven.plugin.AbstractMojoExecutionException;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.opendaylight.yangtools.plugin.generator.api.ModuleResourceResolver;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
-import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
-import org.opendaylight.yangtools.yang2sources.plugin.ConfigArg.CodeGeneratorArg;
-import org.opendaylight.yangtools.yang2sources.spi.BasicCodeGenerator;
-import org.opendaylight.yangtools.yang2sources.spi.ModuleResourceResolver;
+@RunWith(MockitoJUnitRunner.StrictStubs.class)
public class FilenameResolutionTest extends AbstractCodeGeneratorTest {
@Test
public void testResolveSubmoduleResource() throws URISyntaxException, AbstractMojoExecutionException, IOException {
- setupMojo(new YangToSourcesProcessor(
- new File(Resources.getResource(FilenameResolutionTest.class, "/filename").toURI()), ImmutableList.of(),
- List.of(new CodeGeneratorArg(Generator.class.getName(), "outputDir")), project, false, yangProvider))
- .execute();
- }
-
- public static final class Generator implements BasicCodeGenerator {
- @Override
- public Collection<File> generateSources(final EffectiveModelContext context, final File outputBaseDir,
- final Set<Module> currentModules, final ModuleResourceResolver moduleResourcePathResolver) {
- final var module = Iterables.getOnlyElement(context.getModules());
- assertEquals(Optional.of("/META-INF/yang/foo@2020-10-13.yang"),
- moduleResourcePathResolver.findModuleResourcePath(module, YangTextSchemaSource.class));
+ assertMojoExecution(new YangToSourcesProcessor(
+ new File(Resources.getResource(FilenameResolutionTest.class, "/filename").toURI()), List.of(),
+ List.of(new FileGeneratorArg("mockGenerator")), project, false, yangProvider), mock -> {
+ doAnswer(invocation -> {
+ final EffectiveModelContext context = invocation.getArgument(0);
+ final ModuleResourceResolver resolver = invocation.getArgument(2);
- final var submodule = Iterables.getOnlyElement(module.getSubmodules());
- assertEquals(Optional.of("/META-INF/yang/foo-submodule@2020-10-12.yang"),
- moduleResourcePathResolver.findModuleResourcePath(submodule, YangTextSchemaSource.class));
- return List.of();
- }
+ final var module = Iterables.getOnlyElement(context.getModules());
+ assertEquals(Optional.of("/META-INF/yang/foo@2020-10-13.yang"),
+ resolver.findModuleResourcePath(module, YangTextSchemaSource.class));
- @Override
- public void setAdditionalConfig(final Map<String, String> additionalConfiguration) {
- // Noop
- }
+ final var submodule = Iterables.getOnlyElement(module.getSubmodules());
+ assertEquals(Optional.of("/META-INF/yang/foo-submodule@2020-10-12.yang"),
+ resolver.findModuleResourcePath(submodule, YangTextSchemaSource.class));
- @Override
- public void setResourceBaseDir(final File resourceBaseDir) {
- // Noop
- }
+ return ImmutableTable.of();
+ }).when(mock).generateFiles(any(), any(), any());
+ }, mock -> { });
}
}