public void ConditionalRuleToUpdateNameToSomethingElseToAndFromJson()
        {
            var rule = new ConditionalIfThElActionRule <Game>
            {
                ConditionRule = new MethodCallRule <Game, bool>
                {
                    ObjectToCallMethodOn = "Name",
                    MethodToCall         = "Equals",
                    MethodParameters     =
                    {
                        new ConstantRule <string>           {
                            Value = "some name"
                        },
                        new ConstantRule <StringComparison> {
                            Value = "CurrentCultureIgnoreCase"
                        }
                    }
                },
                TrueRule = new UpdateValueRule <Game>
                {
                    ObjectToUpdate = "Name",
                    SourceDataRule = new ConstantRule <string> {
                        Value = "true name"
                    }
                },
                FalseRule = new UpdateValueRule <Game>
                {
                    ObjectToUpdate = "Name",
                    SourceDataRule = new ConstantRule <string> {
                        Value = "false name"
                    }
                }
            };

            // 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  = JsonConvert.DeserializeObject <ConditionalIfThElActionRule <Game> >(ruleJson, new JsonConverterForRule());
            var compileResult = ruleFromJson.Compile();

            compileResult.Should().BeTrue();

            var game = new Game {
                Name = "some name"
            };

            _testOutputHelper.WriteLine($"before game.Name: {game.Name}");
            ruleFromJson.Execute(game);
            _testOutputHelper.WriteLine($"after game.Name: {game.Name}");
            game.Name.Should().Be("true name");

            ruleFromJson.Execute(game);
            _testOutputHelper.WriteLine($"after after game.Name: {game.Name}");
            game.Name.Should().Be("false name");
        }
Exemplo n.º 2
0
        public void ConditionalRuleToUpdateNameToSomethingElse()
        {
            var conditionalIfThElRule = new ConditionalIfThElActionRule <Game>
            {
                ConditionRule = new MethodCallRule <Game, bool>
                {
                    ObjectToCallMethodOn = "Name",
                    MethodToCall         = "Equals",
                    MethodParameters     =
                    {
                        new ConstantRule <string>           {
                            Value = "some name"
                        },
                        new ConstantRule <StringComparison> {
                            Value = "CurrentCultureIgnoreCase"
                        }
                    }
                },
                TrueRule = new UpdateValueRule <Game>
                {
                    ObjectToUpdate = "Name",
                    SourceDataRule = new ConstantRule <string> {
                        Value = "true name"
                    }
                },
                FalseRule = new UpdateValueRule <Game>
                {
                    ObjectToUpdate = "Name",
                    SourceDataRule = new ConstantRule <string> {
                        Value = "false name"
                    }
                }
            };

            var compileResult = conditionalIfThElRule.Compile();

            compileResult.Should().BeTrue();
            _testOutputHelper.WriteLine($"{nameof(conditionalIfThElRule)}:{Environment.NewLine}" +
                                        $"{conditionalIfThElRule.ExpressionDebugView()}");

            var game = new Game {
                Name = "some name"
            };

            _testOutputHelper.WriteLine($"before game.Name: {game.Name}");
            conditionalIfThElRule.Execute(game);
            _testOutputHelper.WriteLine($"after game.Name: {game.Name}");
            game.Name.Should().Be("true name");

            conditionalIfThElRule.Execute(game);
            _testOutputHelper.WriteLine($"after after game.Name: {game.Name}");
            game.Name.Should().Be("false name");
        }
Exemplo n.º 3
0
        public void ConditionalOutput(int evenOddValue)
        {
            var evenOrOddOutput = new ConditionalIfThElActionRule <int>
            {
                ConditionRule = new ExpressionFuncRule <int, bool>(i => i % 2 == 0),
                TrueRule      = new ExpressionActionRule <int>(i => _testOutputHelper.WriteLine($"{i} is even")),
                FalseRule     = new ExpressionActionRule <int>(i => _testOutputHelper.WriteLine($"{i} is odd"))
            };

            var compileResult = evenOrOddOutput.Compile();

            compileResult.Should().BeTrue();
            _testOutputHelper.WriteLine($"{nameof(evenOrOddOutput)}:{Environment.NewLine}" +
                                        $"{evenOrOddOutput.ExpressionDebugView()}");

            evenOrOddOutput.Execute(evenOddValue);
        }