public void GenerateNFA() { var element1 = ReUtils.NewDummy('1'); var element2 = ReUtils.NewDummy('2'); var choice = new ReUnion(ImmutableArray.Create(element1, element2)); const string expected = "0 -- [1] --> 1\r\n" + "0 -- [2] --> 1\r\n" + ""; Assert.That(FARenderer.Render(ReUtils.Build(choice)), Is.EqualTo(expected)); }
public void Union_Collapse() { var child1 = ReUtils.NewDummy('1'); var child2 = ReUtils.NewDummy('2'); var child3 = ReUtils.NewDummy('3'); var child4 = ReUtils.NewDummy('4'); var subUnion = new ReUnion(ImmutableArray.Create(child2, child3)); var element = ReFactory.NewUnion(new ReElement[] { child1, subUnion, ReEmptyLanguage.Instance, child4 }); Assert.That(element, Is.Not.Null); Assert.That(element, Is.TypeOf(typeof(ReUnion))); var union = (ReUnion)element; Assert.That(union.Elements, Is.EquivalentTo(new ReElement[] { child1, child2, child3, child4 })); }
public void Constructor() { var element1 = ReUtils.NewDummy('1'); var element2 = ReUtils.NewDummy('2'); var elements = ImmutableArray.Create( element1, element2); var choice = new ReUnion(elements); var enumerator = choice.Elements.GetEnumerator(); Assert.That(enumerator.MoveNext(), Is.EqualTo(true), "should have element[0]"); Assert.That(enumerator.Current, Is.SameAs(element1), "element[0] should be mock1"); Assert.That(enumerator.MoveNext(), Is.EqualTo(true), "should have element[1]"); Assert.That(enumerator.Current, Is.SameAs(element2), "element[1] should be mock2"); Assert.That(enumerator.MoveNext(), Is.EqualTo(false), "should not have element[2]"); }
public void MatchesEmptyString() { var element1 = new Mock <ReElement>(); var element2 = new Mock <ReElement>(); var sequence = new ReUnion(ImmutableArray.Create( element1.Object, element2.Object)); element1.Setup(x => x.MatchesEmptyString).Returns(false); element2.Setup(x => x.MatchesEmptyString).Returns(false); Assert.That(sequence.MatchesEmptyString, Is.EqualTo(false)); element1.Setup(x => x.MatchesEmptyString).Returns(false); element2.Setup(x => x.MatchesEmptyString).Returns(true); Assert.That(sequence.MatchesEmptyString, Is.EqualTo(true)); element1.Setup(x => x.MatchesEmptyString).Returns(true); Assert.That(sequence.MatchesEmptyString, Is.EqualTo(true)); }
static void RenderReUnion(StringBuilder builder, int indent, ReUnion element) { builder.Append("new ReUnion("); Render(builder, indent, element.Elements); builder.Append(")"); }