Beispiel #1
0
        public void return_null()
        {
            var result = CodegenScenario.ForBuilds <string, string>(m => m.Frames.ReturnNull());

            result.LinesOfCode.ShouldContain("return null;");
            result.Object.Create("foo").ShouldBeNull();
        }
        public void return_a_variable_by_type()
        {
            var result = CodegenScenario.ForBuilds <int, int>(m => m.Frames.Return(typeof(int)));

            result.LinesOfCode.Should().Contain("return arg1;");
            result.Object.Create(5).Should().Be(5);
        }
Beispiel #3
0
        public void just_write_text()
        {
            var result = CodegenScenario.ForAction <int>(m =>
            {
                m.Frames.Code("var x = 0;");
            });

            result.LinesOfCode.ShouldContain("var x = 0;");
        }
Beispiel #4
0
        public void write_text_with_substitution()
        {
            var result = CodegenScenario.ForAction <int>(m =>
            {
                m.Frames.Code("var x = {0};", 22);
            });

            result.LinesOfCode.ShouldContain("var x = 22;");
        }
Beispiel #5
0
        public void write_text_with_formatted_text()
        {
            var result = CodegenScenario.ForAction <int>(m =>
            {
                m.Frames.Code("var x = {0};", "hi");
            });

            result.LinesOfCode.ShouldContain("var x = \"hi\";");
        }
        public void write_the_not_supported_exception()
        {
            var results = CodegenScenario.ForAction <int>(x =>
            {
                x.Frames.ThrowNotSupportedException();
            });

            results.LinesOfCode.ShouldContain("throw new System.NotSupportedException();");
        }
        public void write_with_arguments()
        {
            var results = CodegenScenario.ForAction <int>(x =>
            {
                x.Frames.Throw <InvalidOperationException>("foo");
            });

            results.LinesOfCode.ShouldContain("throw new System.InvalidOperationException(\"foo\");");
        }
Beispiel #8
0
        public void no_arg_return_as_built_simplest_case()
        {
            var result = CodegenScenario.ForBuilds <NoArgGuy>(m =>
            {
                m.Frames.CallConstructor(() => new NoArgGuy(), c => c.Mode = ConstructorCallMode.ReturnValue);
            });

            result.LinesOfCode.ShouldContain($"return new {typeof(NoArgGuy).FullNameInCode()}();");
            result.Object.Build().ShouldNotBeNull();
        }
Beispiel #9
0
        public void override_built_type()
        {
            var result = CodegenScenario.ForBuilds <IGuy>(m =>
            {
                m.Frames.CallConstructor(() => new NoArgGuy(), c => c.DeclaredType = typeof(IGuy));
                m.Frames.Return(typeof(NoArgGuy));
            });

            result.LinesOfCode.ShouldContain($"{typeof(IGuy).FullNameInCode()} noArgGuy = new {typeof(NoArgGuy).FullNameInCode()}();");
            result.Object.Build().ShouldNotBeNull();
        }
        public void return_explicit_variable()
        {
            var result = CodegenScenario.ForBuilds <int, int>(m =>
            {
                var arg = m.Arguments.Single();
                m.Frames.Return(arg);
            });

            result.LinesOfCode.Should().Contain("return arg1;");
            result.Object.Create(5).Should().Be(5);
        }
Beispiel #11
0
        public void no_arg_no_return_no_using_simplest_case()
        {
            var result = CodegenScenario.ForBuilds <NoArgGuy>(m =>
            {
                m.Frames.CallConstructor(() => new NoArgGuy());
                m.Frames.Return(typeof(NoArgGuy));
            });

            result.LinesOfCode.ShouldContain($"var noArgGuy = new {typeof(NoArgGuy).FullNameInCode()}();");
            result.Object.Build().ShouldNotBeNull();
        }
Beispiel #12
0
        public void one_argument_constructor()
        {
            var result = CodegenScenario.ForBuilds <MultiArgGuy, int>(m =>
            {
                m.Frames.CallConstructor <MultiArgGuy>(() => new MultiArgGuy(0));
                m.Return();
            });

            var guy = result.Object.Create(14);

            guy.Number.ShouldBe(14);
        }
Beispiel #13
0
        public void simple_execution_with_action_2()
        {
            var result = CodegenScenario.ForAction <Tracer>(m => m.Frames.Call <Tracer>(x => x.Call()));

            var tracer = new Tracer();

            result.Object.DoStuff(tracer);

            tracer.Called.ShouldBeTrue();

            result.LinesOfCode.ShouldContain("arg1.Call();");
        }
Beispiel #14
0
        public void write_text_with_variables()
        {
            var result = CodegenScenario.ForAction <int>(m =>
            {
                var x = Variable.For <string>("x");
                m.Frames.Code("var {0} = {1};", x, "hi").Creates(x);
                m.Frames.Code("System.Console.WriteLine({0});", Use.Type <string>());
            });

            result.LinesOfCode.ShouldContain("var x = \"hi\";");
            result.LinesOfCode.ShouldContain("System.Console.WriteLine(x);");
        }
Beispiel #15
0
        public void no_arg_return_with_one_setter_case()
        {
            var result = CodegenScenario.ForBuilds <NoArgGuy, int>(m =>
            {
                m.Frames.CallConstructor(() => new NoArgGuy(), @call =>
                {
                    @call.Mode = ConstructorCallMode.ReturnValue;
                    @call.Set(x => x.Number);
                });
            });

            result.Object.Create(11).Number.ShouldBe(11);
        }
