Skip to content

Commit fc0710f

Browse files
committed
Merge PR hamcrest#63 - A detailed description for iterable values
2 parents 13c37a0 + 5098600 commit fc0710f

File tree

3 files changed

+31
-13
lines changed

3 files changed

+31
-13
lines changed

hamcrest-core/src/main/java/org/hamcrest/BaseDescription.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ public Description appendValue(Object value) {
4949
append("F>");
5050
} else if (value.getClass().isArray()) {
5151
appendValueList("[",", ","]", new ArrayIterator(value));
52+
} else if (value instanceof Iterable) {
53+
appendValueList("<[",", ","]>", ((Iterable) value).iterator());
5254
} else {
5355
append('<');
5456
append(descriptionOf(value));
@@ -66,8 +68,9 @@ private String descriptionOf(Object value) {
6668
}
6769
}
6870

71+
@SafeVarargs
6972
@Override
70-
public <T> Description appendValueList(String start, String separator, String end, T... values) {
73+
public final <T> Description appendValueList(String start, String separator, String end, T... values) {
7174
return appendValueList(start, separator, end, Arrays.asList(values));
7275
}
7376

hamcrest-core/src/test/java/org/hamcrest/BaseDescriptionTest.java

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import org.junit.Test;
44

5+
import java.util.Arrays;
6+
import java.util.Iterator;
7+
58
import static org.junit.Assert.assertEquals;
69

710
public final class BaseDescriptionTest {
@@ -14,63 +17,75 @@ public final class BaseDescriptionTest {
1417
}
1518
};
1619

17-
@Test public void
20+
@Test public void
1821
describesAppendedNullValue() {
1922
baseDescription.appendValue(null);
2023
assertEquals("null", result.toString());
2124
}
2225

23-
@Test public void
26+
@Test public void
2427
quotesAppendedStringValue() {
2528
baseDescription.appendValue("foo");
2629
assertEquals("\"foo\"", result.toString());
2730
}
2831

29-
@Test public void
32+
@Test public void
3033
quotesAppendedCharacterValue() {
3134
baseDescription.appendValue('f');
3235
assertEquals("\"f\"", result.toString());
3336
}
3437

35-
@Test public void
38+
@Test public void
3639
bracketsAppendedShortValue() {
3740
baseDescription.appendValue(Short.valueOf("2"));
3841
assertEquals("<2s>", result.toString());
3942
}
4043

41-
@Test public void
44+
@Test public void
4245
bracketsAppendedLongValue() {
4346
baseDescription.appendValue(Long.valueOf("2"));
4447
assertEquals("<2L>", result.toString());
4548
}
4649

47-
@Test public void
50+
@Test public void
4851
bracketsAppendedFloatValue() {
4952
baseDescription.appendValue(Float.valueOf("1.2"));
5053
assertEquals("<1.2F>", result.toString());
5154
}
5255

53-
@Test public void
56+
@Test public void
5457
describesAppendedArrayValue() {
5558
baseDescription.appendValue(new String[] {"2", "3"});
5659
assertEquals("[\"2\", \"3\"]", result.toString());
5760
}
5861

59-
@Test public void
62+
@Test
63+
public void
64+
describesAppendedIterableValue() {
65+
baseDescription.appendValue(new Iterable<String>() {
66+
@Override
67+
public Iterator<String> iterator() {
68+
return Arrays.asList("2", "3").iterator();
69+
}
70+
});
71+
assertEquals("<[\"2\", \"3\"]>", result.toString());
72+
}
73+
74+
@Test public void
6075
bracketsAppendedObjectValue() {
6176
final Object value = new Object();
6277
baseDescription.appendValue(value);
6378
assertEquals("<" + value.toString() + ">", result.toString());
6479
}
65-
66-
@Test public void
80+
81+
@Test public void
6782
safelyDescribesAppendedValueOfObjectWhoseToStringThrowsAnException() {
6883
final Object value = new Object() {
6984
@Override public String toString() {
7085
throw new UnsupportedOperationException();
7186
}
7287
};
73-
88+
7489
final String expected = value.getClass().getName() + "@" + Integer.toHexString(value.hashCode());
7590
baseDescription.appendValue(value);
7691
assertEquals("<" + expected + ">", result.toString());

hamcrest-library/src/test/java/org/hamcrest/collection/IsEmptyCollectionTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public void testMatchesAnEmptyCollection() {
2222
}
2323

2424
public void testDoesNotMatchACollectionWithAnItem() {
25-
assertMismatchDescription("<[one, three]>", is(createMatcher()), collectionOfValues());
25+
assertMismatchDescription("<[\"one\", \"three\"]>", is(createMatcher()), collectionOfValues());
2626
}
2727

2828
public void testHasAReadableDescription() {

0 commit comments

Comments
 (0)