Implement IntentMap and IntentOperation
Change-Id: I8ef5ddb37ae2694a984c190465e86026fa643e7b
diff --git a/src/test/java/net/onrc/onos/intent/IntentMapTest.java b/src/test/java/net/onrc/onos/intent/IntentMapTest.java
new file mode 100644
index 0000000..7879206
--- /dev/null
+++ b/src/test/java/net/onrc/onos/intent/IntentMapTest.java
@@ -0,0 +1,75 @@
+package net.onrc.onos.intent;
+
+import static org.junit.Assert.*;
+
+import java.util.LinkedList;
+
+import net.onrc.onos.intent.Intent.IntentState;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class IntentMapTest {
+
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ @Test
+ public void test() {
+ IntentMap intents = new IntentMap();
+ LinkedList<IntentOperation> operations = new LinkedList<>();
+
+ // add three intents
+
+ ShortestPathIntent intent1 =
+ new ShortestPathIntent("1", 11L, 12L, 13L, 14L, 15L, 16L);
+ ShortestPathIntent intent2 =
+ new ShortestPathIntent("2", 21L, 22L, 23L, 24L, 25L, 26L);
+ ConstrainedShortestPathIntent intent3 =
+ new ConstrainedShortestPathIntent("3", 31L, 32L, 33L, 34L, 35L, 36L, 1000.0);
+
+ operations.add(new IntentOperation(IntentOperation.Operator.ADD, intent1));
+ operations.add(new IntentOperation(IntentOperation.Operator.ADD, intent2));
+ operations.add(new IntentOperation(IntentOperation.Operator.ADD, intent3));
+ intents.executeOperations(operations);
+
+ // check
+
+ assertEquals(3, intents.getAllIntents().size());
+ assertEquals(intent1, intents.getIntent("1"));
+ assertEquals(intent2, intents.getIntent("2"));
+ assertEquals(intent3, intents.getIntent("3"));
+
+ // request removal of an intent
+
+ Intent intent4 = new Intent("1");
+ operations.clear();
+ operations.add(new IntentOperation(IntentOperation.Operator.REMOVE, intent4));
+ intents.executeOperations(operations);
+
+ // check
+
+ assertEquals(3, intents.getAllIntents().size());
+ assertEquals(IntentState.DEL_REQ, intent1.getState());
+
+ // change intents' state which will be purged
+
+ intent2.setState(IntentState.INST_NACK);
+ intent3.setState(IntentState.DEL_ACK);
+
+ // purge
+
+ intents.purge();
+
+ // check
+
+ assertEquals(1, intents.getAllIntents().size());
+ assertEquals("1", intents.getAllIntents().iterator().next().getId());
+ }
+}