Convert argument validator tests to kotlin
This commit is contained in:
		
							parent
							
								
									1a6d888ca9
								
							
						
					
					
						commit
						ae48d9c2ca
					
				@ -1,223 +0,0 @@
 | 
			
		||||
package function;
 | 
			
		||||
 | 
			
		||||
import function.ArgumentValidator.BadArgumentTypeException;
 | 
			
		||||
import function.ArgumentValidator.DottedArgumentListException;
 | 
			
		||||
import function.ArgumentValidator.TooFewArgumentsException;
 | 
			
		||||
import function.ArgumentValidator.TooManyArgumentsException;
 | 
			
		||||
import org.junit.Before;
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
import sexpression.Cons;
 | 
			
		||||
import sexpression.LispString;
 | 
			
		||||
import sexpression.Nil;
 | 
			
		||||
import sexpression.SExpression;
 | 
			
		||||
import sexpression.Symbol;
 | 
			
		||||
 | 
			
		||||
import static error.Severity.ERROR;
 | 
			
		||||
import static org.junit.Assert.assertEquals;
 | 
			
		||||
import static org.junit.Assert.assertNotNull;
 | 
			
		||||
import static org.junit.Assert.assertTrue;
 | 
			
		||||
 | 
			
		||||
public class ArgumentValidatorTest {
 | 
			
		||||
 | 
			
		||||
    private ArgumentValidator validator;
 | 
			
		||||
 | 
			
