Package cuke4duke.internal.java

Source Code of cuke4duke.internal.java.JavaAnalyzerTest$Wilma

package cuke4duke.internal.java;

import cuke4duke.annotation.I18n.EN.*;
import cuke4duke.StepMother;
import cuke4duke.internal.jvmclass.ClassAnalyzer;
import cuke4duke.internal.jvmclass.ClassLanguage;
import cuke4duke.internal.jvmclass.ClassLanguageMixin;
import cuke4duke.internal.language.AbstractStepDefinition;
import cuke4duke.internal.language.StepDefinition;
import cuke4duke.spi.ExceptionFactory;
import org.junit.Test;
import org.mockito.Mock;

import java.util.Arrays;
import java.util.List;

import static junit.framework.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.MockitoAnnotations.initMocks;

public class JavaAnalyzerTest {

    @Mock
    private StepMother stepMother;
    @Mock
    private ClassLanguageMixin languageMixin;

    public JavaAnalyzerTest() {
        initMocks(this);
    }
   
    public abstract static class FlintStone {
        @Given("where is dino")
        public Class whereIsDino() {
            return getClass();
        }
    }

    public static class Fred extends FlintStone {
    }

    public static class Wilma extends FlintStone {
    }

    @Test
    public void shouldAllowOneInheritedSubclass() throws Throwable {
        ClassLanguage classLanguage = new ClassLanguage(languageMixin, mock(ExceptionFactory.class), stepMother, Arrays.<ClassAnalyzer>asList(new JavaAnalyzer()));
        classLanguage.addClass(FlintStone.class);
        classLanguage.addClass(Fred.class);
        classLanguage.begin_scenario(null);
        List<StepDefinition> stepDefinitions = classLanguage.getStepDefinitions();
        assertEquals(1, stepDefinitions.size());

        assertEquals(Fred.class, ((AbstractStepDefinition)stepDefinitions.get(0)).invokeWithArgs(new Object[0]));
    }

    @Test(expected=Exception.class)
    public void shouldFailWithTwoInheritedSubclass() throws Throwable {
        ClassLanguage classLanguage = new ClassLanguage(languageMixin, mock(ExceptionFactory.class), stepMother, Arrays.<ClassAnalyzer>asList(new JavaAnalyzer()));
        classLanguage.addClass(FlintStone.class);
        classLanguage.addClass(Fred.class);
        classLanguage.addClass(Wilma.class);
        classLanguage.begin_scenario(null);
        List<StepDefinition> stepDefinitions = classLanguage.getStepDefinitions();
        assertEquals(1, stepDefinitions.size());

        assertEquals(Fred.class, ((AbstractStepDefinition)stepDefinitions.get(0)).invokeWithArgs(new Object[0]));
    }
}
TOP

Related Classes of cuke4duke.internal.java.JavaAnalyzerTest$Wilma

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.