public void CanVisitLocalsAndArguments() { //-- Arrange DeriveClassFrom <object>() .DefaultConstructor() .ImplementInterface <AncestorRepository.IFewMethods>() .Method <int, string>(intf => intf.Five).Implement((w, n) => { var s = w.Local <string>(); s.Assign(n.Func <string>(x => x.ToString)); w.Return(s); }) .AllMethods().Throw <NotImplementedException>() .Flush(); var method = base.Class.GetAllMembers().OfType <MethodMember>().Single(m => m.Name == "Five"); method.Write(); //-- Act var visitor = new TestVisitor(); method.AcceptVisitor(visitor); var visitedOperandStrings = visitor.GetVisitedOperands().Select(op => op.ToString()).ToArray(); //-- Assert CollectionAssert.Contains(visitedOperandStrings, "Loc0"); CollectionAssert.Contains(visitedOperandStrings, "Arg1[n]"); }
public void CanVisitThisAndFields() { //-- Arrange Field <int> fieldOne; DeriveClassFrom <object>() .Field("m_One", out fieldOne) .DefaultConstructor() .ImplementInterface <AncestorRepository.IFewMethods>() .Method <int, string>(intf => intf.Five).Implement((w, n) => { fieldOne.Assign(n); w.Return(fieldOne.Func <string>(x => x.ToString)); }) .AllMethods().Throw <NotImplementedException>() .Flush(); var method = base.Class.GetAllMembers().OfType <MethodMember>().Single(m => m.Name == "Five"); method.Write(); //-- Act var visitor = new TestVisitor(); method.AcceptVisitor(visitor); var visitedOperandStrings = visitor.GetVisitedOperands().Select(op => op.ToString()).ToArray(); //-- Assert CollectionAssert.Contains(visitedOperandStrings, "this"); CollectionAssert.Contains(visitedOperandStrings, "this.Field[m_One]"); }
public void CanReturnEmptyListIfNoOperandsFound() { //-- Arrange DeriveClassFrom <object>() .DefaultConstructor() .ImplementInterface <AncestorRepository.IFewMethods>() .Method(intf => intf.One).Implement(w => Static.Void(Console.WriteLine)) .AllMethods().Throw <NotImplementedException>() .Flush(); var method = base.Class.GetAllMembers().OfType <MethodMember>().Single(m => m.Name == "One"); method.Write(); //-- Act var visitor = new TestVisitor(); method.AcceptVisitor(visitor); var visitedOperands = visitor.GetVisitedOperands(); //-- Assert Assert.That(visitedOperands, Is.Empty); }