public void TestCtwContextTreeNode() { var tree = new CTWContextTree(5); var n = new CTWContextTreeNode(tree); Assert.AreEqual(0.0, n.LogKt, 0.001); Assert.AreEqual(0.0, n.LogProbability, 0.001); Assert.AreEqual(0, n.SymbolCount(0)); Assert.AreEqual(0, n.SymbolCount(1)); Assert.AreEqual(0, n.NumberOf0S); Assert.AreEqual(0, n.NumberOf1S); Assert.AreEqual(tree, n.Tree); Assert.AreEqual(0, n.Visits()); Assert.AreEqual(true, n.IsLeaf()); Assert.AreEqual(1, n.Size()); n.Update(1); n.Update(0); n.Update(0); n.Update(0); n.Update(1); Assert.AreEqual(-4.4465, n.LogKt, 0.001); Assert.AreEqual(-4.44656, n.LogProbability, 0.001); Assert.AreEqual(3, n.SymbolCount(0)); Assert.AreEqual(2, n.SymbolCount(1)); Assert.AreEqual(3, n.NumberOf0S); Assert.AreEqual(2, n.NumberOf1S); Assert.AreEqual(tree, n.Tree); Assert.AreEqual(5, n.Visits()); Assert.AreEqual(true, n.IsLeaf()); Assert.AreEqual(1, n.Size()); n.Revert(1); Assert.AreEqual(-3.2425, n.LogKt, 0.001); Assert.AreEqual(-3.24259, n.LogProbability, 0.001); Assert.AreEqual(3, n.SymbolCount(0)); Assert.AreEqual(1, n.SymbolCount(1)); Assert.AreEqual(3, n.NumberOf0S); Assert.AreEqual(1, n.NumberOf1S); Assert.AreEqual(tree, n.Tree); Assert.AreEqual(4, n.Visits()); Assert.AreEqual(true, n.IsLeaf()); Assert.AreEqual(1, n.Size()); //Todo:test non-leaf }