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); }
public void just_write_text() { var result = CodegenScenario.ForAction <int>(m => { m.Frames.Code("var x = 0;"); }); result.LinesOfCode.ShouldContain("var x = 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;"); }
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\");"); }
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(); }
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); }
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(); }
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); }
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();"); }
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);"); }
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); }
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); }
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); }
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(); }
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(); }
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(); }
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"); }
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;"); }