1 package org.hamcrest; 2 3 import org.junit.Test; 4 5 import static org.junit.Assert.assertEquals; 6 7 public final class BaseDescriptionTest { 8 9 private final StringBuilder result = new StringBuilder(); 10 11 private final BaseDescription baseDescription = new BaseDescription() { 12 @Override protected void append(char c) { 13 result.append(c); 14 } 15 }; 16 17 @Test public void 18 describesAppendedNullValue() { 19 baseDescription.appendValue(null); 20 assertEquals("null", result.toString()); 21 } 22 23 @Test public void 24 quotesAppendedStringValue() { 25 baseDescription.appendValue("foo"); 26 assertEquals("\"foo\"", result.toString()); 27 } 28 29 @Test public void 30 quotesAppendedCharacterValue() { 31 baseDescription.appendValue('f'); 32 assertEquals("\"f\"", result.toString()); 33 } 34 35 @Test public void 36 bracketsAppendedShortValue() { 37 baseDescription.appendValue(Short.valueOf("2")); 38 assertEquals("<2s>", result.toString()); 39 } 40 41 @Test public void 42 bracketsAppendedLongValue() { 43 baseDescription.appendValue(Long.valueOf("2")); 44 assertEquals("<2L>", result.toString()); 45 } 46 47 @Test public void 48 bracketsAppendedFloatValue() { 49 baseDescription.appendValue(Float.valueOf("1.2")); 50 assertEquals("<1.2F>", result.toString()); 51 } 52 53 @Test public void 54 describesAppendedArrayValue() { 55 baseDescription.appendValue(new String[] {"2", "3"}); 56 assertEquals("[\"2\", \"3\"]", result.toString()); 57 } 58 59 @Test public void 60 bracketsAppendedObjectValue() { 61 final Object value = new Object(); 62 baseDescription.appendValue(value); 63 assertEquals("<" + value.toString() + ">", result.toString()); 64 } 65 66 @Test public void 67 safelyDescribesAppendedValueOfObjectWhoseToStringThrowsAnException() { 68 final Object value = new Object() { 69 @Override public String toString() { 70 throw new UnsupportedOperationException(); 71 } 72 }; 73 74 final String expected = value.getClass().getName() + "@" + Integer.toHexString(value.hashCode()); 75 baseDescription.appendValue(value); 76 assertEquals("<" + expected + ">", result.toString()); 77 } 78 } 79