+ @Test
+ public void substringClass_givenNull_thenToStringIsNull() {
+ assertThat(new Substring(null), hasToString(equalTo("null")));
+ }
+
+ @Test
+ public void substringClass_givenAnObject_thenToStringIsEqualAndPassThrough() {
+ Object anyObject = mock(Object.class);
+ when(anyObject.toString()).thenReturn(TEST_OBJECT_JSON);
+
+ assertThat(new Substring(anyObject),
+ hasToString(sameInstance(TEST_OBJECT_JSON)));
+ }
+
+ @Test
+ public void substringClass_givenNotLongString_thenToStringIsNotTruncated() {
+ assertThat(new Substring(repeat(TEST_OBJECT_JSON, 100)),
+ hasToString(equalTo(repeat(TEST_OBJECT_JSON, 100))));
+ }
+
+ @Test
+ public void substringClass_givenLongString_thenToStringIsTruncatedToSize() {
+ int expectedLength = 1_000_000; // this is Substring's internal config
+ String headMarker = "head-";
+
+ assertThat(new Substring(headMarker + repeat("x", 2_000_000)),
+ hasToString(equalTo(headMarker + repeat("x", expectedLength - headMarker.length()))));
+ }
+