1 /*
2 * Copyright (c) 2012-2024, jcabi.com
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met: 1) Redistributions of source code must retain the above
8 * copyright notice, this list of conditions and the following
9 * disclaimer. 2) Redistributions in binary form must reproduce the above
10 * copyright notice, this list of conditions and the following
11 * disclaimer in the documentation and/or other materials provided
12 * with the distribution. 3) Neither the name of the jcabi.com nor
13 * the names of its contributors may be used to endorse or promote
14 * products derived from this software without specific prior written
15 * permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
19 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
21 * THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
22 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
28 * OF THE POSSIBILITY OF SUCH DAMAGE.
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 * Test case for {@link TypeDecor}.
42 *
43 * @since 0.1
44 * @checkstyle ParameterNumberCheck (500 lines)
45 */
46 final class TypeDecorTest {
47
48 @ParameterizedTest
49 @MethodSource("params")
50 void testPrintsRight(final Object list, 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 TypeDecor(list), flags, width, precision),
55 Matchers.hasToString(text)
56 );
57 }
58
59 @ParameterizedTest
60 @MethodSource("params")
61 void testLogsRight(final Object list, 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 TypeDecor(list), flags, width, precision),
66 Matchers.hasToString(text)
67 );
68 }
69
70 /**
71 * Params for this parametrized test.
72 * @return Array of arrays of params for ctor
73 */
74 @SuppressWarnings("PMD.UnusedPrivateMethod")
75 private static Collection<Object[]> params() {
76 return Arrays.asList(
77 new Object[][] {
78 {"testing", "java.lang.String", 0, 0, 0},
79 {null, "NULL", 0, 0, 0},
80 {1.0d, "java.lang.Double", 0, 0, 0},
81 }
82 );
83 }
84 }