public void CompileObjectMemberExpression() { var fixture = new Fixture() { x = 12, y = "aaa", a = "x", c = () => "string" }; Assert.Equal(fixture.a, "this.a".Compile().EvaluateAs <string>(fixture)); Assert.Equal(fixture.a, "this[thisIsA]".Compile(ParseOption.CreateOption() .AddLiteralValue("thisIsA", "a") .AsReadOnly() ).EvaluateAs <string>(fixture)); Assert.Equal("aa", "this.a()".Compile().EvaluateAs <string>(new Fixture { a = new Func <string>(() => "aa") })); Assert.Equal("aa", "this.D()".Compile().EvaluateAs <string>(new Fixture { D = new Func <string>(() => "aa") })); Assert.Equal("12122", "this.D".Compile().EvaluateAs <string>(new Fixture { D = "12122" })); Assert.Equal(fixture.ToString(), "this.ToString()".Compile().EvaluateAs <string>(fixture)); Assert.Equal(fixture.c(), "this.c()".Compile().EvaluateAs <string>(fixture)); Assert.Equal(fixture.ToString(), "this.ToString()".Compile().EvaluateAsType(fixture, typeof(string))); Assert.Throws <ParseException>(() => "ToString()".Compile().Evaluate(fixture)); Assert.Equal(3, "this.lengthOf('abc')".Compile().Evaluate(new { lengthOf = new Func <string, int>(s => s.Length) })); Assert.Equal(fixture.GetString("abc"), "this.GetString('abc')".Compile().Evaluate(fixture)); Assert.Equal(fixture.Add(12), "this.Add(12)".Compile().Evaluate(fixture)); Assert.Equal(fixture.Add(12), "a.Add(12)".Compile().Evaluate(new { a = fixture })); Assert.Equal("1111", "this.f[0]()".Compile().Evaluate(new { f = new object[] { new Func <string>(() => "1111") } })); Assert.Equal(6, "('abc'+d).Length".Compile().Evaluate(new { d = "efg" })); }
public void CompileObjectMemberExpression() { Assert.Throws <ArgumentNullException>(() => Core.Compiler.Default.Compile <Fixture>(null)); var cachedEvaluator = "3*'abc'".Compile <Fixture>(); Assert.Equal("abcabcabc", cachedEvaluator.EvaluateAs <Fixture, string>(null)); Assert.Equal("abcabcabc", cachedEvaluator.EvaluateAs <Fixture, string>(null)); var fixture = new Fixture() { x = 12, y = "aaa", a = "x", c = () => "string" }; Assert.Equal(3, "abc".Compile <IndexerObject>().EvaluateAs <IndexerObject, int>(new IndexerObject())); Assert.Equal(fixture.a, "this.a".Compile <Fixture>().EvaluateAs <Fixture, string>(fixture)); Assert.Equal(fixture.a, "this[thisIsA]".Compile <Fixture>( ParseOption.CreateOption() .AddLiteralValue("thisIsA", "a") .AsReadOnly() ).EvaluateAs <Fixture, string>(fixture)); Assert.Equal("aa", "this.a()".Compile <Fixture>().EvaluateAs <Fixture, string>(new Fixture { a = new Func <string>(() => "aa") })); Assert.Equal("aa", "this.D()".Compile <Fixture>().EvaluateAs <Fixture, string>(new Fixture { D = new Func <string>(() => "aa") })); Assert.Equal("12122", "this.D".Compile <Fixture>().EvaluateAs <Fixture, string>(new Fixture { D = "12122" })); Assert.Equal("12122", "D".Compile <Fixture>().EvaluateAs <Fixture, string>(new Fixture { D = "12122" })); Assert.Equal(12122, "E".Compile <Fixture>().EvaluateAs <Fixture, int>(new Fixture { E = 12122 })); Assert.Equal("this is a value", "a".Compile <Fixture>().EvaluateAs <Fixture, string>(new Fixture { a = "this is a value" })); Assert.Equal(123456, "x".Compile <Fixture>().EvaluateAs <Fixture, int>(new Fixture { x = 123456 })); Assert.Equal(fixture.ToString(), "this.ToString()".Compile <Fixture>().EvaluateAs <Fixture, string>(fixture)); Assert.Equal(fixture.c(), "this.c()".Compile <Fixture>().EvaluateAs <Fixture, string>(fixture)); Assert.Equal(fixture.c(), "this.c()".Compile <Fixture>(Core.Parser.Default).EvaluateAs <Fixture, string>(fixture)); Assert.Equal(fixture.ToString(), "this.ToString()".Compile <Fixture>().EvaluateAsType(fixture, typeof(string))); Assert.Equal(fixture.GetString("abc"), "this.GetString('abc')".Compile <Fixture>().Evaluate(fixture)); Assert.Equal(fixture.Add(12), "this.Add(12)".Compile <Fixture>().Evaluate(fixture)); Assert.Equal(fixture.Add(12).ToString(), "this.Add(12)".Compile <Fixture>().EvaluateAs <Fixture, string>(fixture)); Assert.Null("this.DoSomething()".Compile <Fixture>().Evaluate(fixture)); Assert.Throws <MemberNotFoundException>(() => "Y".Compile <Fixture>().Evaluate(fixture)); Assert.Throws <MemberNotFoundException>(() => "this.Y".Compile <Fixture>().Evaluate(fixture)); }
public void Fixture_Null_Reference_Test() { var fixture = new Fixture(); Assert.Throws <ArgumentNullException>(() => fixture.Generate(null)); Assert.Throws <ArgumentNullException>(() => fixture.Generate((Type)null)); Assert.Throws <ArgumentNullException>(() => fixture.Locate((Type)null)); Assert.Throws <ArgumentNullException>(() => fixture.Populate(null)); Assert.Throws <ArgumentNullException>(() => fixture.Return((Func <DataRequest, ISomeInterface>)null)); Assert.Throws <ArgumentNullException>(() => fixture.ReturnIEnumerable((ISomeInterface[])null)); Assert.Throws <ArgumentNullException>(() => fixture.Add((IConvention)null)); Assert.Throws <ArgumentNullException>(() => fixture.Add((IFixtureCustomization)null)); }
public override void Initialize(Fixture fixture) { foreach (var type in _types) { var initializer = fixture.Locate(type); if (initializer is IConvention) { fixture.Add(initializer as IConvention); } else if (initializer is IFixtureCustomization) { fixture.Add(initializer as IFixtureCustomization); } } }
public static IPageBuilder <T> Get <T>(this Fixture fixture) where T : PageData { var contents = fixture.Contents.OfType <T>().ToList(); fixture.Add(contents); return(new PageBuilder <T>(fixture)); }
public static IPageBuilder <T> Update <T>(this Fixture fixture, Action <T> build) where T : PageData { var contents = fixture.Contents.OfType <T>().ToList(); fixture.Add(contents); return(new PageBuilder <T>(fixture).Update(build)); }
public void GetFromObjectMethod() { object state = "this is a string"; Assert.Throws <System.Reflection.AmbiguousMatchException>(() => ObjectMemberEvaluator.Evaluate(state, "ToString", false)); var fixture = new Fixture() { x = 12, y = "aaa" }; var toString = ObjectMemberEvaluator.Evaluate(fixture, "ToString", false) as Func <object[], object>; Assert.NotNull(toString); Assert.Equal(fixture.ToString(), toString(null)); var getString = ObjectMemberEvaluator.Evaluate(fixture, "GetString", false) as Func <object[], object>; Assert.NotNull(getString); Assert.Equal(fixture.GetString("demo"), getString(new object[] { "demo" })); var add = ObjectMemberEvaluator.Evaluate(fixture, "Add", false) as Func <object[], object>; Assert.NotNull(add); Assert.Equal(fixture.Add(13), add(new object[] { 13 })); fixture.DoSomething(); Assert.Equal("function called", fixture.y); fixture.y = "function not call"; Assert.Equal("function not call", fixture.y); var watch = Stopwatch.StartNew(); watch.Start(); var doSomething = ObjectMemberEvaluator.Evaluate(fixture, "DoSomething", false) as Func <object[], object>; watch.Stop(); var elapsedTicks = watch.ElapsedTicks; Assert.NotNull(doSomething); doSomething(null); Assert.Equal("function called", fixture.y); fixture.y = "function not call"; watch.Restart(); var doSomethingAgain = ObjectMemberEvaluator.Evaluate(fixture, "DoSomething", false) as Func <object[], object>; watch.Stop(); Assert.True(watch.ElapsedTicks < elapsedTicks); Assert.NotNull(doSomethingAgain); doSomethingAgain(null); Assert.Equal("function called", fixture.y); Assert.Equal("Not found member(abc) in (Fixture)", Assert.Throws <MemberNotFoundException>(() => ObjectMemberEvaluator.Evaluate(fixture, "abc", false)).Message); }
public IPageBuilder <T> Update <TPageType>(Action <TPageType, IEnumerable <T> > build) where TPageType : PageData { foreach (var content in Fixture.Contents.OfType <TPageType>()) { foreach (var culture in Fixture.Cultures) { Update( content, culture, p => build.Invoke((TPageType)p, Fixture.GetLatest(culture).Select(c => (T)c)) ); } } _pages.ForEach(p => Fixture.Add(p)); return(new PageBuilder <T>(Fixture)); }
public IPageBuilder <T> Update <TPageType>(Action <TPageType> build) where TPageType : PageData { foreach (var content in Fixture.Contents.OfType <TPageType>()) { foreach (var culture in Fixture.Cultures) { Update( content, culture, p => build.Invoke((TPageType)p) ); } } _pages.ForEach(p => Fixture.Add(p)); return(new PageBuilder <T>(Fixture)); }
public IPageBuilder <T> Update(Action <T> build) { foreach (var content in Fixture.Latest) { var command = new UpdateContent(content); if (build != null) { command.Build = p => build.Invoke((T)p); } Add((PageData)command.Execute()); } _pages.ForEach(p => Fixture.Add(p)); return(new PageBuilder <T>(Fixture)); }
/// <summary> /// Initialize fixture /// </summary> /// <param name="fixture">fixture</param> public override void Initialize(Fixture fixture) { fixture.Add(new MoqConvention(DefaultSingleton)); }
public FixtureBuilder(Fixture fixture, IEnumerable <IContent> latest) { Fixture = fixture; Fixture.Add(latest); }