@Test public void createFromQueues() { // Create config [[e],[]] DistEventType sendE = DistEventType.SendEvent("e", cid1); chStates.get(0).enqueue(sendE); mc = ImmutableMultiChState.fromChannelStates(chStates); // Create config [[],[]] mc2 = ImmutableMultiChState.fromChannelIds(cids); assertTrue(mc != mc2); assertTrue(!mc.equals(mc2)); // Add e to [[],[]] at cid1 (index 0) // This should result in [[],[e]] and equal the first mc above. mc3 = mc2.getNextChState(sendE); assertTrue(mc == mc3); assertTrue(mc.equals(mc3)); assertTrue(mc.hashCode() == mc3.hashCode()); // Apply e again, resulting in: [[e,e],[]] mc4 = mc3.getNextChState(sendE); assertTrue(mc != mc4); assertTrue(mc2 != mc4); assertTrue(mc3 != mc4); // Consume e, resulting in: [[e],[]] DistEventType recvE = DistEventType.RecvEvent("e", cid1); mc4 = mc4.getNextChState(recvE); assertTrue(mc4 == mc3); // Execute a local etype at pid 0, which should not change the state DistEventType localE = DistEventType.LocalEvent("e", 1); mc4 = mc4.getNextChState(localE); assertTrue(mc4 == mc3); }