@Test void testProcessShouldReplaceSingleValueRangeSubscriptArgumentPlaceholderUsingOnlyNegativeIndices() { // Given: final List<Object> arguments = list('a', 1, 2l, 3.3, "four", 'f', 6, 7l, 8.8, 9.99f); ReplacementData data = ReplacementData.of(tenParamMethod, 0, arguments); // When: String result = underTest.process(data, "%na[-3..-3]"); // Then: assertThat(result).isEqualTo("l7=7"); }
@Test void testFormatAllShouldHandleSingleValueCorrectly() { // Given: final List<Object> arguments = list(12.45); // When: String result = underTest.formatAll(paramsWith(1), arguments); // Then: assertThat(result).isEqualTo("c0=12.45"); }
@Test void testFormatAllReplacesNonPrintableCharactersWithPredefinedPrintableCounterpartEvenIfWithText() { // Given: final List<Object> arguments = list("test\btest\uFFFF"); // When: String result = underTest.formatAll(paramsWith(1), arguments); // Then: assertThat(result).isEqualTo("c0=test" + STRING_NON_PRINTABLE + "test" + STRING_NON_PRINTABLE); }
@Test void testFormatAllHandlePrimitiveCharTypeArrayCorrectly() { // Given: final List<Object> arguments = list(new char[] { 'a', '0' }); // When: String result = underTest.formatAll(paramsWith(1), arguments); // Then: assertThat(result).isEqualTo("c0=[a, 0]"); }
@Test void testProcessShouldReplaceWholeWithoutFirstRangeSubscriptArgumentPlaceholder() { // Given: final List<Object> arguments = list('a', 1, 2l, 3.3, "four", 'f', 6, 7l, 8.8, 9.99f); ReplacementData data = ReplacementData.of(tenParamMethod, 0, arguments); // When: String result = underTest.process(data, "%na[1..-1]"); // Then: assertThat(result).isEqualTo("i1=1, l2=2, d3=3.3, s4=four, c5=f, i6=6, l7=7, d8=8.8, f9=9.99"); }
@Test void testFormatAllReplacesLineFeedsWithTheirPrintableCounterpartEvenIfWithText() { // Given: final List<Object> arguments = list("1\n2\n3"); // When: String result = underTest.formatAll(paramsWith(1), arguments); // Then: assertThat(result).isEqualTo("c0=1\\n2\\n3"); }
@Test void testFormatAllReplacesNonPrintableCharactersWithPredefinedPrintableCounterpart() { // Given: final List<Object> arguments = list("\u001F"); // When: String result = underTest.formatAll(paramsWith(1), arguments); // Then: assertThat(result).isEqualTo("c0=" + STRING_NON_PRINTABLE); }
@Test void testFormatAllReplacesCarriageReturnsAndLineFeedsWithTheirPrintableCounterpart() { // Given: final List<Object> arguments = list("A very\r\nlong text\nwith multiple\rdifferent newline\n\rvariations."); // When: String result = underTest.formatAll(paramsWith(1), arguments); // Then: assertThat(result).isEqualTo("c0=A very\\r\\nlong text\\nwith multiple\\rdifferent newline\\n\\rvariations."); }
@Test void testFormatAllHandleFurtherNestedArraysCorrectly() { // Given: final List<Object> arguments = list(new Object[] { 2, new char[] { 'a', 'b' }, new String[] { "a", "b" } }); // When: String result = underTest.formatAll(paramsWith(2), arguments); // Then: assertThat(result).isEqualTo("c0=[2, [a, b], [a, b]]"); }
@Test void testFormatAllHandleEnumsCorrectly() { // Given: final List<Object> arguments = list(Thread.State.RUNNABLE); // When: String result = underTest.formatAll(paramsWith(1), arguments); // Then: assertThat(result).isEqualTo("c0=RUNNABLE"); }
@Test void testProcessShouldReplaceWholeRangeSubscriptArgumentPlaceholderUsingOnlyPositiveIndices() { // Given: final List<Object> arguments = list('a', 1, 2l, 3.3, "four", 'f', 6, 7l, 8.8, 9.99f); ReplacementData data = ReplacementData.of(tenParamMethod, 0, arguments); // When: String result = underTest.process(data, "%na[0..9]"); // Then: assertThat(result).isEqualTo("c0=a, i1=1, l2=2, d3=3.3, s4=four, c5=f, i6=6, l7=7, d8=8.8, f9=9.99"); }
@Test void testProcessShouldReplacePartialRangeSubscriptArgumentPlaceholderContainingJustOneValueUsingOnlyPositiveIndices() { // Given: final List<Object> arguments = list('a', 1, 2l, 3.3, "four", 'f', 6, 7l, 8.8, 9.99f); ReplacementData data = ReplacementData.of(tenParamMethod, 0, arguments); // When: String result = underTest.process(data, "%na[4..6]"); // Then: assertThat(result).isEqualTo("s4=four, c5=f, i6=6"); }
@Test void testProcessShouldReplacePartialRangeSubscriptArgumentPlaceholderContainingJustOneValueUsingMixedIndices() { // Given: final List<Object> arguments = list('a', 1, 2l, 3.3, "four", 'f', 6, 7l, 8.8, 9.99f); ReplacementData data = ReplacementData.of(tenParamMethod, 0, arguments); // When: String result = underTest.process(data, "%na[4..-4]"); // Then: assertThat(result).isEqualTo("s4=four, c5=f, i6=6"); }
@Test void testFormatAllShouldReturnAllThreeValuesCorrectly() { // Given: final List<Object> arguments = list("test", 1, 2L); // When: String result = underTest.formatAll(paramsWith(3), arguments); // Then: assertThat(result).isEqualTo("c0=test, i1=1, l2=2"); }
@Test void testFormatAllReplacesNullTerminatorWithTheirPrintableCounterpart() { // Given: final List<Object> arguments = list("\0"); // When: String result = underTest.formatAll(paramsWith(1), arguments); // Then: assertThat(result).isEqualTo("c0=\\0"); }
@Test void testFormatAllReplacesNullTerminatorWithTheirPrintableCounterpartEvenIfWithText() { // Given: final List<Object> arguments = list("test\0test\0"); // When: String result = underTest.formatAll(paramsWith(1), arguments); // Then: assertThat(result).isEqualTo("c0=test\\0test\\0"); }
@Test void testFormatAllHandlePrimitiveShortTypeArrayCorrectly() { // Given: final List<Object> arguments = list(new short[] { 1024 }); // When: String result = underTest.formatAll(paramsWith(1), arguments); // Then: assertThat(result).isEqualTo("c0=[1024]"); }
@Test void testFormatAllHandlePrimitiveIntTypeArrayCorrectly() { // Given: final List<Object> arguments = list(new int[] { 11, 2 }); // When: String result = underTest.formatAll(paramsWith(1), arguments); // Then: assertThat(result).isEqualTo("c0=[11, 2]"); }
@Test void testFormatAllHandleObjectCorrectly() { // Given: final List<Object> arguments = list(new Object()); // When: String result = underTest.formatAll(paramsWith(1), arguments); // Then: assertThat(result).matches("c0=java.lang.Object@[0-9a-f]+"); }