1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.text.lookup;
19
20 import static org.junit.jupiter.api.Assertions.assertEquals;
21 import static org.junit.jupiter.api.Assertions.assertFalse;
22 import static org.junit.jupiter.api.Assertions.assertNull;
23 import static org.junit.jupiter.api.Assertions.assertThrows;
24 import static org.mockito.Mockito.spy;
25 import static org.mockito.Mockito.when;
26
27 import java.io.UnsupportedEncodingException;
28 import java.nio.charset.StandardCharsets;
29
30 import org.junit.jupiter.api.Test;
31
32
33
34
35 class UrlDecoderStringLookupTest {
36
37 private static final String DATA = "Hello World!";
38
39 @Test
40 void testAllPercent() {
41 assertEquals(DATA, UrlDecoderStringLookup.INSTANCE.apply("Hello%20World%21"));
42 }
43
44 @Test
45 void testExceptionGettingString() throws UnsupportedEncodingException {
46 final UrlDecoderStringLookup mockLookup = spy(UrlDecoderStringLookup.class);
47 when(mockLookup.decode(DATA, StandardCharsets.UTF_8.displayName()))
48 .thenThrow(UnsupportedEncodingException.class);
49 assertThrows(IllegalArgumentException.class, () -> mockLookup.apply(DATA));
50 }
51
52 @Test
53 void testExclamation() {
54 assertEquals(DATA, UrlDecoderStringLookup.INSTANCE.apply("Hello%20World!"));
55 }
56
57 @Test
58 void testMalformedEscapeReturnsNull() {
59 assertNull(UrlDecoderStringLookup.INSTANCE.apply("%"));
60 assertNull(UrlDecoderStringLookup.INSTANCE.apply("%E0%"));
61 }
62
63 @Test
64 void testNull() {
65 assertNull(UrlDecoderStringLookup.INSTANCE.apply(null));
66 }
67
68 @Test
69 void testPlus() {
70 assertEquals(DATA, UrlDecoderStringLookup.INSTANCE.apply("Hello+World!"));
71 }
72
73 @Test
74 void testToString() {
75
76 assertFalse(UrlDecoderStringLookup.INSTANCE.toString().isEmpty());
77 }
78
79 }