blob: 88c2ca9cb32e79afa81a0f385549c7b9080e5977 [file] [log] [blame]
Yuta HIGUCHIa16a8232014-07-03 19:45:40 -07001package net.onrc.onos.core.util;
2
3import static net.onrc.onos.core.util.ImmutableClassChecker.assertThatClassIsImmutable;
4import static org.junit.Assert.*;
5
6import org.junit.Test;
7
8/**
9 * Basic LinkTupleTest.
10 */
11public class LinkTupleTest {
12
13 private static final Dpid SRC_DPID = new Dpid(9);
14 private static final PortNumber SRC_PORT_NUM = new PortNumber((short) 56);
15 private static final Dpid DST_DPID = new Dpid(12);
16 private static final PortNumber DST_PORT_NUM = new PortNumber((short) 81);
17
18 private static final SwitchPort SRC = new SwitchPort(SRC_DPID, SRC_PORT_NUM);
19 private static final SwitchPort DST = new SwitchPort(DST_DPID, DST_PORT_NUM);
20
21
22 private static final LinkTuple L1 = new LinkTuple(SRC, DST);
23 private static final LinkTuple L2 = new LinkTuple(
24 new SwitchPort(new Dpid(1), new PortNumber((short) 65535)),
25 new SwitchPort(new Dpid(2), new PortNumber((short) 65534)));
26
27 /**
28 * Test to confirm class definition is immutable.
29 */
30 @Test
31 public void testImmutable() {
32 assertThatClassIsImmutable(LinkTuple.class);
33 }
34
35 /**
36 * Tests to confirm 2-arg constructor.
37 */
38 @Test
39 public void testLinkTupleSwitchPortSwitchPort() {
40 LinkTuple link = new LinkTuple(SRC, DST);
41 assertEquals(SRC, link.getSrc());
42 assertEquals(SRC_DPID, link.getSrc().getDpid());
43 assertEquals(SRC_PORT_NUM, link.getSrc().getPortNumber());
44 assertEquals(DST, link.getDst());
45 assertEquals(DST_DPID, link.getDst().getDpid());
46 assertEquals(DST_PORT_NUM, link.getDst().getPortNumber());
47 }
48
49 /**
50 * Tests to confirm constructors input validation.
51 */
52 @Test(expected = IllegalArgumentException.class)
53 public void testLinkTupleSwitchPortSwitchPortFailsOnNull1() {
54 new LinkTuple(null, DST);
55 }
56
57 /**
58 * Tests to confirm constructors input validation.
59 */
60 @Test(expected = IllegalArgumentException.class)
61 public void testLinkTupleSwitchPortSwitchPortFailsOnNull2() {
62 new LinkTuple(SRC, null);
63 }
64
65 /**
66 * Tests to confirm 4-arg constructor.
67 */
68 @Test
69 public void testLinkTupleDpidPortNumberDpidPortNumber() {
70 LinkTuple link = new LinkTuple(SRC_DPID, SRC_PORT_NUM, DST_DPID, DST_PORT_NUM);
71 assertEquals(SRC, link.getSrc());
72 assertEquals(SRC_DPID, link.getSrc().getDpid());
73 assertEquals(SRC_PORT_NUM, link.getSrc().getPortNumber());
74 assertEquals(DST, link.getDst());
75 assertEquals(DST_DPID, link.getDst().getDpid());
76 assertEquals(DST_PORT_NUM, link.getDst().getPortNumber());
77 }
78
79 /**
80 * Tests to confirm constructors input validation.
81 */
82 @Test(expected = IllegalArgumentException.class)
83 public void testLinkTupleDpidPortNumberDpidPortNumberFailOnNull1() {
84 new LinkTuple(null, SRC_PORT_NUM, DST_DPID, DST_PORT_NUM);
85 }
86
87 /**
88 * Tests to confirm constructors input validation.
89 */
90 @Test(expected = IllegalArgumentException.class)
91 public void testLinkTupleDpidPortNumberDpidPortNumberFailOnNull2() {
92 new LinkTuple(SRC_DPID, null, DST_DPID, DST_PORT_NUM);
93 }
94
95 /**
96 * Tests to confirm constructors input validation.
97 */
98 @Test(expected = IllegalArgumentException.class)
99 public void testLinkTupleDpidPortNumberDpidPortNumberFailOnNull3() {
100 new LinkTuple(SRC_DPID, SRC_PORT_NUM, null, DST_PORT_NUM);
101 }
102
103 /**
104 * Tests to confirm constructors input validation.
105 */
106 @Test(expected = IllegalArgumentException.class)
107 public void testLinkTupleDpidPortNumberDpidPortNumberFailOnNull4() {
108 new LinkTuple(SRC_DPID, SRC_PORT_NUM, DST_DPID, null);
109 }
110
111 /**
112 * Tests confirming equals returning true.
113 */
114 @Test
115 public void testEqualsTrue() {
116 LinkTuple link = new LinkTuple(SRC, DST);
117
118 assertTrue(L1.equals(link));
119 assertTrue(link.equals(L1));
120 assertEquals(L1.hashCode(), link.hashCode());
121
122 assertTrue(link.equals(link));
123 }
124
125 /**
126 * Tests confirming equals returning false.
127 */
128 @Test
129 public void testEqualsFalse() {
130 LinkTuple link = new LinkTuple(SRC, DST);
131
132 assertFalse(L2.equals(link));
133 assertFalse(link.equals(L2));
134 assertNotEquals(L2.hashCode(), link.hashCode());
135
136 assertFalse(link.equals(null));
137
138 assertFalse(link.equals(DST));
139 }
140
141 /**
142 * Test to detect string representation change.
143 */
144 @Test
145 public void testToString() {
146 // FIXME when we start handling unsigned integer properly
147 assertEquals("(00:00:00:00:00:00:00:01/-1=>00:00:00:00:00:00:00:02/-2)",
148 L2.toString());
149 }
150
151}