1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau.cp;
18
19 import static java.util.Locale.*;
20 import static org.apache.juneau.TestUtils.*;
21 import static org.junit.jupiter.api.Assertions.*;
22
23 import java.util.*;
24
25 import org.apache.juneau.*;
26 import org.apache.juneau.cp.test3.*;
27 import org.apache.juneau.cp.test4.*;
28 import org.junit.jupiter.api.*;
29
30 class Messages_Test extends TestBase {
31
32 @Test void a01_sameDirectory() {
33 var x1 = Messages.of(MessageBundleTest1.class);
34 assertEquals("MessageBundleTest1.properties", x1.getString("file"));
35 assertEquals("MessageBundleTest1_ja.properties", x1.forLocale(JAPANESE).getString("file"));
36 assertEquals("MessageBundleTest1_ja_JP.properties", x1.forLocale(JAPAN).getString("file"));
37 assertEquals("MessageBundleTest1.properties", x1.forLocale(CHINA).getString("file"));
38 assertEquals("MessageBundleTest1.properties", x1.forLocale((Locale)null).getString("file"));
39 }
40
41 @Test void a02_customName() {
42 var x1 = Messages.of(MessageBundleTest1.class, "files/Test1");
43 assertEquals("files/Test1.properties", x1.getString("file"));
44 assertEquals("files/Test1_ja.properties", x1.forLocale(JAPANESE).getString("file"));
45 assertEquals("files/Test1_ja_JP.properties", x1.forLocale(JAPAN).getString("file"));
46 assertEquals("files/Test1.properties", x1.forLocale(CHINA).getString("file"));
47 assertEquals("files/Test1.properties", x1.forLocale((Locale)null).getString("file"));
48
49 var x2 = Messages.create(MessageBundleTest1.class).name(null).build();
50 assertEquals("MessageBundleTest1.properties", x2.getString("file"));
51 assertEquals("MessageBundleTest1_ja.properties", x2.forLocale(JAPANESE).getString("file"));
52 assertEquals("MessageBundleTest1_ja_JP.properties", x2.forLocale(JAPAN).getString("file"));
53 assertEquals("MessageBundleTest1.properties", x2.forLocale(CHINA).getString("file"));
54 assertEquals("MessageBundleTest1.properties", x2.forLocale((Locale)null).getString("file"));
55 }
56
57 @Test void a03_customSearchPaths() {
58 var x = Messages.create(MessageBundleTest1.class).name("Test1").baseNames("{package}.files.{name}").build();
59 assertEquals("files/Test1.properties", x.getString("file"));
60 assertEquals("files/Test1_ja.properties", x.forLocale(JAPANESE).getString("file"));
61 assertEquals("files/Test1_ja_JP.properties", x.forLocale(JAPAN).getString("file"));
62 assertEquals("files/Test1.properties", x.forLocale(CHINA).getString("file"));
63 assertEquals("files/Test1.properties", x.forLocale((Locale)null).getString("file"));
64
65 var x2 = Messages.create(MessageBundleTest1.class).name("Test1").baseNames((String[])null).build();
66 assertEquals("{!file}", x2.getString("file"));
67 }
68
69 @Test void a04_customLocale() {
70 var x1 = Messages.create(MessageBundleTest1.class).locale(Locale.JAPAN).build();
71 assertEquals("MessageBundleTest1_ja_JP.properties", x1.getString("file"));
72 assertEquals("MessageBundleTest1_ja.properties", x1.forLocale(JAPANESE).getString("file"));
73 assertEquals("MessageBundleTest1_ja_JP.properties", x1.forLocale(JAPAN).getString("file"));
74 assertEquals("MessageBundleTest1.properties", x1.forLocale(CHINA).getString("file"));
75 assertEquals("MessageBundleTest1.properties", x1.forLocale((Locale)null).getString("file"));
76
77 var x2 = Messages.create(MessageBundleTest1.class).locale((Locale)null).build();
78 assertEquals("MessageBundleTest1.properties", x2.getString("file"));
79 assertEquals("MessageBundleTest1_ja.properties", x2.forLocale(JAPANESE).getString("file"));
80 assertEquals("MessageBundleTest1_ja_JP.properties", x2.forLocale(JAPAN).getString("file"));
81 assertEquals("MessageBundleTest1.properties", x2.forLocale(CHINA).getString("file"));
82 assertEquals("MessageBundleTest1.properties", x2.forLocale((Locale)null).getString("file"));
83 }
84
85 @Test void a05_nonExistentBundle() {
86 var x1 = Messages.of(MessageBundleTest1.class, "Bad");
87 assertEquals("{!file}", x1.getString("file"));
88 assertEquals("{!file}", x1.forLocale(JAPANESE).getString("file"));
89 assertEquals("{!file}", x1.forLocale(JAPAN).getString("file"));
90 assertEquals("{!file}", x1.forLocale(CHINA).getString("file"));
91 assertEquals("{!file}", x1.forLocale((Locale)null).getString("file"));
92
93 var x2 = x1.forLocale(JAPANESE);
94 assertEquals("{!file}", x2.getString("file"));
95 }
96
97 @Test void a06_parent() {
98 var x1 = Messages.create(MessageBundleTest1.class).name("Bad").parent(Messages.of(Test2.class)).build();
99 assertEquals("Test2.properties", x1.getString("file"));
100 assertEquals("Test2_ja.properties", x1.forLocale(JAPANESE).getString("file"));
101 assertEquals("Test2_ja_JP.properties", x1.forLocale(JAPAN).getString("file"));
102 assertEquals("Test2.properties", x1.forLocale(CHINA).getString("file"));
103 assertEquals("Test2.properties", x1.forLocale((Locale)null).getString("file"));
104
105 var x2 = Messages.create(MessageBundleTest1.class).parent(Messages.of(Test2.class)).build();
106 assertEquals("MessageBundleTest1.properties", x2.getString("file"));
107 assertEquals("bar", x2.getString("yyy"));
108 }
109
110 @Test void a07_nonExistentMessage() {
111 var x = Messages.create(MessageBundleTest1.class).name("Bad").parent(Messages.of(Test2.class)).build();
112 assertEquals("{!bad}", x.getString("bad"));
113 }
114
115 @Test void a08_nonExistentMessage() {
116 var x = Messages.create(MessageBundleTest1.class).name("Bad").parent(Messages.of(Test2.class)).build();
117 assertEquals("{!bad}", x.getString("bad"));
118 }
119
120 @Test void a09_keySet_prefix() {
121 var x = Messages.of(MessageBundleTest1.class);
122 assertList(new TreeSet<>(x.keySet("xx")), "xx", "xx.", "xx.foo");
123 }
124
125 @Test void a10_getString() {
126 var x = Messages.of(MessageBundleTest1.class);
127 assertEquals("foo bar", x.getString("foo","bar"));
128 assertEquals("bar bar", x.getString("bar","bar"));
129 assertEquals("{!baz}", x.getString("baz","bar"));
130 assertEquals("fooja bar", x.forLocale(JAPAN).getString("foo","bar"));
131 assertEquals("foo bar", x.forLocale(CHINA).getString("foo","bar"));
132 assertEquals("foo bar", x.forLocale(null).getString("foo","bar"));
133 assertEquals("baz", x.forLocale(JAPAN).getString("baz"));
134 assertEquals("{!baz}", x.forLocale(CHINA).getString("baz"));
135 assertEquals("{!baz}", x.forLocale(null).getString("baz"));
136 }
137
138 @Test void a11_findFirstString() {
139 var x = Messages.of(MessageBundleTest1.class);
140 assertEquals("foo {0}", x.findFirstString("baz","foo"));
141 assertNull(x.findFirstString("baz","baz"));
142 assertEquals("baz", x.forLocale(JAPAN).findFirstString("baz","foo"));
143 assertNull(x.forLocale(CHINA).findFirstString("baz","baz"));
144 assertNull(x.forLocale(null).findFirstString("baz","baz"));
145 }
146
147 @Test void a12_getKeys() {
148 var x = Messages.of(Test2.class);
149 assertList(x.getKeys(), "file", "yyy");
150 }
151
152 @Test void a13_toString() {
153 var x = Messages.of(Test2.class);
154 assertString("{file:'Test2.properties',yyy:'bar'}", x);
155 }
156 }