Ejemplo n.º 1
0
        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)));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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"));
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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"));
        }
Ejemplo n.º 6
0
        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"));
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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"));
        }
Ejemplo n.º 9
0
        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));
        }
Ejemplo n.º 10
0
        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));
        }
Ejemplo n.º 11
0
        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));
        }
Ejemplo n.º 12
0
        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));
        }
Ejemplo n.º 13
0
        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));
        }
Ejemplo n.º 14
0
        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)));
        }
Ejemplo n.º 15
0
        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));
        }
Ejemplo n.º 16
0
        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));
        }