1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 package com.jcabi.log;
31
32 import java.util.Arrays;
33 import java.util.Collection;
34 import java.util.Locale;
35 import org.hamcrest.MatcherAssert;
36 import org.hamcrest.Matchers;
37 import org.junit.jupiter.params.ParameterizedTest;
38 import org.junit.jupiter.params.provider.MethodSource;
39
40
41
42
43
44
45
46 final class ObjectDecorTest {
47
48 @ParameterizedTest
49 @MethodSource("params")
50 void testPrintsRight(final Object obj, final String text,
51 final int flags, final int width, final int precision) {
52 Locale.setDefault(Locale.US);
53 MatcherAssert.assertThat(
54 new Printed(new ObjectDecor(obj), flags, width, precision),
55 Matchers.hasToString(Matchers.containsString(text))
56 );
57 }
58
59 @ParameterizedTest
60 @MethodSource("params")
61 void testLogsRight(final Object obj, final String text,
62 final int flags, final int width, final int precision) {
63 Locale.setDefault(Locale.US);
64 MatcherAssert.assertThat(
65 new Logged(new ObjectDecor(obj), flags, width, precision),
66 Matchers.hasToString(Matchers.containsString(text))
67 );
68 }
69
70
71
72
73
74 @SuppressWarnings("PMD.UnusedPrivateMethod")
75 private static Collection<Object[]> params() {
76 return Arrays.asList(
77 new Object[][] {
78 {null, "NULL", 0, 0, 0},
79 {new SecretDecor("x"), "{secret: \"x\"", 0, 0, 0},
80 {new ObjectDecorTest.Foo(1, "one"), "{num: \"1\", name: \"one\"", 0, 0, 0},
81 {
82 new Object[]{
83 new ObjectDecorTest.Foo(0, "zero"),
84 new ObjectDecorTest.Foo(2, "two"),
85 },
86 "[{num: \"0\", name: \"zero\"",
87 0, 0, 0,
88 },
89 {
90 new Object[]{
91 new ObjectDecorTest.Foo(0, "abc"),
92 new ObjectDecorTest.Foo(2, "cde"),
93 },
94 ", {num: \"2\", name: \"cde\"",
95 0, 0, 0,
96 },
97 {
98 new Object[] {new Object[] {null}, }, "[[NULL", 0, 0, 0,
99 },
100 }
101 );
102 }
103
104
105
106
107
108
109 private static final class Foo {
110
111
112
113 @SuppressWarnings("unused")
114 private final transient int num;
115
116
117
118
119 @SuppressWarnings("unused")
120 private final transient String name;
121
122
123
124
125
126
127 Foo(final int number, final String nme) {
128 this.num = number;
129 this.name = nme;
130 }
131 }
132
133 }