1 package org.openflow.protocol;
3 import junit.framework.TestCase;
5 public class OFMatchTest extends TestCase {
6 public void testFromString() {
7 OFMatch correct = new OFMatch();
8 OFMatch tester = new OFMatch();
10 // Various combinations of "all"/"any"
11 tester.fromString("OFMatch[]");
12 // correct is already wildcarded
13 TestCase.assertEquals(correct, tester);
14 tester.fromString("all");
15 TestCase.assertEquals(correct, tester);
16 tester.fromString("ANY");
17 TestCase.assertEquals(correct, tester);
18 tester.fromString("");
19 TestCase.assertEquals(correct, tester);
20 tester.fromString("[]");
21 TestCase.assertEquals(correct, tester);
24 correct.setWildcards(~OFMatch.OFPFW_NW_SRC_MASK);
25 correct.setNetworkSource(0x01010203);
26 tester.fromString("nw_src=1.1.2.3");
27 TestCase.assertEquals(correct.getNetworkSourceMaskLen(), tester
28 .getNetworkSourceMaskLen());
29 TestCase.assertEquals(correct, tester);
30 tester.fromString("IP_sRc=1.1.2.3");
31 TestCase.assertEquals(correct.getNetworkSourceMaskLen(), tester
32 .getNetworkSourceMaskLen());
33 TestCase.assertEquals(correct, tester);
36 public void testToString() {
37 OFMatch match = new OFMatch();
38 match.fromString("nw_dst=3.4.5.6/8");
39 TestCase.assertEquals(8, match.getNetworkDestinationMaskLen());
40 String correct = "OFMatch[nw_dst=3.0.0.0/8]";
41 String tester = match.toString();
43 TestCase.assertEquals(correct, tester);
44 tester = "OFMatch[dl_type=35020]";
45 correct = "OFMatch[dl_type=0x88cc]";
46 match = new OFMatch();
47 match.fromString(tester);
48 TestCase.assertEquals(correct, match.toString());
49 OFMatch match2 = new OFMatch();
50 match2.fromString(correct);
51 TestCase.assertEquals(match, match2);
54 public void testClone() {
55 OFMatch match1 = new OFMatch();
56 OFMatch match2 = match1.clone();
57 TestCase.assertEquals(match1, match2);
58 match2.setNetworkProtocol((byte) 4);
59 match2.setWildcards(match2.getWildcards() & ~OFMatch.OFPFW_NW_PROTO);
60 TestCase.assertNotSame(match1, match2);
63 public void testIpToString() {
64 String test = OFMatch.ipToString(-1);
65 TestCase.assertEquals("255.255.255.255", test);
68 public void testReverse() {
69 OFMatch match1 = new OFMatch();
70 OFMatch match2 = match1.reverse((short)0, true);
71 TestCase.assertEquals(match1, match2);
73 match1.fromString("dl_dst=00:11:22:33:44:55");
74 match2 = match1.reverse((short)0, true);
75 OFMatch match3 = new OFMatch();
76 match3.fromString("dl_src=00:11:22:33:44:55");
77 TestCase.assertEquals(match2, match3);
79 match1.fromString("nw_dst=192.168.0.0/24");
80 match2 = match1.reverse((short)0, true);
81 match3.fromString("nw_src=192.168.0.0/24");
82 TestCase.assertEquals(match2, match3);
84 match1.fromString("in_port=1");
85 match2 = match1.reverse((short)2, false);
86 match3.fromString("in_port=2");
87 TestCase.assertEquals(match2, match3);
90 public void testSubsumes() {
91 OFMatch match1 = new OFMatch();
92 OFMatch match2 = new OFMatch();
93 match2.fromString("dl_dst=00:11:22:33:44:55");
94 TestCase.assertTrue(match1.subsumes(match2));
95 TestCase.assertFalse(match2.subsumes(match1));
97 match1.fromString("nw_dst=192.168.0.0/16");
98 match2.fromString("nw_dst=192.168.0.0/24");
99 TestCase.assertTrue(match1.subsumes(match2));
100 TestCase.assertFalse(match2.subsumes(match1));