Beispiel #16
0
        public void writes_with_source_writer_fanciness()
        {
            var result = CodegenScenario.ForAction <int>(m =>
            {
                m.Frames.Code(@"BLOCK:if (true)
// Comment
END
");
            });

            result.Code.ShouldContain("if");
            result.Code.ShouldNotContain("BLOCK");
        }
        public void two_argument_constructor()
        {
            var result = CodegenScenario.ForBuilds <MultiArgGuy, int, double>(m =>
            {
                m.Frames.CallConstructor <MultiArgGuy>(() => new MultiArgGuy(0, 0));
                m.Return();
            });

            var guy = result.Object.Create(14, 1.23);

            guy.Number.Should().Be(14);
            guy.Amount.Should().Be(1.23);
        }
        public void activator_with_return()
        {
            var result = CodegenScenario.ForBuilds <NoArgGuy, NoArgGuyCatcher>(m =>
            {
                m.Frames.CallConstructor(() => new NoArgGuy(), ctor =>
                {
                    ctor.Mode = ConstructorCallMode.ReturnValue;
                    ctor.ActivatorFrames.Call <NoArgGuyCatcher>(x => x.Catch(null));
                });
            });

            var catcher = new NoArgGuyCatcher();
            var guy     = result.Object.Create(catcher);

            catcher.Guy.Should().BeSameAs(guy);
        }
Beispiel #19
0
        public void no_arg_return_with_two_setters_case()
        {
            var result = CodegenScenario.ForBuilds <NoArgGuy, int, double>(m =>
            {
                m.Frames.CallConstructor(() => new NoArgGuy(), @call =>
                {
                    @call.Mode = ConstructorCallMode.ReturnValue;
                    @call.Set(x => x.Number);
                    @call.Set(x => x.Double);
                });
            });

            var noArgGuy = result.Object.Create(11, 1.22);

            noArgGuy.Number.ShouldBe(11);
            noArgGuy.Double.ShouldBe(1.22);
        }
Beispiel #20
0
        public void activator_with_no_return()
        {
            var result = CodegenScenario.ForAction <NoArgGuyCatcher>(m =>
            {
                m.Frames.CallConstructor(() => new NoArgGuy(), ctor =>
                {
                    ctor.ActivatorFrames.Call <NoArgGuyCatcher>(x => x.Catch(null));
                });
            });


            var catcher = new NoArgGuyCatcher();

            result.Object.DoStuff(catcher);

            catcher.Guy.ShouldNotBeNull();
        }
Beispiel #21
0
        public void no_arg_inside_of_using_block_simplest_case()
        {
            var result = CodegenScenario.ForAction <NoArgGuyCatcher>(m =>
            {
                m.Frames.CallConstructor(() => new NoArgGuy(), c => c.Mode = ConstructorCallMode.UsingNestedVariable);
                m.Frames.Call <NoArgGuyCatcher>(x => x.Catch(null));
            });

            result.LinesOfCode.ShouldContain($"using (var noArgGuy = new {typeof(NoArgGuy).FullNameInCode()}())");

            var catcher = new NoArgGuyCatcher();

            result.Object.DoStuff(catcher);

            catcher.Guy.ShouldNotBeNull();
            catcher.Guy.WasDisposed.ShouldBeTrue();
        }
Beispiel #22
0
        public void override_an_argument()
        {
            var result = CodegenScenario.ForBuilds <MultiArgGuy, int, double, string>(m =>
            {
                m.Frames.CallConstructor <MultiArgGuy>(() => new MultiArgGuy(0, 0, ""), ctor =>
                {
                    ctor.Parameters[2] = new Value("Kent");
                });

                m.Return();
            });

            var guy = result.Object.Create(14, 1.23, "Beck");

            guy.Number.ShouldBe(14);
            guy.Amount.ShouldBe(1.23);
            guy.Name.ShouldBe("Kent");
        }
        public void activator_with_nested_in_using()
        {
            var result = CodegenScenario.ForAction <NoArgGuyCatcher>(m =>
            {
                m.Frames.CallConstructor(() => new NoArgGuy(), ctor =>
                {
                    ctor.Mode = ConstructorCallMode.UsingNestedVariable;
                    ctor.ActivatorFrames.Call <NoArgGuyCatcher>(x => x.Catch(null));
                });
            });

            var catcher = new NoArgGuyCatcher();

            result.Object.DoStuff(catcher);

            catcher.Guy.Should().NotBeNull();
            catcher.Guy.WasDisposed.Should().BeTrue();
        }
Beispiel #24
0
        public void no_arg_return_with_three_setters_case_explicit_setter()
        {
            var result = CodegenScenario.ForBuilds <NoArgGuy, int, double, string>(m =>
            {
                m.Frames.CallConstructor(() => new NoArgGuy(), @call =>
                {
                    @call.Mode = ConstructorCallMode.ReturnValue;
                    @call.Set(x => x.Number);
                    @call.Set(x => x.Double);
                    @call.Set(x => x.String, new Value("Explicit"));
                });
            });

            var noArgGuy = result.Object.Create(11, 1.22, "wow");

            noArgGuy.Number.ShouldBe(11);
            noArgGuy.Double.ShouldBe(1.22);
            noArgGuy.String.ShouldBe("Explicit");
        }
Beispiel #25
0
        public void simple_execution_with_one_input_and_output_2()
        {
            var result = CodegenScenario.ForBuilds <int, int>(m => m.Frames.Append <AddTwoFrame>());

            result.Object.Create(5).ShouldBe(7);
        }
        public void simple_use_case_no_value()
        {
            var result = CodegenScenario.ForBaseOf <ISimpleAction>(m => m.Frames.Add(new ReturnFrame()));

            result.LinesOfCode.Should().Contain("return;");
        }