Example #1
0
        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" }));
        }
Example #2
0
        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);
                }
            }
        }
Example #5
0
        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));
        }
Example #6
0
        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));
        }
Example #7
0
        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));
        }
Example #11
0
 /// <summary>
 /// Initialize fixture
 /// </summary>
 /// <param name="fixture">fixture</param>
 public override void Initialize(Fixture fixture)
 {
     fixture.Add(new MoqConvention(DefaultSingleton));
 }
Example #12
0
        public FixtureBuilder(Fixture fixture, IEnumerable <IContent> latest)
        {
            Fixture = fixture;

            Fixture.Add(latest);
        }