1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.ini4j.spi;
17
18 import org.easymock.EasyMock;
19
20 import org.ini4j.Config;
21 import org.ini4j.Ini4jCase;
22 import org.ini4j.Options;
23
24 import org.ini4j.sample.Dwarf;
25 import org.ini4j.sample.Dwarfs;
26
27 import org.ini4j.test.DwarfsData;
28 import org.ini4j.test.Helper;
29
30 import static org.junit.Assert.assertEquals;
31 import static org.junit.Assert.assertSame;
32
33 import org.junit.Test;
34
35 import java.io.PrintWriter;
36 import java.io.StringReader;
37 import java.io.StringWriter;
38
39 public class OptionsFormatterTest extends Ini4jCase
40 {
41 private static final String NL = System.getProperty("line.separator");
42 private static final String DUMMY = "dummy";
43
44 @Test public void testFormat() throws Exception
45 {
46 Options opts = Helper.newDwarfsOpt();
47 OptionsHandler handler = EasyMock.createMock(OptionsHandler.class);
48 Dwarf dwarf;
49 String prefix;
50
51 handler.startOptions();
52 handler.handleComment(Helper.HEADER_COMMENT);
53 handler.handleComment((String) EasyMock.anyObject());
54 dwarf = DwarfsData.dopey;
55 handler.handleOption(Dwarf.PROP_WEIGHT, DwarfsData.OPT_DOPEY_WEIGHT);
56 handler.handleOption(Dwarf.PROP_HEIGHT, DwarfsData.OPT_DOPEY_HEIGHT);
57 handler.handleOption(Dwarf.PROP_AGE, String.valueOf(dwarf.getAge()));
58 handler.handleOption(Dwarf.PROP_HOME_PAGE, String.valueOf(dwarf.getHomePage()));
59 handler.handleOption(Dwarf.PROP_HOME_DIR, String.valueOf(dwarf.getHomeDir()));
60 handler.handleOption(Dwarf.PROP_FORTUNE_NUMBER, "11");
61 handler.handleOption(Dwarf.PROP_FORTUNE_NUMBER, "33");
62 handler.handleOption(Dwarf.PROP_FORTUNE_NUMBER, "55");
63
64
65
66 handler.handleComment(" " + Dwarfs.PROP_BASHFUL);
67 dwarf = DwarfsData.bashful;
68 prefix = Dwarfs.PROP_BASHFUL + ".";
69
70 handler.handleOption(prefix + Dwarf.PROP_WEIGHT, String.valueOf(dwarf.getWeight()));
71 handler.handleOption(prefix + Dwarf.PROP_HEIGHT, String.valueOf(dwarf.getHeight()));
72 handler.handleOption(prefix + Dwarf.PROP_AGE, String.valueOf(dwarf.getAge()));
73 handler.handleOption(prefix + Dwarf.PROP_HOME_PAGE, String.valueOf(dwarf.getHomePage()));
74 handler.handleOption(prefix + Dwarf.PROP_HOME_DIR, String.valueOf(dwarf.getHomeDir()));
75 handler.handleComment(" " + Dwarfs.PROP_DOC);
76 dwarf = DwarfsData.doc;
77 prefix = Dwarfs.PROP_DOC + ".";
78
79 handler.handleOption(prefix + Dwarf.PROP_WEIGHT, String.valueOf(dwarf.getWeight()));
80 handler.handleOption(prefix + Dwarf.PROP_HEIGHT, String.valueOf(dwarf.getHeight()));
81 handler.handleOption(prefix + Dwarf.PROP_AGE, String.valueOf(dwarf.getAge()));
82 handler.handleOption(prefix + Dwarf.PROP_HOME_PAGE, String.valueOf(dwarf.getHomePage()));
83 handler.handleOption(prefix + Dwarf.PROP_HOME_DIR, String.valueOf(dwarf.getHomeDir()));
84 handler.handleComment(" " + Dwarfs.PROP_DOPEY);
85 dwarf = DwarfsData.dopey;
86 prefix = Dwarfs.PROP_DOPEY + ".";
87
88 handler.handleOption(prefix + Dwarf.PROP_WEIGHT, DwarfsData.OPT_DOPEY_WEIGHT);
89 handler.handleOption(prefix + Dwarf.PROP_HEIGHT, DwarfsData.OPT_DOPEY_HEIGHT);
90 handler.handleOption(prefix + Dwarf.PROP_AGE, String.valueOf(dwarf.getAge()));
91 handler.handleOption(prefix + Dwarf.PROP_HOME_PAGE, String.valueOf(dwarf.getHomePage()));
92 handler.handleOption(prefix + Dwarf.PROP_HOME_DIR, String.valueOf(dwarf.getHomeDir()));
93 handler.handleOption(prefix + Dwarf.PROP_FORTUNE_NUMBER, String.valueOf(dwarf.getFortuneNumber()[0]));
94 handler.handleOption(prefix + Dwarf.PROP_FORTUNE_NUMBER, String.valueOf(dwarf.getFortuneNumber()[1]));
95 handler.handleOption(prefix + Dwarf.PROP_FORTUNE_NUMBER, String.valueOf(dwarf.getFortuneNumber()[2]));
96 handler.handleComment(" " + Dwarfs.PROP_GRUMPY);
97 dwarf = DwarfsData.grumpy;
98 prefix = Dwarfs.PROP_GRUMPY + ".";
99
100 handler.handleOption(prefix + Dwarf.PROP_WEIGHT, String.valueOf(dwarf.getWeight()));
101 handler.handleOption(prefix + Dwarf.PROP_HEIGHT, DwarfsData.OPT_GRUMPY_HEIGHT);
102 handler.handleOption(prefix + Dwarf.PROP_AGE, String.valueOf(dwarf.getAge()));
103 handler.handleOption(prefix + Dwarf.PROP_HOME_PAGE, String.valueOf(dwarf.getHomePage()));
104 handler.handleOption(prefix + Dwarf.PROP_HOME_DIR, String.valueOf(dwarf.getHomeDir()));
105 handler.handleComment(" " + Dwarfs.PROP_HAPPY);
106 dwarf = DwarfsData.happy;
107 prefix = Dwarfs.PROP_HAPPY + ".";
108
109 handler.handleOption(prefix + Dwarf.PROP_WEIGHT, String.valueOf(dwarf.getWeight()));
110 handler.handleOption(prefix + Dwarf.PROP_HEIGHT, String.valueOf(dwarf.getHeight()));
111 handler.handleOption(prefix + Dwarf.PROP_AGE, String.valueOf(dwarf.getAge()));
112 handler.handleOption(prefix + Dwarf.PROP_HOME_PAGE, String.valueOf(dwarf.getHomePage()));
113 handler.handleOption(prefix + Dwarf.PROP_HOME_DIR, String.valueOf(dwarf.getHomeDir()));
114 handler.handleComment(" " + Dwarfs.PROP_SLEEPY);
115 dwarf = DwarfsData.sleepy;
116 prefix = Dwarfs.PROP_SLEEPY + ".";
117
118 handler.handleOption(prefix + Dwarf.PROP_WEIGHT, String.valueOf(dwarf.getWeight()));
119 handler.handleOption(prefix + Dwarf.PROP_HEIGHT, DwarfsData.OPT_SLEEPY_HEIGHT);
120 handler.handleOption(prefix + Dwarf.PROP_AGE, String.valueOf(dwarf.getAge()));
121 handler.handleOption(prefix + Dwarf.PROP_HOME_PAGE, String.valueOf(dwarf.getHomePage()));
122 handler.handleOption(prefix + Dwarf.PROP_HOME_DIR, String.valueOf(dwarf.getHomeDir()));
123 handler.handleOption(prefix + Dwarf.PROP_FORTUNE_NUMBER, String.valueOf(dwarf.getFortuneNumber()[0]));
124 handler.handleComment(" " + Dwarfs.PROP_SNEEZY);
125 dwarf = DwarfsData.sneezy;
126 prefix = Dwarfs.PROP_SNEEZY + ".";
127
128 handler.handleOption(prefix + Dwarf.PROP_WEIGHT, String.valueOf(dwarf.getWeight()));
129 handler.handleOption(prefix + Dwarf.PROP_HEIGHT, String.valueOf(dwarf.getHeight()));
130 handler.handleOption(prefix + Dwarf.PROP_AGE, String.valueOf(dwarf.getAge()));
131 handler.handleOption(prefix + Dwarf.PROP_HOME_PAGE, DwarfsData.OPT_SNEEZY_HOME_PAGE);
132 handler.handleOption(prefix + Dwarf.PROP_HOME_DIR, String.valueOf(dwarf.getHomeDir()));
133 handler.handleOption(prefix + Dwarf.PROP_FORTUNE_NUMBER, String.valueOf(dwarf.getFortuneNumber()[0]));
134 handler.handleOption(prefix + Dwarf.PROP_FORTUNE_NUMBER, String.valueOf(dwarf.getFortuneNumber()[1]));
135 handler.handleOption(prefix + Dwarf.PROP_FORTUNE_NUMBER, String.valueOf(dwarf.getFortuneNumber()[2]));
136 handler.handleOption(prefix + Dwarf.PROP_FORTUNE_NUMBER, String.valueOf(dwarf.getFortuneNumber()[3]));
137 handler.endOptions();
138
139
140 EasyMock.replay(handler);
141 verify(opts, handler);
142 }
143
144 @Test public void testNewInstance() throws Exception
145 {
146 StringWriter stringWriter;
147 PrintWriter printWriter;
148
149 ;
150 Config cfg = new Config();
151 OptionsFormatter instance;
152
153 stringWriter = new StringWriter();
154 instance = OptionsFormatter.newInstance(stringWriter, cfg);
155
156 instance.getOutput().print(DUMMY);
157 instance.getOutput().flush();
158 assertEquals(DUMMY, stringWriter.toString());
159 assertSame(cfg, instance.getConfig());
160
161
162 stringWriter = new StringWriter();
163 instance = OptionsFormatter.newInstance(stringWriter, cfg);
164
165 instance.getOutput().print(DUMMY);
166 instance.getOutput().flush();
167 assertEquals(DUMMY, stringWriter.toString());
168
169
170 printWriter = new PrintWriter(stringWriter);
171 instance = OptionsFormatter.newInstance(printWriter, cfg);
172
173 assertSame(printWriter, instance.getOutput());
174 }
175
176 @Test public void testWithStrictOperatorEmptyOptions() throws Exception
177 {
178 Config cfg = new Config();
179
180 cfg.setStrictOperator(true);
181 cfg.setEmptyOption(true);
182 Options opts = new Options();
183
184 opts.setConfig(cfg);
185 opts.put(Dwarf.PROP_AGE, DwarfsData.bashful.age);
186 opts.put(Dwarf.PROP_WEIGHT, null);
187 StringWriter writer = new StringWriter();
188
189 opts.store(writer);
190 StringBuilder exp = new StringBuilder();
191
192 exp.append(Dwarf.PROP_AGE);
193 exp.append('=');
194 exp.append(DwarfsData.bashful.age);
195 exp.append(NL);
196 exp.append(Dwarf.PROP_WEIGHT);
197 exp.append('=');
198 exp.append(NL);
199 assertEquals(exp.toString(), writer.toString());
200 }
201
202 @Test public void testWithStrictOperatorNoEmptyOptions() throws Exception
203 {
204 Config cfg = new Config();
205
206 cfg.setStrictOperator(true);
207 cfg.setEmptyOption(false);
208 Options opts = new Options();
209
210 opts.setConfig(cfg);
211 opts.put(Dwarf.PROP_AGE, DwarfsData.bashful.age);
212 opts.put(Dwarf.PROP_WEIGHT, null);
213 StringWriter writer = new StringWriter();
214
215 opts.store(writer);
216 StringBuilder exp = new StringBuilder();
217
218 exp.append(Dwarf.PROP_AGE);
219 exp.append('=');
220 exp.append(DwarfsData.bashful.age);
221 exp.append(NL);
222 assertEquals(exp.toString(), writer.toString());
223 }
224
225 private void verify(Options opts, OptionsHandler mock) throws Exception
226 {
227 StringWriter writer = new StringWriter();
228
229 opts.store(writer);
230 OptionsParser parser = new OptionsParser();
231
232 parser.parse(new StringReader(writer.toString()), mock);
233 EasyMock.verify(mock);
234 }
235 }