Пример #1
0
        public void TestPostfixPlusPlus_OperandsWithTarget()
        {
            //-- Arrange

            DeriveClassFrom <object>()
            .DefaultConstructor()
            .ImplementInterface <AncestorRepository.IOperatorTester>()
            .Method <InOut, InOut>(intf => intf.Unary).Implement((m, input) => {
                var output = m.Local(m.New <InOut>());

                output.Prop(x => x.ShortValue).Assign(input.Prop(x => x.ShortValue).PostfixPlusPlus());
                output.Prop(x => x.IntValue).Assign(input.Prop(x => x.IntValue).PostfixPlusPlus());
                output.Prop(x => x.LongValue).Assign(input.Prop(x => x.LongValue).PostfixPlusPlus());
                output.Prop(x => x.FloatValue).Assign(input.Prop(x => x.FloatValue).PostfixPlusPlus());
                output.Prop(x => x.DecimalValue).Assign(input.Prop(x => x.DecimalValue).PostfixPlusPlus());
                output.Prop(x => x.DoubleValue).Assign(input.Prop(x => x.DoubleValue).PostfixPlusPlus());

                m.Return(output);
            })
            .AllMethods().Throw <NotImplementedException>();

            //-- Act

            var tester    = CreateClassInstanceAs <AncestorRepository.IOperatorTester>().UsingDefaultConstructor();
            var testInput = new InOut {
                ShortValue   = 10,
                IntValue     = 20,
                LongValue    = 30,
                FloatValue   = 40,
                DecimalValue = 50,
                DoubleValue  = 60
            };
            var result = tester.Unary(testInput);

            //-- Assert

            Assert.That(testInput.ShortValue, Is.EqualTo(11));
            Assert.That(testInput.IntValue, Is.EqualTo(21));
            Assert.That(testInput.LongValue, Is.EqualTo(31));
            Assert.That(testInput.FloatValue, Is.EqualTo(41));
            Assert.That(testInput.DecimalValue, Is.EqualTo(51));
            Assert.That(testInput.DoubleValue, Is.EqualTo(61));

            Assert.That(result.ShortValue, Is.EqualTo(10));
            Assert.That(result.IntValue, Is.EqualTo(20));
            Assert.That(result.LongValue, Is.EqualTo(30));
            Assert.That(result.FloatValue, Is.EqualTo(40));
            Assert.That(result.DecimalValue, Is.EqualTo(50));
            Assert.That(result.DoubleValue, Is.EqualTo(60));
        }
Пример #2
0
        public void TestPrefixPlusPlus_OperandsWithoutTarget()
        {
            //-- Arrange

            DeriveClassFrom <object>()
            .DefaultConstructor()
            .ImplementInterface <AncestorRepository.IOperatorTester>()
            .Method <InOut, InOut>(intf => intf.Unary).Implement((m, input) => {
                var v1 = m.Local(initialValue: input.Prop(x => x.IntValue));
                var v2 = m.Local(initialValue: input.Prop(x => x.FloatValue));
                var v3 = m.Local(initialValue: input.Prop(x => x.DecimalValue));

                var output = m.Local(m.New <InOut>());

                output.Prop(x => x.IntValue).Assign(Prefix.PlusPlus(v1));
                output.Prop(x => x.FloatValue).Assign(Prefix.PlusPlus(v2));
                output.Prop(x => x.DecimalValue).Assign(Prefix.PlusPlus(v3));

                input.Prop(x => x.IntValue).Assign(v1);
                input.Prop(x => x.FloatValue).Assign(v2);
                input.Prop(x => x.DecimalValue).Assign(v3);

                m.Return(output);
            })
            .AllMethods().Throw <NotImplementedException>();

            //-- Act

            var tester    = CreateClassInstanceAs <AncestorRepository.IOperatorTester>().UsingDefaultConstructor();
            var testInput = new InOut {
                IntValue     = 20,
                FloatValue   = 40,
                DecimalValue = 50
            };
            var result = tester.Unary(testInput);

            //-- Assert

            Assert.That(testInput.IntValue, Is.EqualTo(21));
            Assert.That(testInput.FloatValue, Is.EqualTo(41));
            Assert.That(testInput.DecimalValue, Is.EqualTo(51));

            Assert.That(result.IntValue, Is.EqualTo(21));
            Assert.That(result.FloatValue, Is.EqualTo(41));
            Assert.That(result.DecimalValue, Is.EqualTo(51));
        }
Пример #3
0
        public void TestSubtraction()
        {
            //-- Arrange

            DeriveClassFrom <object>()
            .DefaultConstructor()
            .ImplementInterface <AncestorRepository.IOperatorTester>()
            .Method <InOut, InOut, InOut>(intf => intf.Binary).Implement((m, in1, in2) => {
                var output = m.Local(m.New <InOut>());

                output.Prop(x => x.IntValue).Assign(in1.Prop(x => x.IntValue) - in2.Prop(x => x.IntValue));
                output.Prop(x => x.FloatValue).Assign(in1.Prop(x => x.FloatValue) - in2.Prop(x => x.FloatValue));
                output.Prop(x => x.DecimalValue).Assign(in1.Prop(x => x.DecimalValue) - in2.Prop(x => x.DecimalValue));

                m.Return(output);
            })
            .AllMethods().Throw <NotImplementedException>();

            //-- Act

            var tester = CreateClassInstanceAs <AncestorRepository.IOperatorTester>().UsingDefaultConstructor();
            var input1 = new InOut {
                IntValue     = 20,
                FloatValue   = 30,
                DecimalValue = 40,
            };
            var input2 = new InOut {
                IntValue     = 7,
                FloatValue   = 8,
                DecimalValue = 9,
            };
            var result = tester.Binary(input1, input2);

            //-- Assert

            Assert.That(result.IntValue, Is.EqualTo(13));
            Assert.That(result.FloatValue, Is.EqualTo(22));
            Assert.That(result.DecimalValue, Is.EqualTo(31));
        }