public void ExtractsValuesromFieldAccessingLambdas()
        {
            var result = ContractsExpression.ExtractValue(() => _testString);

            Assert.That(result, Is.SameAs(_testString));

            var result2 = ContractsExpression.ExtractValue(() => WrappedIntOne);

            Assert.That(result2, Is.SameAs(WrappedIntOne));
        }
Example #2
0
        public static void InspectBadValue <TException, TInspected>(Action <Inspected <TInspected> > assert, TInspected inspectedValue)
            where TException : ContractViolationException
        {
            Expression <Func <TInspected> > fetchInspected = () => inspectedValue;
            var inspectedName = ContractsExpression.ExtractName(fetchInspected);

            var inspected = Contract.Argument(() => inspectedValue);

            AssertThrows <TException, TInspected>(
                inspected: inspected,
                assert: assert,
                inspectionType: InspectionType.Argument,
                badValueName: inspectedName);

            inspected = Contract.Argument(() => inspectedValue, () => inspectedValue);
            AssertThrows <TException, TInspected>(
                inspected: inspected,
                assert: assert,
                inspectionType: InspectionType.Argument,
                badValueName: inspectedName);

            inspected = Contract.Invariant(() => inspectedValue);
            AssertThrows <TException, TInspected>(
                inspected: inspected,
                assert: assert,
                inspectionType: InspectionType.Invariant,
                badValueName: inspectedName);

            inspected = Contract.Invariant(() => inspectedValue, () => inspectedValue);
            AssertThrows <TException, TInspected>(
                inspected: inspected,
                assert: assert,
                inspectionType: InspectionType.Invariant,
                badValueName: inspectedName);

            const string returnvalueName = "ReturnValue";

            inspected = Contract.ReturnValue(inspectedValue);
            AssertThrows <TException, TInspected>(
                inspected: inspected,
                assert: assert,
                inspectionType: InspectionType.ReturnValue,
                badValueName: returnvalueName);

            var exception = Assert.Throws <TException>(() => Return(inspectedValue, assert));

            exception.BadValue.Type.Should().Be(InspectionType.ReturnValue);
            exception.BadValue.Name.Should().Be(returnvalueName);

            exception = Assert.Throws <TException>(() => ReturnOptimized(inspectedValue, assert));
            exception.BadValue.Type.Should().Be(InspectionType.ReturnValue);
            exception.BadValue.Name.Should().Be(returnvalueName);
        }
Example #3
0
        public static void InspectGoodValues <TInspected>(Action <Inspected <TInspected> > assert, TInspected goodValue)
        {
            Expression <Func <TInspected> > fetchInspected = () => goodValue;
            var inspectedName = ContractsExpression.ExtractName(fetchInspected);

            var inspected = Contract.Argument(() => goodValue);

            assert(inspected);

            inspected = Contract.Argument(() => goodValue);
            assert(inspected);

            inspected = Contract.Invariant(() => goodValue);
            assert(inspected);

            Return(goodValue, assert);
        }
 private TValue ReturnExtractedParameterValue <TValue>(TValue param)
 {
     return(ContractsExpression.ExtractValue(() => param));
 }
        public void ExtractsValueFromPropertyAccessLambda()
        {
            var result = ContractsExpression.ExtractValue(() => TestString);

            Assert.That(result, Is.SameAs(_testString));
        }