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.FormattableFlags;
35 import java.util.Locale;
36 import org.hamcrest.MatcherAssert;
37 import org.hamcrest.Matchers;
38 import org.junit.jupiter.api.Test;
39 import org.junit.jupiter.params.ParameterizedTest;
40 import org.junit.jupiter.params.provider.MethodSource;
41
42
43
44
45
46
47
48 final class NanoDecorTest {
49
50 @ParameterizedTest
51 @MethodSource("params")
52 void testPrintsRight(final long nano, final String text,
53 final int flags, final int width, final int precision) {
54 Locale.setDefault(Locale.US);
55 MatcherAssert.assertThat(
56 new Printed(new NanoDecor(nano), flags, width, precision),
57 Matchers.hasToString(text)
58 );
59 }
60
61 @ParameterizedTest
62 @MethodSource("params")
63 void testLogsRight(final long nano, final String text,
64 final int flags, final int width, final int precision) {
65 Locale.setDefault(Locale.US);
66 MatcherAssert.assertThat(
67 new Logged(new NanoDecor(nano), flags, width, precision),
68 Matchers.hasToString(text)
69 );
70 }
71
72 @Test
73 void testPrintsNullRight() {
74 MatcherAssert.assertThat(
75 new Logged(new NanoDecor(null), 0, 0, 0),
76 Matchers.hasToString("NULL")
77 );
78 }
79
80
81
82
83
84 @SuppressWarnings("PMD.UnusedPrivateMethod")
85 private static Collection<Object[]> params() {
86 return Arrays.asList(
87 new Object[][] {
88
89
90 {13L, "13ns", 0, 0, -1},
91 {13L, "13.0ns", 0, 0, 1},
92 {25L, "25.00ns", 0, 0, 2},
93 {234L, "234.0ns", 0, 0, 1},
94 {1024L, "1µs", 0, 0, 0},
95 {1056L, "1.056µs", 0, 0, 3},
96 {9022L, "9.02µs", 0, 0, 2},
97 {53_111L, "53.11µs ", FormattableFlags.LEFT_JUSTIFY, 10, 2},
98 {53_156L, " 53µs", 0, 7, 0},
99 {87_090_432L, " 87ms", 0, 6, 0},
100 {87_090_543L, "87.09ms", 0, 0, 2},
101 {87_090_548L, "87.0905ms", 0, 0, 4},
102 {6_001_001_001L, "6.0010s", 0, 0, 4},
103 {122_001_001_001L, " 2MIN", FormattableFlags.UPPERCASE, 6, 0},
104 {3_789_001_001_001L, "63.15002min", 0, 0, 5},
105 {3_789_002_002_002L, "63.2min", 0, 0, 1},
106 {3_789_003_003_003L, "63min", 0, 0, 0},
107 {342_000_004_004_004L, "5700min", 0, 0, 0},
108 }
109 );
110 }
111
112 }