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); }
private static bool Conditional(TestGenericState state) { return(state.A >= state.B || state.C <= state.D); }
public abstract bool Execute(TestGenericState state);