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 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.
17 public class COPSLPDPDecisionTest {
19 @Test(expected = IllegalArgumentException.class)
20 public void constructor1NullCType() {
21 final CType cType = null;
22 new COPSLPDPDecision(cType, Command.INSTALL, DecisionFlag.NA, new COPSData());
25 @Test(expected = IllegalArgumentException.class)
26 public void constructor1NaCType() {
27 new COPSLPDPDecision(CType.NA, Command.INSTALL, DecisionFlag.NA, new COPSData());
30 @Test(expected = IllegalArgumentException.class)
31 public void constructor1NullCommand() {
32 new COPSLPDPDecision(CType.CSI, null, DecisionFlag.NA, new COPSData());
35 @Test(expected = IllegalArgumentException.class)
36 public void constructor1NullFlags() {
37 new COPSLPDPDecision(CType.CSI, Command.INSTALL, null, new COPSData());
40 @Test(expected = IllegalArgumentException.class)
41 public void constructor2NullHeader() {
42 final COPSObjHeader hdr = null;
43 new COPSLPDPDecision(hdr, Command.INSTALL, DecisionFlag.NA, new COPSData());
46 @Test(expected = IllegalArgumentException.class)
47 public void constructor2InvalidCNum() {
48 new COPSLPDPDecision(new COPSObjHeader(CNum.ACCT_TIMER, CType.CSI), Command.INSTALL, DecisionFlag.NA,
52 @Test(expected = IllegalArgumentException.class)
53 public void constructor2NullCommand() {
54 new COPSLPDPDecision(new COPSObjHeader(CNum.LPDP_DEC, CType.CSI), null, DecisionFlag.NA, new COPSData());
57 @Test(expected = IllegalArgumentException.class)
58 public void constructor2NullDecison() {
59 new COPSLPDPDecision(new COPSObjHeader(CNum.LPDP_DEC, CType.CSI), Command.INSTALL, null, new COPSData());
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);
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());
78 final ByteArrayOutputStream os = new ByteArrayOutputStream();
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]);
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());
102 final ByteArrayOutputStream os = new ByteArrayOutputStream();
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]);
116 // The writeData() method will be tested implicitly via any of the COPSMsg tests