+++ /dev/null
-package org.openflow.protocol;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.EnumSet;
-
-import org.junit.Test;
-import org.openflow.protocol.Wildcards.Flag;
-
-public class WildcardsTest {
-
- @Test
- public void testBasic() {
- int[] intMasks = { 0, 0x3820e0, OFMatch.OFPFW_ALL_SANITIZED };
- for (int i : intMasks) {
- Wildcards w = Wildcards.of(i);
- assertEquals(i, w.getInt());
- }
- }
-
- @Test
- public void testAllSanitize() {
- Wildcards w = Wildcards.of(OFMatch.OFPFW_ALL);
- assertEquals(OFMatch.OFPFW_ALL_SANITIZED, w.getInt());
- assertTrue(w.isFull());
- assertFalse(w.isExact());
- }
-
- @Test
- public void testAll() {
- Wildcards all = Wildcards.FULL;
- assertTrue(all.isFull());
- assertFalse(all.isExact());
- assertEquals(0, all.getNwDstMask());
- assertEquals(0, all.getNwSrcMask());
-
- // unsetting flags from NONE is a no-op
- Wildcards stillAll = all.wildcard(Flag.IN_PORT);
- assertTrue(stillAll.isFull());
- assertEquals(all, stillAll);
-
- // so is setting a >= 32 netmask
-
- stillAll = all.withNwSrcMask(0);
- assertTrue(stillAll.isFull());
- assertEquals(all, stillAll);
-
- stillAll = all.withNwDstMask(0);
- assertTrue(stillAll.isFull());
- assertEquals(all, stillAll);
- }
-
- @Test
- public void testNone() {
- Wildcards none = Wildcards.EXACT;
- assertTrue(none.isExact());
- assertEquals(32, none.getNwDstMask());
- assertEquals(32, none.getNwSrcMask());
-
- // unsetting flags from NONE is a no-op
- Wildcards stillNone = none.matchOn(Flag.IN_PORT);
- assertTrue(stillNone.isExact());
- assertEquals(none, stillNone);
-
- // so is setting a >= 32 netmask
- stillNone = none.withNwSrcMask(32);
- assertTrue(stillNone.isExact());
- assertEquals(none, stillNone);
-
- stillNone = none.withNwDstMask(32);
- assertTrue(stillNone.isExact());
- assertEquals(none, stillNone);
- }
-
- @Test
- public void testSetOneFlag() {
- Wildcards none = Wildcards.EXACT;
- assertTrue(none.isExact());
- assertFalse(none.isWildcarded(Flag.DL_SRC));
- Wildcards one = none.wildcard(Flag.DL_SRC);
- assertFalse(one.isExact());
- assertTrue(one.isWildcarded(Flag.DL_SRC));
- assertEquals(OFMatch.OFPFW_DL_SRC, one.getInt());
- assertEquals(EnumSet.of(Flag.DL_SRC), one.getWildcardedFlags());
- }
-
- @Test
- public void testSetTwoFlags() {
- Wildcards none = Wildcards.EXACT;
-
- // set two flags
- Wildcards two = none.wildcard(Flag.DL_SRC, Flag.DL_DST);
- assertFalse(two.isExact());
- assertTrue(two.isWildcarded(Flag.DL_SRC));
- assertTrue(two.isWildcarded(Flag.DL_DST));
- assertEquals(OFMatch.OFPFW_DL_SRC | OFMatch.OFPFW_DL_DST, two.getInt());
- assertEquals(EnumSet.of(Flag.DL_SRC, Flag.DL_DST), two.getWildcardedFlags());
-
- // unset dl_dst
- Wildcards gone = two.matchOn(Flag.DL_DST);
- assertFalse(gone.isExact());
- assertTrue(gone.isWildcarded(Flag.DL_SRC));
- assertFalse(gone.isWildcarded(Flag.DL_DST));
- assertEquals(OFMatch.OFPFW_DL_SRC, gone.getInt());
- assertEquals(EnumSet.of(Flag.DL_SRC), gone.getWildcardedFlags());
- }
-
- @Test
- public void testSetNwSrc() {
- Wildcards none = Wildcards.EXACT;
- assertEquals(32, none.getNwSrcMask());
-
- // unsetting flags from NONE is a no-op
- Wildcards nwSet = none.withNwSrcMask(8);
- assertFalse(nwSet.isExact());
- assertEquals(EnumSet.noneOf(Flag.class), nwSet.getWildcardedFlags());
- assertEquals(8, nwSet.getNwSrcMask());
- assertEquals((32 - 8) << OFMatch.OFPFW_NW_SRC_SHIFT, nwSet.getInt());
- }
-
- @Test
- public void testSetNwDst() {
- Wildcards none = Wildcards.EXACT;
- assertEquals(32, none.getNwDstMask());
-
- // unsetting flags from NONE is a no-op
- Wildcards nwSet = none.withNwDstMask(8);
- assertFalse(nwSet.isExact());
- assertEquals(EnumSet.noneOf(Flag.class), nwSet.getWildcardedFlags());
- assertEquals(8, nwSet.getNwDstMask());
- assertEquals((32 - 8) << OFMatch.OFPFW_NW_DST_SHIFT, nwSet.getInt());
- }
-
- @Test
- public void testToString() {
- String s = Wildcards.FULL.toString();
- assertNotNull(s);
- assertTrue(s.length() > 0);
- }
-
- @Test
- public void testInvert() {
- assertEquals(Wildcards.FULL, Wildcards.EXACT.inverted());
-
- Wildcards some = Wildcards.of(Flag.DL_VLAN, Flag.DL_VLAN_PCP);
- Wildcards inv = some.inverted();
-
- for(Flag f : Flag.values()) {
- boolean shouldBeSet = (f == Flag.DL_VLAN || f == Flag.DL_VLAN_PCP);
-
- assertEquals("Flag " + f + " "
- + (shouldBeSet ? "should be set " : "should not be set"),
- shouldBeSet, some.isWildcarded(f));
- assertEquals(!(f == Flag.DL_VLAN || f == Flag.DL_VLAN_PCP), inv.isWildcarded(f));
- }
- assertEquals(0, inv.getNwDstMask());
- assertEquals(0, inv.getNwSrcMask());
- }
-}