org.obeonetwork.m2doc.genconf.tests.GenconfUtilsTests.java Source code

Java tutorial

Introduction

Here is the source code for org.obeonetwork.m2doc.genconf.tests.GenconfUtilsTests.java

Source

/*******************************************************************************
 *  Copyright (c) 2017 Obeo. 
 *  All rights reserved. This program and the accompanying materials
 *  are made available under the terms of the Eclipse Public License v1.0
 *  which accompanies this distribution, and is available at
 *  http://www.eclipse.org/legal/epl-v10.html
 *   
 *   Contributors:
 *       Obeo - initial API and implementation
 *  
 *******************************************************************************/
package org.obeonetwork.m2doc.genconf.tests;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.impl.ResourceImpl;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.obeonetwork.m2doc.genconf.Definition;
import org.obeonetwork.m2doc.genconf.GenconfPackage;
import org.obeonetwork.m2doc.genconf.GenconfUtils;
import org.obeonetwork.m2doc.genconf.Generation;
import org.obeonetwork.m2doc.genconf.ModelDefinition;
import org.obeonetwork.m2doc.genconf.Option;
import org.obeonetwork.m2doc.genconf.StringDefinition;
import org.obeonetwork.m2doc.properties.TemplateCustomProperties;
import org.obeonetwork.m2doc.tests.M2DocUtilsTests;
import org.obeonetwork.m2doc.tests.M2DocUtilsTests.TestServiceConfigurator;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

/**
 * Tests {@link GenconfUtils}.
 * 
 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
 */
public class GenconfUtilsTests {

    @BeforeClass
    public static void beforeClass() {
        M2DocUtilsTests.beforeClass();
    }

    @AfterClass
    public static void afterClass() {
        M2DocUtilsTests.afterClass();
    }

    @Test
    public void getOptionsNullResource() {
        final Generation generation = GenconfPackage.eINSTANCE.getGenconfFactory().createGeneration();

        final Map<String, String> options = GenconfUtils.getOptions(generation);
        assertEquals(0, options.size());
    }

    @Test
    public void getOptionsNullResourceURI() {
        final Generation generation = GenconfPackage.eINSTANCE.getGenconfFactory().createGeneration();
        final Resource resource = new ResourceImpl();
        resource.getContents().add(generation);

        final Map<String, String> options = GenconfUtils.getOptions(generation);
        assertEquals(0, options.size());
    }

    @Test
    public void getOptionsGenconfURI() {
        final Generation generation = GenconfPackage.eINSTANCE.getGenconfFactory().createGeneration();
        final Resource resource = new ResourceImpl(URI.createURI("test"));
        resource.getContents().add(generation);

        final Map<String, String> options = GenconfUtils.getOptions(generation);
        assertEquals(1, options.size());
        assertEquals("test", options.get(GenconfUtils.GENCONF_URI_OPTION));
    }

    @Test
    public void getOptionsTemplateURI() {
        final Generation generation = GenconfPackage.eINSTANCE.getGenconfFactory().createGeneration();

        generation.setTemplateFileName("test.docx");

        final Map<String, String> options = GenconfUtils.getOptions(generation);
        assertEquals(1, options.size());
        assertEquals("test.docx", options.get(GenconfUtils.TEMPLATE_URI_OPTION));
    }

    @Test
    public void getOptionsResultURI() {
        final Generation generation = GenconfPackage.eINSTANCE.getGenconfFactory().createGeneration();

        generation.setResultFileName("test.docx");

        final Map<String, String> options = GenconfUtils.getOptions(generation);
        assertEquals(1, options.size());
        assertEquals("test.docx", options.get(GenconfUtils.RESULT_URI_OPTION));
    }

