public void TestSiblingsBeforeSelf_MissingChild() { var a = new VariableUse() { Name = "a" }; var plus = new OperatorUse() { Text = "+" }; var foo = new VariableUse() { Name = "foo" }; var times = new OperatorUse() { Text = "*" }; var b = new VariableUse() { Name = "b" }; var exp = new Expression(); exp.AddComponents(new Expression[] { a, plus, foo, times, b }); var dot = new OperatorUse { Text = ".", ParentExpression = exp }; Assert.Throws<InvalidOperationException>(() => dot.GetSiblingsBeforeSelf()); }
public void TestSiblingsBeforeSelf() { var a = new VariableUse() { Name = "a" }; var plus = new OperatorUse() { Text = "+" }; var foo = new VariableUse() { Name = "foo" }; var times = new OperatorUse() { Text = "*" }; var b = new VariableUse() { Name = "b" }; var exp = new Expression(); exp.AddComponents(new Expression[] { a, plus, foo, times, b }); var fooSiblings = foo.GetSiblingsBeforeSelf().ToList(); Assert.AreEqual(2, fooSiblings.Count()); Assert.AreSame(a, fooSiblings[0]); Assert.AreSame(plus, fooSiblings[1]); var aSiblings = a.GetSiblingsBeforeSelf().ToList(); Assert.AreEqual(0, aSiblings.Count()); }
public void TestSiblingsAfterSelf() { var a = new VariableUse() { Name = "a" }; var plus = new OperatorUse() { Text = "+" }; var foo = new VariableUse() { Name = "foo" }; var times = new OperatorUse() { Text = "*" }; var b = new VariableUse() { Name = "b" }; var exp = new Expression(); exp.AddComponents(new Expression[] { a, plus, foo, times, b }); var plusSiblings = plus.GetSiblingsAfterSelf().ToList(); Assert.AreEqual(3, plusSiblings.Count()); Assert.AreSame(foo, plusSiblings[0]); Assert.AreSame(times, plusSiblings[1]); Assert.AreSame(b, plusSiblings[2]); var bSiblings = b.GetSiblingsAfterSelf().ToList(); Assert.AreEqual(0, bSiblings.Count()); }