Ejemplo n.º 1
0
        public void CallAVoidMethodToAndFromJson()
        {
            // call FlipActive method on the game object
            // compiles to: Param_0.FlipActive()
            var rule = new MethodVoidCallRule <Game>
            {
                MethodToCall = "FlipActive"
            };

            // convert to json
            var ruleJson = JsonConvert.SerializeObject(rule, Formatting.Indented, new JsonConverterForRule());

            _testOutputHelper.WriteLine($"{nameof(ruleJson)}:{Environment.NewLine}{ruleJson}");
            // re-hydrate from json
            var ruleFromJson  = (MethodVoidCallRule <Game>)JsonConvert.DeserializeObject <Rule>(ruleJson, new JsonConverterForRule());
            var compileResult = ruleFromJson.Compile();

            compileResult.Should().BeTrue();
            _testOutputHelper.WriteLine($"{nameof(ruleFromJson)}:{Environment.NewLine}" +
                                        $"{ruleFromJson.ExpressionDebugView()}");
            var currentActiveState2 = _game1.Active;

            ruleFromJson.Execute(_game1);
            _game1.Active.Should().Be(!currentActiveState2);
        }
Ejemplo n.º 2
0
        public static MethodVoidCallRule <T> CreateMethodVoidCallRule <T>(string methodToCall, string methodClassName,
                                                                          Expression <Func <T, object> > objectToCallMethodOn, IList <Rule> methodParams)
        {
            var rule = new MethodVoidCallRule <T>
            {
                MethodToCall         = methodToCall,
                MethodClassName      = methodClassName,
                ObjectToCallMethodOn = objectToCallMethodOn?.GetObjectToWorkOnFromExpression()
            };

            rule.MethodParameters.AddRange(methodParams);
            return(rule);
        }