    @Test
    public void getOptionsNoOptions() {
        final Generation generation = GenconfPackage.eINSTANCE.getGenconfFactory().createGeneration();
        final Resource resource = new ResourceImpl(URI.createURI("generation.xmi"));
        resource.getContents().add(generation);

        generation.setTemplateFileName("template.docx");
        generation.setResultFileName("result.docx");

        final Map<String, String> options = GenconfUtils.getOptions(generation);
        assertEquals(3, options.size());
        assertEquals("generation.xmi", options.get(GenconfUtils.GENCONF_URI_OPTION));
        assertEquals("template.docx", options.get(GenconfUtils.TEMPLATE_URI_OPTION));
        assertEquals("result.docx", options.get(GenconfUtils.RESULT_URI_OPTION));
    }

    @Test
    public void getOptions() {
        final Generation generation = GenconfPackage.eINSTANCE.getGenconfFactory().createGeneration();
        final Resource resource = new ResourceImpl(URI.createURI("generation.xmi"));
        resource.getContents().add(generation);

        generation.setTemplateFileName("template.docx");
        generation.setResultFileName("result.docx");

        final Option option1 = GenconfPackage.eINSTANCE.getGenconfFactory().createOption();
        option1.setName("option1");
        option1.setValue("value1");
        generation.getOptions().add(option1);

        final Option option2 = GenconfPackage.eINSTANCE.getGenconfFactory().createOption();
        option2.setName("option2");
        option2.setValue("value2");
        generation.getOptions().add(option2);

        final Option option3 = GenconfPackage.eINSTANCE.getGenconfFactory().createOption();
        option3.setName("option3");
        option3.setValue("value3");
        generation.getOptions().add(option3);

        final Map<String, String> options = GenconfUtils.getOptions(generation);
        assertEquals(6, options.size());
        assertEquals("generation.xmi", options.get(GenconfUtils.GENCONF_URI_OPTION));
        assertEquals("template.docx", options.get(GenconfUtils.TEMPLATE_URI_OPTION));
        assertEquals("result.docx", options.get(GenconfUtils.RESULT_URI_OPTION));
        assertEquals("value1", options.get("option1"));
        assertEquals("value2", options.get("option2"));
        assertEquals("value3", options.get("option3"));
    }

    @Test
    public void initializeOptionsNotExistingOption() {
        final Generation generation = GenconfPackage.eINSTANCE.getGenconfFactory().createGeneration();

        GenconfUtils.initializeOptions(generation);

        assertEquals(1, generation.getOptions().size());
        assertEquals(TestServiceConfigurator.OPTION, generation.getOptions().get(0).getName());
        assertEquals(TestServiceConfigurator.VALUE, generation.getOptions().get(0).getValue());
    }

    @Test
    public void initializeOptionsExistingOption() {
        final Generation generation = GenconfPackage.eINSTANCE.getGenconfFactory().createGeneration();

        final Option option = GenconfPackage.eINSTANCE.getGenconfFactory().createOption();
        option.setName(TestServiceConfigurator.OPTION);
        generation.getOptions().add(option);

        GenconfUtils.initializeOptions(generation);

        assertEquals(1, generation.getOptions().size());
        assertEquals(TestServiceConfigurator.OPTION, generation.getOptions().get(0).getName());
        assertEquals(TestServiceConfigurator.VALUE, generation.getOptions().get(0).getValue());
    }

    @Test
    public void getResolvedURINullResource() {
        final Generation generation = GenconfPackage.eINSTANCE.getGenconfFactory().createGeneration();

        final URI uri = GenconfUtils.getResolvedURI(generation, URI.createURI("test"));

        assertEquals("test", uri.toString());
    }

    @Test
    public void getResolvedURINullResourceURI() {
        final Generation generation = GenconfPackage.eINSTANCE.getGenconfFactory().createGeneration();
        final Resource resource = new ResourceImpl();
        resource.getContents().add(generation);

        final URI uri = GenconfUtils.getResolvedURI(generation, URI.createURI("test"));

        assertEquals("test", uri.toString());
    }

