public void WhenCreatingSignature_WithNoParameters_AndStringReturnValue_SignatureHasName() { // Arrange var builder = new BendyBuilder(); // Act var method = builder.CreateMethod <string>("MyMethod", (containerBendy) => "hello"); // Assert Assert.That(method.Signature.Name, Is.EqualTo("MyMethod")); Assert.That(method.Signature.ReturnsValue, Is.EqualTo(true)); Assert.That(method.Signature.ReturnType, Is.EqualTo(typeof(string))); }
public void WhenRunningMethod_ContainerBendy_IsPassedToDelegate() { // Arrange var builder = new BendyBuilder(); BendyObject _outer = null; // Act builder.CreateMethod("MyMethod", (containerBendy) => SetRef(ref _outer, ref containerBendy)); dynamic bendyDynamic = builder.ToBendy().AsDynamic(); bendyDynamic.MyMethod(); // Assert Assert.That(_outer, Is.Not.Null); }
public void WhenCreatingBendy_HavingParameterlessVoidMethod_MethodIsInvokable() { // Arrange var builder = new BendyBuilder(); // Act builder.AutoCreateMethod<string, string>("MyNonExistantMethodReturnsParamUnchanged", (containerBendy, x) => x); var bendy = builder.ToBendy(); dynamic bendyDynamic = bendy.AsDynamic(); // Assert Assert.That(bendyDynamic.MyNonExistantMethodReturnsParamUnchanged("alex"), Is.EqualTo("alex")); Assert.That(bendyDynamic.MyNonExistantMethodReturnsParamUnchanged("different"), Is.EqualTo("different")); }
public void WhenCreatingSignature_WithNoParameters_AndNoReturnValue_SignatureHasName() { // Arrange var builder = new BendyBuilder(); // Act var method = builder.CreateMethod("MyMethod", (containerBendy) => DoNothing()); // Assert Assert.That(method.Signature.Name, Is.EqualTo("MyMethod")); Assert.That(method.Signature.ReturnsValue, Is.EqualTo(false)); Assert.That(builder.Methods.Count(), Is.EqualTo(1)); Assert.That(builder.Methods, Has.All.SameAs(method)); }
public void WhenCreatingBendy_HavingParameterlessVoidMethod_MethodIsInvokable() { // Arrange var builder = new BendyBuilder(); // Act builder.AutoCreateMethod <string, string>("MyNonExistantMethodReturnsParamUnchanged", (containerBendy, x) => x); var bendy = builder.ToBendy(); dynamic bendyDynamic = bendy.AsDynamic(); // Assert Assert.That(bendyDynamic.MyNonExistantMethodReturnsParamUnchanged("alex"), Is.EqualTo("alex")); Assert.That(bendyDynamic.MyNonExistantMethodReturnsParamUnchanged("different"), Is.EqualTo("different")); }
public void NestingBendies_WithMethodDeclarations_Behaves() { // Arrange var parentBuilder = new BendyBuilder(); var childBuilder = new BendyBuilder(); // Act childBuilder.AutoCreateMethod<string, string>("Hiya", (containerBendy, x) => "alex" + x); parentBuilder.AutoCreateMethod("GetChild", (containerBendy) => childBuilder.ToBendy()); dynamic asDynamic = parentBuilder.ToBendy().AsDynamic(); // Assert Assert.That(asDynamic.GetChild(), Is.InstanceOf<BendyObject>()); Assert.That(asDynamic.GetChild().Hiya("bob"), Is.EqualTo("alexbob")); }
public void NestingBendies_WithMethodDeclarations_Behaves() { // Arrange var parentBuilder = new BendyBuilder(); var childBuilder = new BendyBuilder(); // Act childBuilder.AutoCreateMethod <string, string>("Hiya", (containerBendy, x) => "alex" + x); parentBuilder.AutoCreateMethod("GetChild", (containerBendy) => childBuilder.ToBendy()); dynamic asDynamic = parentBuilder.ToBendy().AsDynamic(); // Assert Assert.That(asDynamic.GetChild(), Is.InstanceOf <BendyObject>()); Assert.That(asDynamic.GetChild().Hiya("bob"), Is.EqualTo("alexbob")); }
public void WhenCreatingSignature_WithStringParameter_SignatureHasNameAndParameter() { // Arrange var builder = new BendyBuilder(); // Act var method = builder.CreateMethod <string>("MyMethod", (containerBendy, myParameter) => DoNothing(), Param.Create <string>("myParameter")); // Assert Assert.That(method.Signature.Name, Is.EqualTo("MyMethod")); Assert.That(method.Signature.Parameters.ToArray()[1].Name, Is.EqualTo("myParameter")); Assert.That(method.Signature.Parameters.ToArray()[1].Type, Is.EqualTo(typeof(string))); Assert.That(method.Signature.ReturnsValue, Is.EqualTo(false)); }
public void WhenCreatingSignature_WithParameters_AndStringReturnValue_SignatureHasName() { // Arrange var builder = new BendyBuilder(); // Act var method = builder.CreateMethod <string, string>("MyMethod", (containerBendy, myParameter) => DoNothing(), "myParameter"); // Assert Assert.That(method.Signature.Name, Is.EqualTo("MyMethod")); Assert.That(method.Signature.ReturnsValue, Is.EqualTo(true)); Assert.That(method.Signature.ReturnType, Is.EqualTo(typeof(string))); Assert.That(builder.Methods.Count(), Is.EqualTo(1)); Assert.That(builder.Methods, Has.All.SameAs(method)); }
public void WhenInferringSignatureFromLambda_WithParameters_AndStringReturnValue_SignatureHasName() { // Arrange var builder = new BendyBuilder(); // Act var method = builder.AutoCreateMethod <string, string>("MyMethod", (containerBendy, myParameter) => "return value"); // Assert Assert.That(method.Signature.Name, Is.EqualTo("MyMethod")); Assert.That(method.Signature.ReturnsValue, Is.EqualTo(true)); Assert.That(method.Signature.ReturnType, Is.EqualTo(typeof(string))); Assert.That(method.Signature.Parameters.ToArray()[1].Name, Is.EqualTo("myParameter")); Assert.That(method.Signature.Parameters.ToArray()[1].Type, Is.EqualTo(typeof(string))); Assert.That(builder.Methods.Count(), Is.EqualTo(1)); Assert.That(builder.Methods, Has.All.SameAs(method)); }
public void WhenCreatingSignature_WithStringParameter_SignatureHasNameAndParameter() { // Arrange var builder = new BendyBuilder(); // Act var method = builder.CreateMethod<string>("MyMethod", (containerBendy, myParameter) => DoNothing(), Param.Create<string>("myParameter")); // Assert Assert.That(method.Signature.Name, Is.EqualTo("MyMethod")); Assert.That(method.Signature.Parameters.ToArray()[0].Name, Is.EqualTo("myParameter")); Assert.That(method.Signature.Parameters.ToArray()[0].Type, Is.EqualTo(typeof(string))); Assert.That(method.Signature.ReturnsValue, Is.EqualTo(false)); }
public void WhenCreatingSignature_WithNoParameters_AndStringReturnValue_SignatureHasName() { // Arrange var builder = new BendyBuilder(); // Act var method = builder.CreateMethod<string>("MyMethod", (containerBendy) => "hello"); // Assert Assert.That(method.Signature.Name, Is.EqualTo("MyMethod")); Assert.That(method.Signature.ReturnsValue, Is.EqualTo(true)); Assert.That(method.Signature.ReturnType, Is.EqualTo(typeof(string))); }
public void WhenInferringSignatureFromLambda_WithParameters_AndStringReturnValue_SignatureHasName() { // Arrange var builder = new BendyBuilder(); // Act var method = builder.AutoCreateMethod<string, string>("MyMethod", (containerBendy, myParameter) => "return value"); // Assert Assert.That(method.Signature.Name, Is.EqualTo("MyMethod")); Assert.That(method.Signature.ReturnsValue, Is.EqualTo(true)); Assert.That(method.Signature.ReturnType, Is.EqualTo(typeof(string))); Assert.That(method.Signature.Parameters.ToArray()[0].Name, Is.EqualTo("myParameter")); Assert.That(method.Signature.Parameters.ToArray()[0].Type, Is.EqualTo(typeof(string))); Assert.That(builder.Methods.Count(), Is.EqualTo(1)); Assert.That(builder.Methods, Has.All.SameAs(method)); }
public void WhenCreatingSignature_WithParameters_AndStringReturnValue_SignatureHasName() { // Arrange var builder = new BendyBuilder(); // Act var method = builder.CreateMethod<string, string>("MyMethod", (containerBendy, myParameter) => DoNothing(), "myParameter"); // Assert Assert.That(method.Signature.Name, Is.EqualTo("MyMethod")); Assert.That(method.Signature.ReturnsValue, Is.EqualTo(true)); Assert.That(method.Signature.ReturnType, Is.EqualTo(typeof(string))); Assert.That(builder.Methods.Count(), Is.EqualTo(1)); Assert.That(builder.Methods, Has.All.SameAs(method)); }