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.Ini;
22 import org.ini4j.Ini4jCase;
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 IniFormatterTest 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 Ini ini = Helper.newDwarfsIni();
47 IniHandler handler = EasyMock.createMock(IniHandler.class);
48 Dwarf dwarf;
49
50 handler.startIni();
51 handler.handleComment(Helper.HEADER_COMMENT);
52 handler.handleComment(" " + Dwarfs.PROP_BASHFUL);
53 dwarf = DwarfsData.bashful;
54 handler.startSection(Dwarfs.PROP_BASHFUL);
55 handler.handleOption(Dwarf.PROP_WEIGHT, String.valueOf(dwarf.getWeight()));
56 handler.handleOption(Dwarf.PROP_HEIGHT, String.valueOf(dwarf.getHeight()));
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.endSection();
61 handler.handleComment(" " + Dwarfs.PROP_DOC);
62 dwarf = DwarfsData.doc;
63 handler.startSection(Dwarfs.PROP_DOC);
64 handler.handleOption(Dwarf.PROP_WEIGHT, String.valueOf(dwarf.getWeight()));
65 handler.handleOption(Dwarf.PROP_HEIGHT, String.valueOf(dwarf.getHeight()));
66 handler.handleOption(Dwarf.PROP_AGE, String.valueOf(dwarf.getAge()));
67 handler.handleOption(Dwarf.PROP_HOME_PAGE, String.valueOf(dwarf.getHomePage()));
68 handler.handleOption(Dwarf.PROP_HOME_DIR, String.valueOf(dwarf.getHomeDir()));
69 handler.endSection();
70 handler.handleComment(" " + Dwarfs.PROP_DOPEY);
71 dwarf = DwarfsData.dopey;
72 handler.startSection(Dwarfs.PROP_DOPEY);
73 handler.handleOption(Dwarf.PROP_WEIGHT, DwarfsData.INI_DOPEY_WEIGHT);
74 handler.handleOption(Dwarf.PROP_HEIGHT, DwarfsData.INI_DOPEY_HEIGHT);
75 handler.handleOption(Dwarf.PROP_AGE, String.valueOf(dwarf.getAge()));
76 handler.handleOption(Dwarf.PROP_HOME_PAGE, String.valueOf(dwarf.getHomePage()));
77 handler.handleOption(Dwarf.PROP_HOME_DIR, String.valueOf(dwarf.getHomeDir()));
78 handler.handleOption(Dwarf.PROP_FORTUNE_NUMBER, String.valueOf(dwarf.getFortuneNumber()[0]));
79 handler.handleOption(Dwarf.PROP_FORTUNE_NUMBER, String.valueOf(dwarf.getFortuneNumber()[1]));
80 handler.handleOption(Dwarf.PROP_FORTUNE_NUMBER, String.valueOf(dwarf.getFortuneNumber()[2]));
81 handler.endSection();
82 handler.handleComment(" " + Dwarfs.PROP_GRUMPY);
83 dwarf = DwarfsData.grumpy;
84 handler.startSection(Dwarfs.PROP_GRUMPY);
85 handler.handleOption(Dwarf.PROP_WEIGHT, String.valueOf(dwarf.getWeight()));
86 handler.handleOption(Dwarf.PROP_HEIGHT, DwarfsData.INI_GRUMPY_HEIGHT);
87 handler.handleOption(Dwarf.PROP_AGE, String.valueOf(dwarf.getAge()));
88 handler.handleOption(Dwarf.PROP_HOME_PAGE, String.valueOf(dwarf.getHomePage()));
89 handler.handleOption(Dwarf.PROP_HOME_DIR, String.valueOf(dwarf.getHomeDir()));
90 handler.endSection();
91 handler.handleComment(" " + Dwarfs.PROP_HAPPY);
92 dwarf = DwarfsData.happy;
93 handler.startSection(Dwarfs.PROP_HAPPY);
94 handler.handleOption(Dwarf.PROP_WEIGHT, String.valueOf(dwarf.getWeight()));
95 handler.handleOption(Dwarf.PROP_HEIGHT, String.valueOf(dwarf.getHeight()));
96 handler.handleOption(Dwarf.PROP_AGE, String.valueOf(dwarf.getAge()));
97 handler.handleOption(Dwarf.PROP_HOME_PAGE, String.valueOf(dwarf.getHomePage()));
98 handler.handleOption(Dwarf.PROP_HOME_DIR, String.valueOf(dwarf.getHomeDir()));
99 handler.endSection();
100 handler.handleComment(" " + Dwarfs.PROP_SLEEPY);
101 dwarf = DwarfsData.sleepy;
102 handler.startSection(Dwarfs.PROP_SLEEPY);
103 handler.handleOption(Dwarf.PROP_WEIGHT, String.valueOf(dwarf.getWeight()));
104 handler.handleOption(Dwarf.PROP_HEIGHT, DwarfsData.INI_SLEEPY_HEIGHT);
105 handler.handleOption(Dwarf.PROP_AGE, String.valueOf(dwarf.getAge()));
106 handler.handleOption(Dwarf.PROP_HOME_PAGE, String.valueOf(dwarf.getHomePage()));
107 handler.handleOption(Dwarf.PROP_HOME_DIR, String.valueOf(dwarf.getHomeDir()));
108 handler.handleOption(Dwarf.PROP_FORTUNE_NUMBER, String.valueOf(dwarf.getFortuneNumber()[0]));
109 handler.endSection();
110 handler.handleComment(" " + Dwarfs.PROP_SNEEZY);
111 dwarf = DwarfsData.sneezy;
112 handler.startSection(Dwarfs.PROP_SNEEZY);
113 handler.handleOption(Dwarf.PROP_WEIGHT, String.valueOf(dwarf.getWeight()));
114 handler.handleOption(Dwarf.PROP_HEIGHT, String.valueOf(dwarf.getHeight()));
115 handler.handleOption(Dwarf.PROP_AGE, String.valueOf(dwarf.getAge()));
116 handler.handleOption(Dwarf.PROP_HOME_PAGE, DwarfsData.INI_SNEEZY_HOME_PAGE);
117 handler.handleOption(Dwarf.PROP_HOME_DIR, String.valueOf(dwarf.getHomeDir()));
118 handler.handleOption(Dwarf.PROP_FORTUNE_NUMBER, String.valueOf(dwarf.getFortuneNumber()[0]));
119 handler.handleOption(Dwarf.PROP_FORTUNE_NUMBER, String.valueOf(dwarf.getFortuneNumber()[1]));
120 handler.handleOption(Dwarf.PROP_FORTUNE_NUMBER, String.valueOf(dwarf.getFortuneNumber()[2]));
121 handler.handleOption(Dwarf.PROP_FORTUNE_NUMBER, String.valueOf(dwarf.getFortuneNumber()[3]));
122 handler.endSection();
123 handler.endIni();
124 EasyMock.replay(handler);
125 verify(ini, handler);
126 }
127
128 @Test public void testNewInstance() throws Exception
129 {
130 StringWriter stringWriter;
131 PrintWriter printWriter;
132 Config cfg = new Config();
133 IniFormatter instance;
134
135 stringWriter = new StringWriter();
136 instance = IniFormatter.newInstance(stringWriter, cfg);
137
138 instance.getOutput().print(DUMMY);
139 instance.getOutput().flush();
140 assertEquals(DUMMY, stringWriter.toString());
141 assertSame(cfg, instance.getConfig());
142
143
144 stringWriter = new StringWriter();
145 instance = IniFormatter.newInstance(stringWriter, cfg);
146
147 instance.getOutput().print(DUMMY);
148 instance.getOutput().flush();
149 assertEquals(DUMMY, stringWriter.toString());
150
151
152 printWriter = new PrintWriter(stringWriter);
153 instance = IniFormatter.newInstance(printWriter, cfg);
154
155 assertSame(printWriter, instance.getOutput());
156 }
157
158 @Test public void testWithEmptyOption() throws Exception
159 {
160 Config cfg = new Config();
161
162 cfg.setEmptyOption(true);
163 Ini ini = new Ini();
164 Ini.Section sec = ini.add(Dwarfs.PROP_BASHFUL);
165
166 sec.put(Dwarf.PROP_FORTUNE_NUMBER, null);
167 ini.setConfig(cfg);
168 IniHandler handler = EasyMock.createMock(IniHandler.class);
169
170 handler.startIni();
171 handler.startSection(Dwarfs.PROP_BASHFUL);
172 handler.handleOption(Dwarf.PROP_FORTUNE_NUMBER, "");
173 handler.endSection();
174 handler.endIni();
175 EasyMock.replay(handler);
176 verify(ini, handler);
177 }
178
179 @Test public void testWithoutConfig() throws Exception
180 {
181 Ini ini = new Ini();
182 Ini.Section sec = ini.add(Dwarfs.PROP_BASHFUL);
183
184 sec.put(Dwarf.PROP_FORTUNE_NUMBER, null);
185 IniHandler handler = EasyMock.createMock(IniHandler.class);
186
187 handler.startIni();
188 handler.startSection(Dwarfs.PROP_BASHFUL);
189 handler.endSection();
190 handler.endIni();
191 EasyMock.replay(handler);
192 verify(ini, handler);
193 }
194
195 @Test public void testWithStrictOperator() throws Exception
196 {
197 Config cfg = new Config();
198
199 cfg.setStrictOperator(true);
200 Ini ini = new Ini();
201 Ini.Section sec = ini.add(Dwarfs.PROP_BASHFUL);
202
203 sec.put(Dwarf.PROP_AGE, DwarfsData.bashful.age);
204 ini.setConfig(cfg);
205 StringWriter writer = new StringWriter();
206
207 ini.store(writer);
208 StringBuilder exp = new StringBuilder();
209
210 exp.append(IniParser.SECTION_BEGIN);
211 exp.append(Dwarfs.PROP_BASHFUL);
212 exp.append(IniParser.SECTION_END);
213 exp.append(NL);
214 exp.append(Dwarf.PROP_AGE);
215 exp.append('=');
216 exp.append(DwarfsData.bashful.age);
217 exp.append(NL);
218 exp.append(NL);
219 assertEquals(exp.toString(), writer.toString());
220 }
221
222 private void verify(Ini ini, IniHandler mock) throws Exception
223 {
224 StringWriter writer = new StringWriter();
225
226 ini.store(writer);
227 IniParser parser = new IniParser();
228
229 parser.parse(new StringReader(writer.toString()), mock);
230 EasyMock.verify(mock);
231 }
232 }