    @Test(expected = IllegalArgumentException.class)
    public void getResolvedRelativeResourceURI() {
        final Generation generation = GenconfPackage.eINSTANCE.getGenconfFactory().createGeneration();
        final Resource resource = new ResourceImpl(URI.createURI("test/test.genconf"));
        resource.getContents().add(generation);

        final URI uri = GenconfUtils.getResolvedURI(generation, URI.createURI("test"));

        assertEquals("test", uri.toString());
    }

    @Test
    public void getResolvedAbsoluteResourceURI() {
        final Generation generation = GenconfPackage.eINSTANCE.getGenconfFactory().createGeneration();
        final Resource resource = new ResourceImpl(URI.createFileURI("/test/test.genconf"));
        resource.getContents().add(generation);

        final URI uri = GenconfUtils.getResolvedURI(generation, URI.createURI("test"));

        assertEquals("file:/test/test", uri.toString());
    }

    @Test
    public void getNewDefinitionsNotExistingModelDefinition() throws IOException {
        final Generation generation = GenconfPackage.eINSTANCE.getGenconfFactory().createGeneration();
        try (final XWPFDocument document = new XWPFDocument()) {
            final TemplateCustomProperties properties = new TemplateCustomProperties(document);

            properties.getVariables().put("variable", "ecore::EClass");

            final List<Definition> definitions = GenconfUtils.getNewDefinitions(generation, properties);

            assertEquals(1, definitions.size());
            assertTrue(definitions.get(0) instanceof ModelDefinition);
            assertEquals("variable", definitions.get(0).getKey());
        }
    }

    @Test
    public void getNewDefinitionsNotExistingStringDefinition() throws IOException {
        final Generation generation = GenconfPackage.eINSTANCE.getGenconfFactory().createGeneration();
        try (final XWPFDocument document = new XWPFDocument()) {
            final TemplateCustomProperties properties = new TemplateCustomProperties(document);

            properties.getVariables().put("variable", TemplateCustomProperties.STRING_TYPE);

            final List<Definition> definitions = GenconfUtils.getNewDefinitions(generation, properties);

            assertEquals(1, definitions.size());
            assertTrue(definitions.get(0) instanceof StringDefinition);
            assertEquals("variable", definitions.get(0).getKey());
        }
    }

    @Test
    public void getNewDefinitionsExisting() throws IOException {
        final Generation generation = GenconfPackage.eINSTANCE.getGenconfFactory().createGeneration();
        final StringDefinition stringDefinition = GenconfPackage.eINSTANCE.getGenconfFactory()
                .createStringDefinition();
        stringDefinition.setKey("variable");
        generation.getDefinitions().add(stringDefinition);

        try (final XWPFDocument document = new XWPFDocument()) {
            final TemplateCustomProperties properties = new TemplateCustomProperties(document);

            properties.getVariables().put("variable", TemplateCustomProperties.STRING_TYPE);

            final List<Definition> definitions = GenconfUtils.getNewDefinitions(generation, properties);

            assertEquals(0, definitions.size());
        }
    }

    @Test
    public void getNewDefinitionsExistingInvalidType() throws IOException {
        final Generation generation = GenconfPackage.eINSTANCE.getGenconfFactory().createGeneration();
        final StringDefinition stringDefinition = GenconfPackage.eINSTANCE.getGenconfFactory()
                .createStringDefinition();
        stringDefinition.setKey("variable");
        generation.getDefinitions().add(stringDefinition);

        try (final XWPFDocument document = new XWPFDocument()) {
            final TemplateCustomProperties properties = new TemplateCustomProperties(document);

            properties.getVariables().put("variable", "ecore::EClass");

            final List<Definition> definitions = GenconfUtils.getNewDefinitions(generation, properties);

            assertEquals(1, definitions.size());
            assertTrue(definitions.get(0) instanceof ModelDefinition);
            assertEquals("variable", definitions.get(0).getKey());
        }
    }

}