public void TestFind_TwoChoices() { IAtomContainer dummy = new Mock <IAtomContainer>().Object; int[][] g = new int[][] { new[] { 1, 5, 6 }, new[] { 0, 2, 8 }, new[] { 1, 3, 9 }, new[] { 2, 4, 7 }, new[] { 3, 5, 10 }, new[] { 0, 4, 11 }, new[] { 0, 14, 15 }, new[] { 3, 20, 21 }, new[] { 1, 12, 13 }, new[] { 2, 22, 23 }, new[] { 4, 18, 19 }, new[] { 5, 16, 17 }, new[] { 8, 13 }, new[] { 8, 12 }, new[] { 6, 15 }, new[] { 14, 6 }, new[] { 11, 17 }, new[] { 16, 11 }, new[] { 10, 19 }, new[] { 10, 18 }, new[] { 7, 21 }, new[] { 7, 20 }, new[] { 9, 23 }, new[] { 22, 9 } }; // this mock the invariants long[] values = new long[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }; EquivalentSetFinder finder = new MinimumEquivalentCyclicSet(); var set = finder.Find(values, dummy, g); Assert.AreEqual(6, set.Count); Assert.IsTrue(set.Contains(0)); Assert.IsTrue(set.Contains(1)); Assert.IsTrue(set.Contains(2)); Assert.IsTrue(set.Contains(3)); Assert.IsTrue(set.Contains(4)); Assert.IsTrue(set.Contains(5)); // invert values, we should now get the other set values = new long[] { 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }; set = finder.Find(values, dummy, g); Assert.AreEqual(6, set.Count); Assert.IsTrue(set.Contains(6)); Assert.IsTrue(set.Contains(7)); Assert.IsTrue(set.Contains(8)); Assert.IsTrue(set.Contains(9)); Assert.IsTrue(set.Contains(10)); Assert.IsTrue(set.Contains(11)); }
public void TestFind_NoChoice() { IAtomContainer dummy = new Mock <IAtomContainer>().Object; int[][] g = new int[][] { new[] { 1, 2, 3 }, new[] { 0, 4, 9 }, new[] { 0, 5, 6 }, new[] { 0, 7, 8 }, new[] { 1 }, new[] { 2 }, new[] { 2 }, new[] { 3 }, new[] { 3 }, new[] { 1 } }; // this mock the invariants long[] values = new long[] { 1, 2, 2, 2, 3, 3, 3, 3, 3, 3 }; EquivalentSetFinder finder = new MinimumEquivalentCyclicSet(); var set = finder.Find(values, dummy, g); Assert.AreEqual(0, set.Count); }
public void TestFind_OneChoice() { IAtomContainer dummy = new Mock <IAtomContainer>().Object; int[][] g = new int[][] { new[] { 1, 5, 6 }, new[] { 0, 2 }, new[] { 1, 3 }, new[] { 2, 4, 7 }, new[] { 3, 5 }, new[] { 0, 4 }, new[] { 0 }, new[] { 3 } }; // this mock the invariants long[] values = new long[] { 1, 0, 0, 1, 0, 0, 2, 2 }; EquivalentSetFinder finder = new MinimumEquivalentCyclicSet(); var set = finder.Find(values, dummy, g); Assert.AreEqual(2, set.Count); Assert.IsTrue(set.Contains(0)); Assert.IsTrue(set.Contains(3)); }