static async Task CheckSameAsync(IChaserNode expected, IChaserNode actual) { Assert.AreEqual(expected.Caption, actual.Caption); Assert.AreEqual(expected.Probability, actual.Probability); var expectedEnumerator = (await expected.GetChildrenAsync(0)).GetEnumerator(); var actualEnumerator = (await actual.GetChildrenAsync(0)).GetEnumerator(); var maxProbability = 1.0; var probabilitySum = 0.0; var isLeaf = true; while (expectedEnumerator.MoveNext()) { isLeaf = false; Assert.IsTrue(actualEnumerator.MoveNext()); var expectedChild = expectedEnumerator.Current; var actualChild = actualEnumerator.Current; await CheckSameAsync(expectedChild, actualChild); Assert.IsTrue(expectedChild.Probability <= maxProbability); maxProbability = expectedChild.Probability; probabilitySum += expectedChild.Probability; } Assert.IsTrue(isLeaf || !actualEnumerator.MoveNext()); Assert.IsTrue(0 <= maxProbability); Assert.IsTrue(probabilitySum <= 1.0); }
public ChaserQueryNode(IChaserQueryNode <Coords> parent, IChaserNode node, Func <IReadOnlyList <IChaserNode>, IReadOnlyList <Coords> > packingAlgorithm, Coords coords) { Parent = parent; _node = node; _packingAlgorithm = packingAlgorithm; _coords = coords; IsUpdateNeeded = true; }
public AlphabeticChaserNode(IChaserNode wrapped, double probabilityLimit) { _wrapped = wrapped; _probabilityLimit = probabilityLimit; }