Merge "Changed tests to leverage a dynamic port for testing COPS message marshalling...
[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 constructor1NullData() {
42         new COPSLPDPDecision(CType.CSI, Command.INSTALL, DecisionFlag.NA, null);
43     }
44
45     @Test(expected = IllegalArgumentException.class)
46     public void constructor2NullHeader() {
47         final COPSObjHeader hdr = null;
48         new COPSLPDPDecision(hdr, Command.INSTALL, DecisionFlag.NA, new COPSData());
49     }
50
51     @Test(expected = IllegalArgumentException.class)
52     public void constructor2InvalidCNum() {
53         new COPSLPDPDecision(new COPSObjHeader(CNum.ACCT_TIMER, CType.CSI), Command.INSTALL, DecisionFlag.NA,
54                 new COPSData());
55     }
56
57     @Test(expected = IllegalArgumentException.class)
58     public void constructor2NullCommand() {
59         new COPSLPDPDecision(new COPSObjHeader(CNum.LPDP_DEC, CType.CSI), null, DecisionFlag.NA, new COPSData());
60     }
61
62     @Test(expected = IllegalArgumentException.class)
63     public void constructor2NullDecison() {
64         new COPSLPDPDecision(new COPSObjHeader(CNum.LPDP_DEC, CType.CSI), Command.INSTALL, null, new COPSData());
65     }
66
67     @Test(expected = IllegalArgumentException.class)
68     public void constructor2NullData() {
69         new COPSLPDPDecision(new COPSObjHeader(CNum.LPDP_DEC, CType.CSI), Command.INSTALL, DecisionFlag.NA, null);
70     }
71
72     @Test
73     public void constructor1Valid() throws Exception {
74         final COPSLPDPDecision decision = new COPSLPDPDecision(CType.CSI, Command.REMOVE, DecisionFlag.REQSTATE,
75                 new COPSData("1234"));
76         Assert.assertEquals(Command.REMOVE, decision.getCommand());
77         Assert.assertEquals(8, decision.getDataLength());
78         Assert.assertEquals(new COPSData("1234"), decision.getData());
79         Assert.assertEquals(DecisionFlag.REQSTATE, decision.getFlag());
80         Assert.assertEquals("Client specific decision data", decision.getTypeStr());
81
82         final ByteArrayOutputStream os = new ByteArrayOutputStream();
83         decision.dump(os);
84
85         final String out = new String(os.toByteArray());
86         System.out.println(out);
87         final String[] lines = out.split("\n");
88         Assert.assertEquals(5, lines.length);
89         Assert.assertEquals("**Local-Decision**", lines[0]);
90         Assert.assertEquals("C-num: LPDP_DEC", lines[1]);
91         Assert.assertEquals("C-type: CSI", lines[2]);
92         Assert.assertEquals("Decision (Client specific decision data)", lines[3]);
93         Assert.assertEquals("Data: 1234", lines[4]);
94     }
95
96     @Test
97     public void constructor2Valid() throws Exception {
98         final COPSLPDPDecision decision = new COPSLPDPDecision(new COPSObjHeader(CNum.LPDP_DEC, CType.STATELESS), Command.INSTALL,
99                 DecisionFlag.REQERROR, new COPSData("1234"));
100         Assert.assertEquals(Command.INSTALL, decision.getCommand());
101         Assert.assertEquals(8, decision.getDataLength());
102         Assert.assertEquals(new COPSData("1234"), decision.getData());
103         Assert.assertEquals(DecisionFlag.REQERROR, decision.getFlag());
104         Assert.assertEquals("Stateless data", decision.getTypeStr());
105
106         final ByteArrayOutputStream os = new ByteArrayOutputStream();
107         decision.dump(os);
108
109         final String out = new String(os.toByteArray());
110         System.out.println(out);
111         final String[] lines = out.split("\n");
112         Assert.assertEquals(5, lines.length);
113         Assert.assertEquals("**Local-Decision**", lines[0]);
114         Assert.assertEquals("C-num: LPDP_DEC", lines[1]);
115         Assert.assertEquals("C-type: STATELESS", lines[2]);
116         Assert.assertEquals("Decision (Stateless data)", lines[3]);
117         Assert.assertEquals("Data: 1234", lines[4]);
118     }
119
120     // The writeData() method will be tested implicitly via any of the COPSMsg tests
121 }