示例#1
0
        public void Setup()
        {
            _testGenericState = new TestGenericState {
                A = 1, B = 2, C = 3, D = 4
            };

            dynamic state = new ExpandoObject();

            state.A       = 1;
            state.B       = 2;
            state.C       = 3;
            state.D       = 4;
            _dynamicState = state;

            const string script = "state.A >= state.B || state.C <= state.D";

            var dynamicConditional = DynamicStateCompiledConditional(script);
            var genericConditional = GenericStateCompiledConditional <TestGenericState>(script);

            _baseline                       = s => s.A >= s.B || s.C <= s.D;
            _staticMethod                   = Conditional;
            _dynamicStaticMethod            = DynamicConditional;
            _dynamicBaseline                = s => s.A >= s.B || s.C <= s.D;
            _wrappedConditional             = WrappedDynamicStateConditional(script);
            _dynamicCompiledConditional     = dynamicConditional;
            _genericCompiledConditional     = genericConditional;
            _dynamicCompiledConditionalFunc = s => dynamicConditional.DynamicInvoke(s);
            _genericCompiledConditionalFunc = s => genericConditional.DynamicInvoke(s);

            var derivedConditional = GenericStateCompiledInheritedConditional <TestGenericState>(script);

            _derivedConditional = derivedConditional;
            _derivedFunction    = s => derivedConditional.Execute(s);

            var derivedDynamicConditional = DynamicStateCompiledInheritedConditional(script);

            _derivedDynamicConditional = derivedDynamicConditional;
            _derivedDynamicFunction    = s => derivedDynamicConditional.Execute(s);

            // Warmup.
            _dynamicBaseline(_dynamicState);
            _dynamicStaticMethod(_dynamicState);
            _wrappedConditional.DynamicInvoke(_dynamicState);
            _dynamicCompiledConditional.DynamicInvoke(_dynamicState);
            _genericCompiledConditional.DynamicInvoke(_testGenericState);
            _dynamicCompiledConditionalFunc(_dynamicState);
            _genericCompiledConditionalFunc(_testGenericState);
            _derivedConditional.Execute(_testGenericState);
            _derivedDynamicConditional.Execute(_dynamicState);
            _derivedFunction(_testGenericState);
            _derivedDynamicFunction(_dynamicState);
        }
示例#2
0
 private static bool Conditional(TestGenericState state)
 {
     return(state.A >= state.B || state.C <= state.D);
 }
示例#3
0
 public abstract bool Execute(TestGenericState state);