Removed the requirement that the COPSData member (aka. _data) cannot be null. Found...
[packetcable.git] / packetcable-driver / src / test / java / org / umu / cops / stack / COPSLPDPDecisionTest.java
1 package org.umu.cops.stack;
2
3 import org.junit.Assert;
4 import org.junit.Test;
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;
9
10 import java.io.ByteArrayOutputStream;
11
12 /**
13  * Tests for the first constructor of the COPSLPDPDecision 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.
16  */
17 public class COPSLPDPDecisionTest {
18
19     @Test(expected = IllegalArgumentException.class)
20     public void constructor1NullCType() {
21         final CType cType = null;
22         new COPSLPDPDecision(cType, Command.INSTALL, DecisionFlag.NA, new COPSData());
23     }
24
25     @Test(expected = IllegalArgumentException.class)
26     public void constructor1NaCType() {
27         new COPSLPDPDecision(CType.NA, Command.INSTALL, DecisionFlag.NA, new COPSData());
28     }
29
30     @Test(expected = IllegalArgumentException.class)
31     public void constructor1NullCommand() {
32         new COPSLPDPDecision(CType.CSI, null, DecisionFlag.NA, new COPSData());
33     }
34
35     @Test(expected = IllegalArgumentException.class)
36     public void constructor1NullFlags() {
37         new COPSLPDPDecision(CType.CSI, Command.INSTALL, null, new COPSData());
38     }
39
40     @Test(expected = IllegalArgumentException.class)
41     public void constructor2NullHeader() {
42         final COPSObjHeader hdr = null;
43         new COPSLPDPDecision(hdr, Command.INSTALL, DecisionFlag.NA, new COPSData());
44     }
45
46     @Test(expected = IllegalArgumentException.class)
47     public void constructor2InvalidCNum() {
48         new COPSLPDPDecision(new COPSObjHeader(CNum.ACCT_TIMER, CType.CSI), Command.INSTALL, DecisionFlag.NA,
49                 new COPSData());
50     }
51
52     @Test(expected = IllegalArgumentException.class)
53     public void constructor2NullCommand() {
54         new COPSLPDPDecision(new COPSObjHeader(CNum.LPDP_DEC, CType.CSI), null, DecisionFlag.NA, new COPSData());
55     }
56
57     @Test(expected = IllegalArgumentException.class)
58     public void constructor2NullDecison() {
59         new COPSLPDPDecision(new COPSObjHeader(CNum.LPDP_DEC, CType.CSI), Command.INSTALL, null, new COPSData());
60     }
61
62     public void constructor2NullData() {
63         final COPSLPDPDecision decision = new COPSLPDPDecision(new COPSObjHeader(CNum.LPDP_DEC, CType.CSI),
64                 Command.INSTALL, DecisionFlag.NA, null);
65         Assert.assertEquals(0, decision.getData().getData().length);
66     }
67
68     @Test
69     public void constructor1Valid() throws Exception {
70         final COPSLPDPDecision decision = new COPSLPDPDecision(CType.CSI, Command.REMOVE, DecisionFlag.REQSTATE,
71                 new COPSData("1234"));
72         Assert.assertEquals(Command.REMOVE, decision.getCommand());
73         Assert.assertEquals(8, decision.getDataLength());
74         Assert.assertEquals(new COPSData("1234"), decision.getData());
75         Assert.assertEquals(DecisionFlag.REQSTATE, decision.getFlag());
76         Assert.assertEquals("Client specific decision data", decision.getTypeStr());
77
78         final ByteArrayOutputStream os = new ByteArrayOutputStream();
79         decision.dump(os);
80
81         final String out = new String(os.toByteArray());
82         System.out.println(out);
83         final String[] lines = out.split("\n");
84         Assert.assertEquals(5, lines.length);
85         Assert.assertEquals("**Local-Decision**", lines[0]);
86         Assert.assertEquals("C-num: LPDP_DEC", lines[1]);
87         Assert.assertEquals("C-type: CSI", lines[2]);
88         Assert.assertEquals("Decision (Client specific decision data)", lines[3]);
89         Assert.assertEquals("Data: 1234", lines[4]);
90     }
91
92     @Test
93     public void constructor2Valid() throws Exception {
94         final COPSLPDPDecision decision = new COPSLPDPDecision(new COPSObjHeader(CNum.LPDP_DEC, CType.STATELESS), Command.INSTALL,
95                 DecisionFlag.REQERROR, new COPSData("1234"));
96         Assert.assertEquals(Command.INSTALL, decision.getCommand());
97         Assert.assertEquals(8, decision.getDataLength());
98         Assert.assertEquals(new COPSData("1234"), decision.getData());
99         Assert.assertEquals(DecisionFlag.REQERROR, decision.getFlag());
100         Assert.assertEquals("Stateless data", decision.getTypeStr());
101
102         final ByteArrayOutputStream os = new ByteArrayOutputStream();
103         decision.dump(os);
104
105         final String out = new String(os.toByteArray());
106         System.out.println(out);
107         final String[] lines = out.split("\n");
108         Assert.assertEquals(5, lines.length);
109         Assert.assertEquals("**Local-Decision**", lines[0]);
110         Assert.assertEquals("C-num: LPDP_DEC", lines[1]);
111         Assert.assertEquals("C-type: STATELESS", lines[2]);
112         Assert.assertEquals("Decision (Stateless data)", lines[3]);
113         Assert.assertEquals("Data: 1234", lines[4]);
114     }
115
116     // The writeData() method will be tested implicitly via any of the COPSMsg tests
117 }