blob: 4db84f11004f91d5dad515e326f215c5356c0a64 [file] [log] [blame]
tom0eb04ca2014-08-25 14:34:51 -07001package org.projectfloodlight.openflow.types;
2
3import static org.hamcrest.Matchers.contains;
4import static org.junit.Assert.assertArrayEquals;
5import static org.junit.Assert.assertThat;
6import junit.framework.TestCase;
7
8import org.junit.Test;
9
10public class OFPortBitMapTest extends TestCase {
11 @Test
12 public void testCreateAndIterate() {
13 OFPortBitMap map = OFPortBitMap.ofPorts(OFPort.of(1), OFPort.of(2), OFPort.of(5));
14
15 assertThat(map.getOnPorts(), contains(OFPort.of(1), OFPort.of(2), OFPort.of(5)));
16 }
17
18 @Test
19 public void testOFBitMap() {
20 OFBitMask128 bitmap = OFBitMask128.of(0xFFFF_FFFF_FFFF_FFFFL, 0xFFFF_FFFF_FFFF_FFD9L);
21
22 OFPortBitMap map = OFPortBitMap.of(bitmap);
23
24 assertThat(map.getOnPorts(), contains(OFPort.of(1), OFPort.of(2), OFPort.of(5)));
25 }
26
27 @Test
28 public void testOFPortBitMap() {
29 Boolean[] on = new Boolean[127];
30 for (int i = 0; i < 127; i++) {
31 on[i] = false;
32 }
33
34 OFPortBitMap.Builder builder = new OFPortBitMap.Builder();
35
36 for (int i = 0; i < 127; i += 3) {
37 OFPort p = OFPort.of(i);
38 builder.set(p);
39 on[p.getPortNumber()] = true;
40 }
41
42 // Test that all ports that were added are actually on, and all other ports are off
43 OFPortBitMap portmap = builder.build();
44 //System.out.println(portmap);
45 Boolean[] actual = new Boolean[127];
46 for (int i = 0; i < 127; i++) {
47 actual[i] = false;
48 }
49 for (int i = 0; i < 127; i++) {
50 actual[i] = portmap.isOn(OFPort.of(i));
51 }
52 assertArrayEquals(on, actual);
53
54 // Turn some ports off
55 for (int i = 0; i < 127; i += 7) {
56 on[i] = false;
57 builder.unset(OFPort.of(i));
58 }
59
60 // Test again
61 portmap = builder.build();
62 actual = new Boolean[127];
63 for (int i = 0; i < 127; i++) {
64 actual[i] = false;
65 }
66 for (int i = 0; i < 127; i++) {
67 actual[i] = portmap.isOn(OFPort.of(i));
68 }
69 assertArrayEquals(on, actual);
70 }
71}