1c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinpackage org.hamcrest.collection; 2c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 3c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport org.hamcrest.AbstractMatcherTest; 4c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport org.hamcrest.Matcher; 5c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport org.hamcrest.MatcherAssert; 6c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 7c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport java.util.ArrayList; 8c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport java.util.Collection; 9c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport java.util.List; 10c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 11c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport static java.util.Arrays.asList; 12c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport static org.hamcrest.collection.IsCollectionWithSize.hasSize; 13c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport static org.hamcrest.core.IsEqual.equalTo; 14c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 15c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinpublic class IsCollectionWithSizeTest extends AbstractMatcherTest { 16c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 17c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin @Override 18c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin protected Matcher<?> createMatcher() { 19c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin return hasSize(7); 20c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin } 21c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 22c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin public void testMatchesWhenSizeIsCorrect() { 23c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin assertMatches("correct size", hasSize(equalTo(2)), asList(null, null)); 24c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin assertMismatchDescription("collection size was <3>", hasSize(equalTo(2)), asList(null, null, null)); 25c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin } 26c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 27c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin public void testMatchesCollectionWhenSizeIsCorrectUsingObjectElementType() { 28c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin Collection<Object> list = asList(null, null); 29c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin assertMatches("correct size", hasSize(equalTo(2)), list); 30c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin assertMismatchDescription("collection size was <2>", hasSize(equalTo(3)), list); 31c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin } 32c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 33c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin public void testMatchesCollectionWhenSizeIsCorrectUsingStringElementType() { 34c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin Collection<String> list = asList("a", "b"); 35c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin assertMatches("correct size", hasSize(equalTo(2)), list); 36c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin assertMismatchDescription("collection size was <2>", hasSize(equalTo(3)), list); 37c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin } 38c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 39c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin public void testMatchesCollectionWhenSizeIsCorrectUsingWildcardElementType() { 40c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin Collection<?> list = asList("a", "b"); 41c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin assertMatches("correct size", hasSize(equalTo(2)), list); 42c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin assertMismatchDescription("collection size was <2>", hasSize(equalTo(3)), list); 43c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin } 44c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 45c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin public void testMatchesListWhenSizeIsCorrectUsingObjectElementType() { 46c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin List<Object> list = asList(null, null); 47c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin assertMatches("correct size", hasSize(equalTo(2)), list); 48c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin assertMismatchDescription("collection size was <2>", hasSize(equalTo(3)), list); 49c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin } 50c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 51c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin public void testMatchesListWhenSizeIsCorrectUsingStringElementType() { 52c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin List<String> list = asList("a", "b"); 53c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin assertMatches("correct size", hasSize(equalTo(2)), list); 54c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin assertMismatchDescription("collection size was <2>", hasSize(equalTo(3)), list); 55c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin } 56c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 57c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin public void testMatchesListWhenSizeIsCorrectUsingWildcardElementType() { 58c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin List<?> list = asList("a", "b"); 59c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin assertMatches("correct size", hasSize(equalTo(2)), list); 60c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin assertMismatchDescription("collection size was <2>", hasSize(equalTo(3)), list); 61c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin } 62c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 63c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin public void testProvidesConvenientShortcutForHasSizeEqualTo() { 64c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin assertMatches("correct size", hasSize(2), asList(null, null)); 65c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin assertMismatchDescription("collection size was <3>", hasSize(2), asList(null, null, null)); 66c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin } 67c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 68c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin public void testHasAReadableDescription() { 69c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin assertDescription("a collection with size <3>", hasSize(equalTo(3))); 70c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin } 71c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 72c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin public void testCompilesWithATypedCollection() { 73c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin // To prove Issue 43 74c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin ArrayList<String> arrayList = new ArrayList<String>(); 75c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin MatcherAssert.assertThat(arrayList, hasSize(0)); 76c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin } 77c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin} 78