public void PropertyVisitor_WithExcludeAdapter_StopsVisitationWhenRequired() { var container = new ExcludeContainer(); var visitor = new TestVisitor("X"); visitor.AddAdapter(new ExcludeAdapter(visitor)); PropertyContainer.Accept(visitor, ref container); Assert.That(visitor.ToString(), Does.Not.Contain("int")); Assert.That(visitor.ToString(), Does.Contain("float")); }
public void PropertyVisitor_WithMultiAdapter_CallsMostTypedAdapter() { var container = new Container(); var visitor = new TestVisitor("Failure"); visitor.AddAdapter(new MultiAdapter(visitor)); PropertyContainer.Accept(visitor, ref container); Assert.That(visitor.ToString(), Is.EqualTo("IVisit<Container, int>")); visitor.Reset(); PropertyContainer.Accept(visitor, ref container); Assert.That(visitor.ToString(), Is.EqualTo("IVisit<Container, int>")); }
public void PropertyVisitor_WhenChainingAdapters_RespectVisitation(int count, params VisitStatus[] statuses) { var container = new Container(); var expectedHasDefault = true; foreach (var status in statuses) { if (status == VisitStatus.Stop) { expectedHasDefault = false; break; } if (status == VisitStatus.Handled) { break; } } var visitor = new TestVisitor(expectedHasDefault ? "0" : ""); foreach (var status in statuses) { visitor.AddAdapter(new ChainedAdapter(visitor, status)); } PropertyContainer.Accept(visitor, ref container); Assert.That(visitor.ToString(), Is.EqualTo(new string('0', count))); }
public void PropertyVisitor_WithoutAdapters_CallsDefaultBehaviour() { var container = new Container(); var visitor = new TestVisitor("No adapters were reached"); PropertyContainer.Accept(visitor, ref container); Assert.That(visitor.ToString(), Is.EqualTo("No adapters were reached")); }
public void PropertyVisitor_WithContravariantAdapters_CallsMostTyped() { var container = new ContainerWithInterface(); var visitor = new TestVisitor(""); visitor.AddAdapter(new ContravariantAdapter(visitor)); PropertyContainer.Accept(visitor, ref container); Assert.That(visitor.ToString(), Is.EqualTo("ABA")); }
public void PropertyVisitor_WithMixedAdapters_CanIterate() { var container = new MixedContainer(); var visitor = new TestVisitor(""); visitor.AddAdapter(new MixedContravariantAdapter(visitor)); visitor.AddAdapter(new MixedAdapter(visitor)); PropertyContainer.Accept(visitor, ref container); Assert.That(visitor.ToString(), Is.EqualTo("AA")); }
public void PropertyVisitor_WithWrappingAdapter_CallsAdapterAndDefault() { var container = new Container(); var visitor = new TestVisitor("Failure is inevitable"); visitor.AddAdapter(new WrappingAdapter(visitor)); PropertyContainer.Accept(visitor, ref container); Assert.That(visitor.ToString(), Is.EqualTo("This sentence: \"Failure is inevitable\" is simply not true")); }
public void PropertyVisitor_WithInertAdapter_ContinuesAsExpected() { var container = new Container(); var visitor = new TestVisitor(""); visitor.AddAdapter(new MixedContravariantAdapter(visitor)); visitor.AddAdapter(new MixedAdapter(visitor)); visitor.AddAdapter(new MultiAdapter(visitor)); PropertyContainer.Accept(visitor, ref container); Assert.That(visitor.ToString(), Is.EqualTo("IVisit<Container, int>")); }
public void PropertyVisitor_WhenCallingMultipleAdapters_RespectVisitation(bool withAdapters) { for (var count = 0; count < 10; ++count) { var container = new Container(); var visitor = new TestVisitor("1"); visitor.AddAdapter(new MultiContinueAdapter(visitor, count, withAdapters)); visitor.AddAdapter(new MessageAdapter(visitor, "0")); PropertyContainer.Accept(visitor, ref container); var result = withAdapters ? new string('0', count) : new string('1', count); Assert.That(visitor.ToString(), Is.EqualTo(result)); } }
public void TraverseTriePreOrder() { Trie trie = TrieFactory.Create(); List <Tuple <string, int> > tuples = new List <Tuple <string, int> >() { new Tuple <string, int>("bogus", 99), new Tuple <string, int>("aack", 88), new Tuple <string, int>("zebra", 77), new Tuple <string, int>("kangaroo", 66), new Tuple <string, int>("donkey", 55), new Tuple <string, int>("dog", 44) }; foreach (Tuple <string, int> tuple in tuples) { trie.Insert(tuple.Item1, tuple.Item2); } Assert.AreEqual(trie.Count(), tuples.Count); TestVisitor testVisitor = new TestVisitor(); trie.Traverse(TraversalType.PreOrder, testVisitor); Console.WriteLine(testVisitor.ToString()); }