public void CanEmitMethodBody() { //-- arrange var method = new MethodMember( MemberVisibility.Public, "TestMethod", new MethodSignature { ReturnValue = new MethodParameter { Type = typeof(string) } }); method.Body = new BlockStatement( new ReturnStatement { Expression = new ConstantExpression { Value = "ABC" } } ); var emitterUnderTest = new MethodSyntaxEmitter(method); //-- act var actualSyntax = emitterUnderTest.EmitSyntax(); //-- assert var expectedCode = "public string TestMethod() { return \"ABC\"; }"; actualSyntax.Should().BeEquivalentToCode(expectedCode); }
public void CanEmitAssignmentExpression(string expectedCode, AssignmentExpression expression) { //-- arrange var enclosingMethod = new MethodMember(MemberVisibility.Public, "Method1", new MethodSignature()); enclosingMethod.Body = new BlockStatement( new ExpressionStatement { Expression = expression } ); //-- act var actualSyntax = new MethodSyntaxEmitter(enclosingMethod).EmitSyntax(); //-- assert actualSyntax.Should().BeEquivalentToCode("public void Method1() { " + expectedCode + "; }"); }
public void CanEmitMethodDeclaration( string expectedCode, MemberVisibility visibility, MemberModifier modifier, Delegate signaturePrototype) { //-- arrange var method = new MethodMember(signaturePrototype.GetMethodInfo()); method.Name = "TestMethod"; method.Visibility = visibility; method.Modifier = modifier; var emitterUnderTest = new MethodSyntaxEmitter(method); //-- act var actualSyntax = emitterUnderTest.EmitSyntax(); //-- assert actualSyntax.Should().BeEquivalentToCode(expectedCode); }