package com.googlecode.totallylazy.predicates;

import org.junit.Test;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;

@SuppressWarnings("unchecked")
public class TypeSafePredicateTest {
    @Test
    public void willReturnFalseWhenPassedTheWrongClass() {
        Predicate predicate = new StringTypeSafePredicate();
        assertThat(predicate.matches(1), is(false));
    }

    @Test
    public void willPassThroughNullValues() {
        assertThat(new StringTypeSafePredicate().matches(null), is(true));
    }

    @Test
    public void willPassThroughValuesOfTheCorrectType() {
        assertThat(new StringTypeSafePredicate().matches("some string"), is(true));
    }

    private static class StringTypeSafePredicate extends TypeSafePredicate<String> {
        @Override
        protected boolean matchesSafely(String other) {
            return true;
        }
    }
}
