blob: 290b136cbcd00d561b2d45ee2b0dcac35ad5a77f [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 */
Yuta HIGUCHIa860dff2014-08-20 21:16:30 -070052 @Test(expected = NullPointerException.class)
Yuta HIGUCHIa16a8232014-07-03 19:45:40 -070053 public void testLinkTupleSwitchPortSwitchPortFailsOnNull1() {
54 new LinkTuple(null, DST);
55 }
56
57 /**
58 * Tests to confirm constructors input validation.
59 */
Yuta HIGUCHIa860dff2014-08-20 21:16:30 -070060 @Test(expected = NullPointerException.class)
Yuta HIGUCHIa16a8232014-07-03 19:45:40 -070061 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 */
Yuta HIGUCHIa860dff2014-08-20 21:16:30 -070082 @Test(expected = NullPointerException.class)
Yuta HIGUCHIa16a8232014-07-03 19:45:40 -070083 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 */
Yuta HIGUCHIa860dff2014-08-20 21:16:30 -070090 @Test(expected = NullPointerException.class)
Yuta HIGUCHIa16a8232014-07-03 19:45:40 -070091 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 */
Yuta HIGUCHIa860dff2014-08-20 21:16:30 -070098 @Test(expected = NullPointerException.class)
Yuta HIGUCHIa16a8232014-07-03 19:45:40 -070099 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 */
Yuta HIGUCHIa860dff2014-08-20 21:16:30 -0700106 @Test(expected = NullPointerException.class)
Yuta HIGUCHIa16a8232014-07-03 19:45:40 -0700107 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() {
Yuta HIGUCHI9da3a6e2014-06-10 22:11:58 -0700146 assertEquals("(00:00:00:00:00:00:00:01/65535=>00:00:00:00:00:00:00:02/65534)",
Yuta HIGUCHIa16a8232014-07-03 19:45:40 -0700147 L2.toString());
148 }
149
150}