1 package org.umu.cops.stack;
3 import org.junit.Assert;
5 import org.umu.cops.stack.COPSDecision.Command;
6 import org.umu.cops.stack.COPSDecision.DecisionFlag;
7 import org.umu.cops.stack.COPSObjHeader.CNum;
8 import org.umu.cops.stack.COPSObjHeader.CType;
10 import java.io.ByteArrayOutputStream;
13 * Tests for the first constructor of the COPSDecision class.
14 * Should any of these tests be inaccurate it is due to the fact that they have been written after COPSAcctTimer had been
15 * released and my assumptions may be incorrect.
17 public class COPSDecisionTest {
19 @Test(expected = IllegalArgumentException.class)
20 public void constructor1NullCommand() {
21 new COPSDecision(null);
24 @Test(expected = IllegalArgumentException.class)
25 public void constructor2NullCType() {
26 new COPSDecision(null, new COPSData());
29 @Test(expected = IllegalArgumentException.class)
30 public void constructor2NaCType() {
31 new COPSDecision(CType.NA, new COPSData());
34 @Test(expected = IllegalArgumentException.class)
35 public void constructor3NullCommand() {
36 new COPSDecision(null, DecisionFlag.NA);
39 @Test(expected = IllegalArgumentException.class)
40 public void constructor3NullDecisionFlag() {
41 new COPSDecision(Command.INSTALL, null);
44 @Test(expected = IllegalArgumentException.class)
45 public void constructor4NullCType() {
46 new COPSDecision(null, Command.INSTALL, DecisionFlag.NA);
49 @Test(expected = IllegalArgumentException.class)
50 public void constructor4NaCType() {
51 new COPSDecision(CType.NA, Command.INSTALL, DecisionFlag.NA);
54 @Test(expected = IllegalArgumentException.class)
55 public void constructor4NullCommand() {
56 new COPSDecision(CType.CSI, null, DecisionFlag.NA);
59 @Test(expected = IllegalArgumentException.class)
60 public void constructor4NullFlags() {
61 new COPSDecision(CType.CSI, Command.INSTALL, null);
64 @Test(expected = IllegalArgumentException.class)
65 public void constructor5NullCType() {
66 final CType cType = null;
67 new COPSDecision(cType, Command.INSTALL, DecisionFlag.NA, new COPSData());
70 @Test(expected = IllegalArgumentException.class)
71 public void constructor5NaCType() {
72 new COPSDecision(CType.NA, Command.INSTALL, DecisionFlag.NA, new COPSData());
75 @Test(expected = IllegalArgumentException.class)
76 public void constructor5NullCommand() {
77 new COPSDecision(CType.CSI, null, DecisionFlag.NA, new COPSData());
80 @Test(expected = IllegalArgumentException.class)
81 public void constructor5NullFlags() {
82 new COPSDecision(CType.CSI, Command.INSTALL, null, new COPSData());
85 @Test(expected = IllegalArgumentException.class)
86 public void constructor6NullHeader() {
87 final COPSObjHeader hdr = null;
88 new COPSDecision(hdr, Command.INSTALL, DecisionFlag.NA, new COPSData());
91 @Test(expected = IllegalArgumentException.class)
92 public void constructor6InvalidCNum() {
93 new COPSDecision(new COPSObjHeader(CNum.ACCT_TIMER, CType.CSI), Command.INSTALL, DecisionFlag.NA,
97 @Test(expected = IllegalArgumentException.class)
98 public void constructor6NullCommand() {
99 new COPSDecision(new COPSObjHeader(CNum.DEC, CType.CSI), null, DecisionFlag.NA, new COPSData());
102 @Test(expected = IllegalArgumentException.class)
103 public void constructor6NullDecison() {
104 new COPSDecision(new COPSObjHeader(CNum.DEC, CType.CSI), Command.INSTALL, null, new COPSData());
107 @Test(expected = IllegalArgumentException.class)
108 public void constructor6NullData() {
109 new COPSDecision(new COPSObjHeader(CNum.CSI, CType.CSI), Command.INSTALL, DecisionFlag.NA, null);
113 public void cNumDECAndNullData() {
114 final COPSDecision decision = new COPSDecision(CType.DEF, null);
115 Assert.assertNotNull(decision.getData());
116 Assert.assertEquals(0, decision.getData().getData().length);
120 public void constructor1CommandInstall() throws Exception {
121 final COPSDecision decision = new COPSDecision(Command.INSTALL);
122 Assert.assertEquals(Command.INSTALL, decision.getCommand());
123 Assert.assertEquals(4, decision.getDataLength());
124 Assert.assertEquals(new COPSData(), decision.getData());
125 Assert.assertEquals(DecisionFlag.NA, decision.getFlag());
126 Assert.assertEquals("Default", decision.getTypeStr());
128 final ByteArrayOutputStream os = new ByteArrayOutputStream();
131 final String out = new String(os.toByteArray());
132 System.out.println(out);
133 final String[] lines = out.split("\n");
134 Assert.assertEquals(6, lines.length);
135 Assert.assertEquals("**Decision**", lines[0]);
136 Assert.assertEquals("C-num: DEC", lines[1]);
137 Assert.assertEquals("C-type: DEF", lines[2]);
138 Assert.assertEquals("Decision (Default)", lines[3]);
139 Assert.assertEquals("Command code: INSTALL", lines[4]);
140 Assert.assertEquals("Command flags: NA", lines[5]);
144 public void constructor1CommandRemove() throws Exception {
145 final COPSDecision decision = new COPSDecision(Command.REMOVE);
146 Assert.assertEquals(Command.REMOVE, decision.getCommand());
147 Assert.assertEquals(4, decision.getDataLength());
148 Assert.assertEquals(new COPSData(), decision.getData());
149 Assert.assertEquals(DecisionFlag.NA, decision.getFlag());
150 Assert.assertEquals("Default", decision.getTypeStr());
152 final ByteArrayOutputStream os = new ByteArrayOutputStream();
155 final String out = new String(os.toByteArray());
156 System.out.println(out);
157 final String[] lines = out.split("\n");
158 Assert.assertEquals(6, lines.length);
159 Assert.assertEquals("**Decision**", lines[0]);
160 Assert.assertEquals("C-num: DEC", lines[1]);
161 Assert.assertEquals("C-type: DEF", lines[2]);
162 Assert.assertEquals("Decision (Default)", lines[3]);
163 Assert.assertEquals("Command code: REMOVE", lines[4]);
164 Assert.assertEquals("Command flags: NA", lines[5]);
168 public void constructor2ValidCTypeEmptyData() throws Exception {
169 final COPSDecision decision = new COPSDecision(CType.DEF, new COPSData());
170 Assert.assertEquals(Command.NULL, decision.getCommand());
171 Assert.assertEquals(4, decision.getDataLength());
172 Assert.assertEquals(new COPSData(), decision.getData());
173 Assert.assertEquals(DecisionFlag.NA, decision.getFlag());
174 Assert.assertEquals("Default", decision.getTypeStr());
176 final ByteArrayOutputStream os = new ByteArrayOutputStream();
179 final String out = new String(os.toByteArray());
180 System.out.println(out);
181 final String[] lines = out.split("\n");
182 Assert.assertEquals(6, lines.length);
183 Assert.assertEquals("**Decision**", lines[0]);
184 Assert.assertEquals("C-num: DEC", lines[1]);
185 Assert.assertEquals("C-type: DEF", lines[2]);
186 Assert.assertEquals("Decision (Default)", lines[3]);
187 Assert.assertEquals("Command code: NULL", lines[4]);
188 Assert.assertEquals("Command flags: NA", lines[5]);
192 public void constructor2ValidCTypeDefUnpaddedData() throws Exception {
193 final COPSDecision decision = new COPSDecision(CType.DEF, new COPSData("1234"));
194 Assert.assertEquals(Command.NULL, decision.getCommand());
195 Assert.assertEquals(8, decision.getDataLength());
196 Assert.assertEquals(new COPSData("1234"), decision.getData());
197 Assert.assertEquals(DecisionFlag.NA, decision.getFlag());
198 Assert.assertEquals("Default", decision.getTypeStr());
200 final ByteArrayOutputStream os = new ByteArrayOutputStream();
203 final String out = new String(os.toByteArray());
204 System.out.println(out);
205 final String[] lines = out.split("\n");
206 Assert.assertEquals(6, lines.length);
207 Assert.assertEquals("**Decision**", lines[0]);
208 Assert.assertEquals("C-num: DEC", lines[1]);
209 Assert.assertEquals("C-type: DEF", lines[2]);
210 Assert.assertEquals("Decision (Default)", lines[3]);
211 Assert.assertEquals("Command code: NULL", lines[4]);
212 Assert.assertEquals("Command flags: NA", lines[5]);
216 public void constructor2ValidCTypeDefPaddedData() throws Exception {
217 final COPSDecision decision = new COPSDecision(CType.DEF, new COPSData("12345"));
218 Assert.assertEquals(Command.NULL, decision.getCommand());
219 Assert.assertEquals(12, decision.getDataLength());
220 Assert.assertEquals(new COPSData("12345"), decision.getData());
221 Assert.assertEquals(DecisionFlag.NA, decision.getFlag());
222 Assert.assertEquals("Default", decision.getTypeStr());
224 final ByteArrayOutputStream os = new ByteArrayOutputStream();
227 final String out = new String(os.toByteArray());
228 System.out.println(out);
229 final String[] lines = out.split("\n");
230 Assert.assertEquals(6, lines.length);
231 Assert.assertEquals("**Decision**", lines[0]);
232 Assert.assertEquals("C-num: DEC", lines[1]);
233 Assert.assertEquals("C-type: DEF", lines[2]);
234 Assert.assertEquals("Decision (Default)", lines[3]);
235 Assert.assertEquals("Command code: NULL", lines[4]);
236 Assert.assertEquals("Command flags: NA", lines[5]);
240 public void constructor2ValidCTypeNamedPaddedData() throws Exception {
241 final COPSDecision decision = new COPSDecision(CType.NAMED, new COPSData("12345"));
242 Assert.assertEquals(Command.NULL, decision.getCommand());
243 Assert.assertEquals(12, decision.getDataLength());
244 Assert.assertEquals(new COPSData("12345"), decision.getData());
245 Assert.assertEquals(DecisionFlag.NA, decision.getFlag());
246 Assert.assertEquals("Named decision data", decision.getTypeStr());
248 final ByteArrayOutputStream os = new ByteArrayOutputStream();
251 final String out = new String(os.toByteArray());
252 System.out.println(out);
253 final String[] lines = out.split("\n");
254 Assert.assertEquals(5, lines.length);
255 Assert.assertEquals("**Decision**", lines[0]);
256 Assert.assertEquals("C-num: DEC", lines[1]);
257 Assert.assertEquals("C-type: NAMED", lines[2]);
258 Assert.assertEquals("Decision (Named decision data)", lines[3]);
259 Assert.assertEquals("Data: 12345", lines[4]);
263 public void constructor3Valid() throws Exception {
264 final COPSDecision decision = new COPSDecision(Command.INSTALL, DecisionFlag.REQERROR);
265 Assert.assertEquals(Command.INSTALL, decision.getCommand());
266 Assert.assertEquals(4, decision.getDataLength());
267 Assert.assertEquals(new COPSData(), decision.getData());
268 Assert.assertEquals(DecisionFlag.REQERROR, decision.getFlag());
269 Assert.assertEquals("Default", decision.getTypeStr());
271 final ByteArrayOutputStream os = new ByteArrayOutputStream();
274 final String out = new String(os.toByteArray());
275 System.out.println(out);
276 final String[] lines = out.split("\n");
277 Assert.assertEquals(6, lines.length);
278 Assert.assertEquals("**Decision**", lines[0]);
279 Assert.assertEquals("C-num: DEC", lines[1]);
280 Assert.assertEquals("C-type: DEF", lines[2]);
281 Assert.assertEquals("Decision (Default)", lines[3]);
282 Assert.assertEquals("Command code: INSTALL", lines[4]);
283 Assert.assertEquals("Command flags: REQERROR", lines[5]);
287 public void constructor4Valid() throws Exception {
288 final COPSDecision decision = new COPSDecision(CType.NAMED, Command.REMOVE, DecisionFlag.REQSTATE);
289 Assert.assertEquals(Command.REMOVE, decision.getCommand());
290 Assert.assertEquals(4, decision.getDataLength());
291 Assert.assertEquals(new COPSData(), decision.getData());
292 Assert.assertEquals(DecisionFlag.REQSTATE, decision.getFlag());
293 Assert.assertEquals("Named decision data", decision.getTypeStr());
295 final ByteArrayOutputStream os = new ByteArrayOutputStream();
298 final String out = new String(os.toByteArray());
299 System.out.println(out);
300 final String[] lines = out.split("\n");
301 Assert.assertEquals(5, lines.length);
302 Assert.assertEquals("**Decision**", lines[0]);
303 Assert.assertEquals("C-num: DEC", lines[1]);
304 Assert.assertEquals("C-type: NAMED", lines[2]);
305 Assert.assertEquals("Decision (Named decision data)", lines[3]);
306 Assert.assertEquals("Data: ", lines[4]);
310 public void constructor5Valid() throws Exception {
311 final COPSDecision decision = new COPSDecision(CType.CSI, Command.REMOVE, DecisionFlag.REQSTATE,
312 new COPSData("1234"));
313 Assert.assertEquals(Command.REMOVE, decision.getCommand());
314 Assert.assertEquals(8, decision.getDataLength());
315 Assert.assertEquals(new COPSData("1234"), decision.getData());
316 Assert.assertEquals(DecisionFlag.REQSTATE, decision.getFlag());
317 Assert.assertEquals("Client specific decision data", decision.getTypeStr());
319 final ByteArrayOutputStream os = new ByteArrayOutputStream();
322 final String out = new String(os.toByteArray());
323 System.out.println(out);
324 final String[] lines = out.split("\n");
325 Assert.assertEquals(5, lines.length);
326 Assert.assertEquals("**Decision**", lines[0]);
327 Assert.assertEquals("C-num: DEC", lines[1]);
328 Assert.assertEquals("C-type: CSI", lines[2]);
329 Assert.assertEquals("Decision (Client specific decision data)", lines[3]);
330 Assert.assertEquals("Data: 1234", lines[4]);
334 public void constructor6Valid() throws Exception {
335 final COPSDecision decision = new COPSDecision(new COPSObjHeader(CNum.DEC, CType.STATELESS), Command.INSTALL,
336 DecisionFlag.REQERROR, new COPSData("1234"));
337 Assert.assertEquals(Command.INSTALL, decision.getCommand());
338 Assert.assertEquals(8, decision.getDataLength());
339 Assert.assertEquals(new COPSData("1234"), decision.getData());
340 Assert.assertEquals(DecisionFlag.REQERROR, decision.getFlag());
341 Assert.assertEquals("Stateless data", decision.getTypeStr());
343 final ByteArrayOutputStream os = new ByteArrayOutputStream();
346 final String out = new String(os.toByteArray());
347 System.out.println(out);
348 final String[] lines = out.split("\n");
349 Assert.assertEquals(5, lines.length);
350 Assert.assertEquals("**Decision**", lines[0]);
351 Assert.assertEquals("C-num: DEC", lines[1]);
352 Assert.assertEquals("C-type: STATELESS", lines[2]);
353 Assert.assertEquals("Decision (Stateless data)", lines[3]);
354 Assert.assertEquals("Data: 1234", lines[4]);
357 // The writeData() method will be tested implicitly via any of the COPSMsg tests