@@ -0,0 +1,2222 @@
+package org.monospark.spongematchers.type;%0A%0Aimport static org.hamcrest.CoreMatchers.is;%0Aimport static org.junit.Assert.assertThat;%0Aimport static org.mockito.Mockito.mock;%0Aimport static org.mockito.Mockito.when;%0Aimport static org.monospark.spongematchers.testutil.HamcrestSpongeMatchers.matches;%0A%0Aimport org.junit.Test;%0Aimport org.monospark.spongematchers.matcher.SpongeMatcher;%0Aimport org.monospark.spongematchers.parser.SpongeMatcherParseException;%0Aimport org.monospark.spongematchers.parser.element.StringElement;%0Aimport org.monospark.spongematchers.parser.element.StringElementParser;%0Aimport org.spongepowered.api.block.BlockType;%0Aimport org.spongepowered.api.data.Property;%0A%0Aimport com.google.common.collect.ImmutableSet;%0A%0Apublic class BlockTypeTypeTest %7B%0A%0A    @Test%0A    public void canMatch_NonBlockTypeObject_ReturnsFalse() throws SpongeMatcherParseException %7B%0A        Object o = 5;%0A        %0A        boolean canMatch = MatcherType.BLOCK_TYPE.canMatch(o);%0A        %0A        assertThat(canMatch, is(false));%0A    %7D%0A    %0A    @Test%0A    public void canMatch_BlockTypeObject_ReturnsTrue() throws Exception %7B%0A        Object o = mock(BlockType.class);%0A%0A        boolean canMatch = MatcherType.BLOCK_TYPE.canMatch(o);%0A        %0A        assertThat(canMatch, is(true));%0A    %7D%0A%0A    @SuppressWarnings(%22unchecked%22)%0A    @Test%0A    public void parseMatcher_ValidMapElement_ReturnsCorrectSpongeMatcher() throws SpongeMatcherParseException %7B%0A        StringElement element = StringElementParser.parseStringElement(%22%7B'id':'minecraft:appl.',%22%0A                + %22'properties':%7B'test1':1,'test2':false%7D%7D%22);%0A%0A        SpongeMatcher%3CBlockType%3E matcher = MatcherType.BLOCK_TYPE.parseMatcher(element);%0A%0A        Property%3CString, Integer%3E p1 = mock(Property.class);%0A        when(p1.getKey()).thenReturn(%22test1%22);%0A        when(p1.getValue()).thenReturn(1);%0A        Property%3CString, Boolean%3E p2 = mock(Property.class);%0A        when(p2.getKey()).thenReturn(%22test2%22);%0A        when(p2.getValue()).thenReturn(false);%0A        BlockType type = mock(BlockType.class);%0A        when(type.getId()).thenReturn(%22minecraft:apple%22);%0A        when(type.getApplicableProperties()).thenReturn(ImmutableSet.of(p1, p2));%0A        assertThat(matcher, matches(type));%0A    %7D%0A%7D%0A

Add tests for BlockType matcher parsing