		||||
    private Cons makeArgumentListOfSize(int size) {
 | 
			
		||||
        Cons argumentList = Nil.INSTANCE;
 | 
			
		||||
 | 
			
		||||
        for (int i = 0; i < size; i++)
 | 
			
		||||
            argumentList = new Cons(Nil.INSTANCE, argumentList);
 | 
			
		||||
 | 
			
		||||
        return argumentList;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Before
 | 
			
		||||
    public void setUp() {
 | 
			
		||||
        validator = new ArgumentValidator("TEST");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void noConstraints_DoesNotThrowExceptionWithNoArguments() {
 | 
			
		||||
        validator.validate(makeArgumentListOfSize(0));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void noConstraints_DoesNotThrowExceptionWithOneArgument() {
 | 
			
		||||
        validator.validate(makeArgumentListOfSize(1));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void noConstraints_DoesNotThrowExceptionWithManyArguments() {
 | 
			
		||||
        validator.validate(makeArgumentListOfSize(20));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = TooFewArgumentsException.class)
 | 
			
		||||
    public void tooFewArgumentsWithMinimumSet_ThrowsException() {
 | 
			
		||||
        validator.setMinimumNumberOfArguments(1);
 | 
			
		||||
        validator.validate(makeArgumentListOfSize(0));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = TooManyArgumentsException.class)
 | 
			
		||||
    public void tooManyArgumentsWithMaximumSet_ThrowsException() {
 | 
			
		||||
        validator.setMaximumNumberOfArguments(1);
 | 
			
		||||
        validator.validate(makeArgumentListOfSize(2));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void exactNumberOfArguments_DoesNotThrowException() {
 | 
			
		||||
        validator.setExactNumberOfArguments(5);
 | 
			
		||||
        validator.validate(makeArgumentListOfSize(5));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = TooFewArgumentsException.class)
 | 
			
		||||
    public void tooFewArgumentsWithExactSet_ThrowsException() {
 | 
			
		||||
        validator.setExactNumberOfArguments(3);
 | 
			
		||||
        validator.validate(makeArgumentListOfSize(2));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = TooManyArgumentsException.class)
 | 
			
		||||
    public void tooManyArgumentsWithExactSet_ThrowsException() {
 | 
			
		||||
        validator.setExactNumberOfArguments(3);
 | 
			
		||||
        validator.validate(makeArgumentListOfSize(4));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void tooManyArgumentsException_HasCorrectAttributes() {
 | 
			
		||||
        TooManyArgumentsException e = new TooManyArgumentsException("TEST", Nil.INSTANCE);
 | 
			
		||||
 | 
			
		||||
        assertEquals(ERROR, e.getSeverity());
 | 
			
		||||
        assertNotNull(e.getMessage());
 | 
			
		||||
        assertTrue(e.getMessage().length() > 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void tooFewArgumentsException_HasCorrectAttributes() {
 | 
			
		||||
        TooFewArgumentsException e = new TooFewArgumentsException("TEST", Nil.INSTANCE);
 | 
			
		||||
 | 
			
		||||
        assertEquals(ERROR, e.getSeverity());
 | 
			
		||||
        assertNotNull(e.getMessage());
 | 
			
		||||
        assertTrue(e.getMessage().length() > 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void badArgumentTypeException_HasCorrectAttributes() {
 | 
			
		||||
        BadArgumentTypeException e = new BadArgumentTypeException("TEST", Nil.INSTANCE, SExpression.class);
 | 
			
		||||
 | 
			
		||||
        assertEquals(ERROR, e.getSeverity());
 | 
			
		||||
        assertNotNull(e.getMessage());
 | 
			
		||||
        assertTrue(e.getMessage().length() > 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void correctArgumentType_DoesNotThrowException() {
 | 
			
		||||
        validator.setEveryArgumentExpectedType(Nil.class);
 | 
			
		||||
        validator.validate(makeArgumentListOfSize(1));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = BadArgumentTypeException.class)
 | 
			
		||||
    public void badArgumentType_ThrowsException() {
 | 
			
		||||
        validator.setEveryArgumentExpectedType(LispString.class);
 | 
			
		||||
        validator.validate(makeArgumentListOfSize(1));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void correctFirstAndRestArgumentTypes_DoesNotThrowException() {
 | 
			
		||||
        Cons argumentList = new Cons(Symbol.Companion.getT(), new Cons(Nil.INSTANCE, Nil.INSTANCE));
 | 
			
		||||
 | 
			
		||||
        validator.setFirstArgumentExpectedType(Symbol.class);
 | 
			
		||||
        validator.setTrailingArgumentExpectedType(Cons.class);
 | 
			
		||||
        validator.validate(argumentList);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = BadArgumentTypeException.class)
 | 
			
		||||
    public void badFirstArgumentType_ThrowsException() {
 | 
			
		||||
        Cons argumentList = new Cons(Symbol.Companion.getT(), new Cons(Nil.INSTANCE, Nil.INSTANCE));
 | 
			
		||||
 | 
			
		||||
        validator.setFirstArgumentExpectedType(Cons.class);
 | 
			
		||||
        validator.setTrailingArgumentExpectedType(Cons.class);
 | 
			
		||||
        validator.validate(argumentList);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = BadArgumentTypeException.class)
 | 
			
		||||
    public void badTrailingArgumentType_ThrowsException() {
 | 
			
		||||
        Cons argumentList = new Cons(Symbol.Companion.getT(), new Cons(Nil.INSTANCE, Nil.INSTANCE));
 | 
			
		||||
 | 
			
		||||
        validator.setFirstArgumentExpectedType(Symbol.class);
 | 
			
		||||
        validator.setTrailingArgumentExpectedType(Symbol.class);
 | 
			
		||||
        validator.validate(argumentList);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void expectedTypeWithNoDisplayName_DoesNotCauseNPE() {
 | 
			
		||||
        Cons argumentList = new Cons(Symbol.Companion.getT(), new Cons(Nil.INSTANCE, Nil.INSTANCE));
 | 
			
		||||
        SExpression withoutDisplayName = new SExpression() {};
 | 
			
		||||
 | 
			
		||||
        validator.setEveryArgumentExpectedType(withoutDisplayName.getClass());
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            validator.validate(argumentList);
 | 
			
		||||
        } catch (BadArgumentTypeException e) {
 | 
			
		||||
            assertNotNull(e.getMessage());
 | 
			
		||||
            assertTrue(e.getMessage().length() > 0);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = DottedArgumentListException.class)
 | 
			
		||||
    public void givenDottedArgumentList_ThrowsException() {
 | 
			
		||||
        Cons argumentList = new Cons(Symbol.Companion.getT(), Symbol.Companion.getT());
 | 
			
		||||
 | 
			
		||||
        validator.validate(argumentList);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = DottedArgumentListException.class)
 | 
			
		||||
    public void givenLargeDottedArgumentList_ThrowsException() {
 | 
			
		||||
        Cons argumentList =
 | 
			
		||||
                new Cons(Symbol.Companion.getT(), new Cons(Symbol.Companion.getT(), Symbol.Companion.getT()));
 | 
			
		||||
 | 
			
		||||
        validator.validate(argumentList);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void dottedArgumentListException_HasCorrectAttributes() {
 | 
			
		||||
        DottedArgumentListException e = new DottedArgumentListException("TEST", Nil.INSTANCE);
 | 
			
		||||
 | 
			
		||||
        assertEquals(ERROR, e.getSeverity());
 | 
			
		||||
        assertNotNull(e.getMessage());
 | 
			
		||||
        assertTrue(e.getMessage().length() > 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void excludedFirstArgumentType_DoesNotAffectTrailingArguments() {
 | 
			
		||||
        validator.setFirstArgumentExcludedType(Nil.class);
 | 
			
		||||
        validator.validate(new Cons(Symbol.Companion.getT(), new Cons(Nil.INSTANCE, Nil.INSTANCE)));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void excludedTrailingArgumentType_DoesNotAffectFirstArgument() {
 | 
			
		||||
        validator.setTrailingArgumentExcludedType(Nil.class);
 | 
			
		||||
        validator.validate(new Cons(Nil.INSTANCE, new Cons(Symbol.Companion.getT(), Nil.INSTANCE)));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = BadArgumentTypeException.class)
 | 
			
		||||
    public void excludedFirstArgumentType_ThrowsException() {
 | 
			
		||||
        validator.setFirstArgumentExcludedType(Nil.class);
 | 
			
		||||
        validator.validate(new Cons(Nil.INSTANCE, new Cons(Symbol.Companion.getT(), Nil.INSTANCE)));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = BadArgumentTypeException.class)
 | 
			
		||||
    public void excludedTrailingArgumentType_ThrowsException() {
 | 
			
		||||
        validator.setTrailingArgumentExcludedType(Nil.class);
 | 
			
		||||
        validator.validate(new Cons(Symbol.Companion.getT(), new Cons(Nil.INSTANCE, Nil.INSTANCE)));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = BadArgumentTypeException.class)
 | 
			
		||||
    public void excludedArgumentType_ThrowsExceptionOnFirstArgument() {
 | 
			
		||||
        validator.setEveryArgumentExcludedType(Nil.class);
 | 
			
		||||
        validator.validate(new Cons(Nil.INSTANCE, new Cons(Symbol.Companion.getT(), Nil.INSTANCE)));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = BadArgumentTypeException.class)
 | 
			
		||||
    public void excludedArgumentType_ThrowsExceptionOnTrailingArgument() {
 | 
			
		||||
        validator.setEveryArgumentExcludedType(Nil.class);
 | 
			
		||||
        validator.validate(new Cons(Symbol.Companion.getT(), new Cons(Nil.INSTANCE, Nil.INSTANCE)));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										240
									
								
								src/test/kotlin/function/ArgumentValidatorTest.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										240
									
								
								src/test/kotlin/function/ArgumentValidatorTest.kt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,240 @@
 | 
			
		||||
package function
 | 
			
		||||
 | 
			
		||||
import function.ArgumentValidator.BadArgumentTypeException
 | 
			
		||||
import function.ArgumentValidator.DottedArgumentListException
 | 
			
		||||
import function.ArgumentValidator.TooFewArgumentsException
 | 
			
		||||
import function.ArgumentValidator.TooManyArgumentsException
 | 
			
		||||
import org.junit.jupiter.api.Assertions.assertThrows
 | 
			
		||||
import org.junit.jupiter.api.BeforeEach
 | 
			
		||||
import org.junit.jupiter.api.Test
 | 
			
		||||
import sexpression.Cons
 | 
			
		||||
import sexpression.LispString
 | 
			
		||||
import sexpression.Nil
 | 
			
		||||
import sexpression.SExpression
 | 
			
		||||
import sexpression.Symbol
 | 
			
		||||
import sexpression.Symbol.Companion.T
 | 
			
		||||
import testutil.TestUtilities.assertIsErrorWithMessage
 | 
			
		||||
 | 
			
		||||
class ArgumentValidatorTest {
 | 
			
		||||
 | 
			
		||||
    companion object {
 | 
			
		||||
        private const val FUNCTION_NAME = "TEST"
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private lateinit var validator: ArgumentValidator
 | 
			
		||||
 | 
			
		||||
    private fun makeArgumentListOfSize(size: Int) =
 | 
			
		||||
        (0 until size).fold(Nil as Cons) { list, _ -> Cons(Nil, list) }
 | 
			
		||||
 | 
			
		||||
    @BeforeEach
 | 
			
		||||
    fun setUp() {
 | 
			
		||||
        validator = ArgumentValidator(FUNCTION_NAME)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun noConstraints_DoesNotThrowExceptionWithNoArguments() {
 | 
			
		||||
        validator.validate(makeArgumentListOfSize(0))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun noConstraints_DoesNotThrowExceptionWithOneArgument() {
 | 
			
		||||
        validator.validate(makeArgumentListOfSize(1))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun noConstraints_DoesNotThrowExceptionWithManyArguments() {
 | 
			
		||||
        validator.validate(makeArgumentListOfSize(20))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun tooFewArgumentsWithMinimumSet_ThrowsException() {
 | 
			
		||||
        validator.setMinimumNumberOfArguments(1)
 | 
			
		||||
 | 
			
		||||
        assertThrows(TooFewArgumentsException::class.java) {
 | 
			
		||||
            validator.validate(makeArgumentListOfSize(0))
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun tooManyArgumentsWithMaximumSet_ThrowsException() {
 | 
			
		||||
        validator.setMaximumNumberOfArguments(1)
 | 
			
		||||
 | 
			
		||||
        assertThrows(TooManyArgumentsException::class.java) {
 | 
			
		||||
            validator.validate(makeArgumentListOfSize(2))
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun exactNumberOfArguments_DoesNotThrowException() {
 | 
			
		||||
        validator.setExactNumberOfArguments(5)
 | 
			
		||||
        validator.validate(makeArgumentListOfSize(5))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun tooFewArgumentsWithExactSet_ThrowsException() {
 | 
			
		||||
        validator.setExactNumberOfArguments(3)
 | 
			
		||||
 | 
			
		||||
        assertThrows(TooFewArgumentsException::class.java) {
 | 
			
		||||
            validator.validate(makeArgumentListOfSize(2))
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun tooManyArgumentsWithExactSet_ThrowsException() {
 | 
			
		||||
        validator.setExactNumberOfArguments(3)
 | 
			
		||||
 | 
			
		||||
        assertThrows(TooManyArgumentsException::class.java) {
 | 
			
		||||
            validator.validate(makeArgumentListOfSize(4))
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun tooManyArgumentsException_HasCorrectAttributes() {
 | 
			
		||||
        assertIsErrorWithMessage(TooManyArgumentsException(FUNCTION_NAME, Nil))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun tooFewArgumentsException_HasCorrectAttributes() {
 | 
			
		||||
        assertIsErrorWithMessage(TooFewArgumentsException(FUNCTION_NAME, Nil))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun badArgumentTypeException_HasCorrectAttributes() {
 | 
			
		||||
        assertIsErrorWithMessage(BadArgumentTypeException(FUNCTION_NAME, Nil, SExpression::class.java))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun correctArgumentType_DoesNotThrowException() {
 | 
			
		||||
        validator.setEveryArgumentExpectedType(Nil::class.java)
 | 
			
		||||
        validator.validate(makeArgumentListOfSize(1))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun badArgumentType_ThrowsException() {
 | 
			
		||||
        validator.setEveryArgumentExpectedType(LispString::class.java)
 | 
			
		||||
 | 
			
		||||
        assertThrows(BadArgumentTypeException::class.java) {
 | 
			
		||||
            validator.validate(makeArgumentListOfSize(1))
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun correctFirstAndRestArgumentTypes_DoesNotThrowException() {
 | 
			
		||||
        val argumentList = Cons(T, Cons(Nil, Nil))
 | 
			
		||||
 | 
			
		||||
        validator.setFirstArgumentExpectedType(Symbol::class.java)
 | 
			
		||||
        validator.setTrailingArgumentExpectedType(Cons::class.java)
 | 
			
		||||
        validator.validate(argumentList)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun badFirstArgumentType_ThrowsException() {
 | 
			
		||||
        val argumentList = Cons(T, Cons(Nil, Nil))
 | 
			
		||||
 | 
			
		||||
        validator.setFirstArgumentExpectedType(Cons::class.java)
 | 
			
		||||
        validator.setTrailingArgumentExpectedType(Cons::class.java)
 | 
			
		||||
 | 
			
		||||
        assertThrows(BadArgumentTypeException::class.java) {
 | 
			
		||||
            validator.validate(argumentList)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun badTrailingArgumentType_ThrowsException() {
 | 
			
		||||
        val argumentList = Cons(T, Cons(Nil, Nil))
 | 
			
		||||
 | 
			
		||||
        validator.setFirstArgumentExpectedType(Symbol::class.java)
 | 
			
		||||
        validator.setTrailingArgumentExpectedType(Symbol::class.java)
 | 
			
		||||
 | 
			
		||||
        assertThrows(BadArgumentTypeException::class.java) {
 | 
			
		||||
            validator.validate(argumentList)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun expectedTypeWithNoDisplayName_DoesNotCauseNPE() {
 | 
			
		||||
        val argumentList = Cons(T, Cons(Nil, Nil))
 | 
			
		||||
        val withoutDisplayName = object : SExpression() {
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        validator.setEveryArgumentExpectedType(withoutDisplayName.javaClass)
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            validator.validate(argumentList)
 | 
			
		||||
        } catch (e: BadArgumentTypeException) {
 | 
			
		||||
            assertIsErrorWithMessage(e)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun givenDottedArgumentList_ThrowsException() {
 | 
			
		||||
        val argumentList = Cons(T, T)
 | 
			
		||||
 | 
			
		||||
        assertThrows(DottedArgumentListException::class.java) {
 | 
			
		||||
            validator.validate(argumentList)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun givenLargeDottedArgumentList_ThrowsException() {
 | 
			
		||||
        val argumentList = Cons(T, Cons(T, T))
 | 
			
		||||
 | 
			
		||||
        assertThrows(DottedArgumentListException::class.java) {
 | 
			
		||||
            validator.validate(argumentList)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun dottedArgumentListException_HasCorrectAttributes() {
 | 
			
		||||
        assertIsErrorWithMessage(DottedArgumentListException(FUNCTION_NAME, Nil))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun excludedFirstArgumentType_DoesNotAffectTrailingArguments() {
 | 
			
		||||
        validator.setFirstArgumentExcludedType(Nil::class.java)
 | 
			
		||||
        validator.validate(Cons(T, Cons(Nil, Nil)))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun excludedTrailingArgumentType_DoesNotAffectFirstArgument() {
 | 
			
		||||
        validator.setTrailingArgumentExcludedType(Nil::class.java)
 | 
			
		||||
        validator.validate(Cons(Nil, Cons(T, Nil)))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun excludedFirstArgumentType_ThrowsException() {
 | 
			
		||||
        validator.setFirstArgumentExcludedType(Nil::class.java)
 | 
			
		||||
 | 
			
		||||
        assertThrows(BadArgumentTypeException::class.java) {
 | 
			
		||||
            validator.validate(Cons(Nil, Cons(T, Nil)))
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun excludedTrailingArgumentType_ThrowsException() {
 | 
			
		||||
        validator.setTrailingArgumentExcludedType(Nil::class.java)
 | 
			
		||||
 | 
			
		||||
        assertThrows(BadArgumentTypeException::class.java) {
 | 
			
		||||
            validator.validate(Cons(T, Cons(Nil, Nil)))
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun excludedArgumentType_ThrowsExceptionOnFirstArgument() {
 | 
			
		||||
        validator.setEveryArgumentExcludedType(Nil::class.java)
 | 
			
		||||
 | 
			
		||||
        assertThrows(BadArgumentTypeException::class.java) {
 | 
			
		||||
            validator.validate(Cons(Nil, Cons(T, Nil)))
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun excludedArgumentType_ThrowsExceptionOnTrailingArgument() {
 | 
			
		||||
        validator.setEveryArgumentExcludedType(Nil::class.java)
 | 
			
		||||
 | 
			
		||||
        assertThrows(BadArgumentTypeException::class.java) {
 | 
			
		||||
            validator.validate(Cons(T, Cons(Nil, Nil)))
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user