blob: f5b1a912ce12eb88ce37636ca0f96cd8ecf18a9e [file] [log] [blame]
package org.projectfloodlight.openflow.types;
import static org.hamcrest.Matchers.contains;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertThat;
import junit.framework.TestCase;
import org.junit.Test;
public class OFPortBitMapTest extends TestCase {
/**
* 128 Bit variation
*/
@Test
public void testCreateAndIterate() {
OFPortBitMap map = OFPortBitMap.ofPorts(OFPort.of(1), OFPort.of(2), OFPort.of(5));
assertThat(map.getOnPorts(), contains(OFPort.of(1), OFPort.of(2), OFPort.of(5)));
}
@Test
public void testOFBitMap() {
OFBitMask128 bitmap = OFBitMask128.of(0xFFFF_FFFF_FFFF_FFFFL, 0xFFFF_FFFF_FFFF_FFD9L);
OFPortBitMap map = OFPortBitMap.of(bitmap);
assertThat(map.getOnPorts(), contains(OFPort.of(1), OFPort.of(2), OFPort.of(5)));
}
@Test
public void testOFPortBitMap() {
Boolean[] on = new Boolean[127];
for (int i = 0; i < 127; i++) {
on[i] = false;
}
OFPortBitMap.Builder builder = new OFPortBitMap.Builder();
for (int i = 0; i < 127; i += 3) {
OFPort p = OFPort.of(i);
builder.set(p);
on[p.getPortNumber()] = true;
}
// Test that all ports that were added are actually on, and all other ports are off
OFPortBitMap portmap = builder.build();
//System.out.println(portmap);
Boolean[] actual = new Boolean[127];
for (int i = 0; i < 127; i++) {
actual[i] = false;
}
for (int i = 0; i < 127; i++) {
actual[i] = portmap.isOn(OFPort.of(i));
}
assertArrayEquals(on, actual);
// Turn some ports off
for (int i = 0; i < 127; i += 7) {
on[i] = false;
builder.unset(OFPort.of(i));
}
// Test again
portmap = builder.build();
actual = new Boolean[127];
for (int i = 0; i < 127; i++) {
actual[i] = false;
}
for (int i = 0; i < 127; i++) {
actual[i] = portmap.isOn(OFPort.of(i));
}
assertArrayEquals(on, actual);
}
/**
* 512 Bit variation
*/
@Test
public void testCreateAndIterate512() {
OFPortBitMap512 map = OFPortBitMap512.ofPorts(OFPort.of(1), OFPort.of(2), OFPort.of(5));
assertThat(map.getOnPorts(), contains(OFPort.of(1), OFPort.of(2), OFPort.of(5)));
}
@Test
public void testOFBitMap512() {
OFBitMask512 bitmap = OFBitMask512.of(0xFFFF_FFFF_FFFF_FFFFL, 0xFFFF_FFFF_FFFF_FFFFL,
0xFFFF_FFFF_FFFF_FFFFL, 0xFFFF_FFFF_FFFF_FFFFL, 0xFFFF_FFFF_FFFF_FFFFL,
0xFFFF_FFFF_FFFF_FFFFL, 0xFFFF_FFFF_FFFF_FFFFL, 0xFFFF_FFFF_FFFF_FFD9L);
OFPortBitMap512 map = OFPortBitMap512.of(bitmap);
assertThat(map.getOnPorts(), contains(OFPort.of(1), OFPort.of(2), OFPort.of(5)));
}
@Test
public void testOFPortBitMap512() {
Boolean[] on = new Boolean[511];
for (int i = 0; i < 511; i++) {
on[i] = false;
}
OFPortBitMap512.Builder builder = new OFPortBitMap512.Builder();
for (int i = 0; i < 511; i += 3) {
OFPort p = OFPort.of(i);
builder.set(p);
on[p.getPortNumber()] = true;
}
// Test that all ports that were added are actually on, and all other ports are off
OFPortBitMap512 portmap = builder.build();
//System.out.println(portmap);
Boolean[] actual = new Boolean[511];
for (int i = 0; i < 511; i++) {
actual[i] = false;
}
for (int i = 0; i < 511; i++) {
actual[i] = portmap.isOn(OFPort.of(i));
}
assertArrayEquals(on, actual);
// Turn some ports off
for (int i = 0; i < 511; i += 7) {
on[i] = false;
builder.unset(OFPort.of(i));
}
// Test again
portmap = builder.build();
actual = new Boolean[511];
for (int i = 0; i < 511; i++) {
actual[i] = false;
}
for (int i = 0; i < 511; i++) {
actual[i] = portmap.isOn(OFPort.of(i));
}
assertArrayEquals(on, actual);
}
}