Esempio n. 1
0
        public void TestFunctionalValueConverterWithParameterBinding3()
        {
            var text     = "Target ConvertThis(Foo, true)";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Target",
                    new MvxSerializableBindingDescription()
                    {
                        Function = "ConvertThis",
                        Sources  = new MvxSerializableBindingDescription[]
                        {
                            new MvxSerializableBindingDescription()
                            {
                                Path = "Foo",
                            },
                            new MvxSerializableBindingDescription()
                            {
                                Literal = true,
                            },
                        },
                    }
                }
            };

            PerformTest(text, expected);
        }
Esempio n. 2
0
        public void TestCommandParameterSpecialBinding()
        {
            var text     = "Target CommandParameter(One, Two)";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Target",
                    new MvxSerializableBindingDescription()
                    {
                        Function = "CommandParameter",
                        Sources  = new MvxSerializableBindingDescription[]
                        {
                            new MvxSerializableBindingDescription()
                            {
                                Path = "One"
                            },
                            new MvxSerializableBindingDescription()
                            {
                                Path = "Two"
                            },
                        },
                    }
                }
            };

            MvxTrace.Trace(MvxTraceLevel.Diagnostic, "Testing: {0}", text);
            PerformTest(text, expected);
        }
Esempio n. 3
0
        public void TestFunctionalValueConverterWithParameterBinding2()
        {
            var text     = "Target ConvertThis(Foo, 12.45)";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Target",
                    new MvxSerializableBindingDescription()
                    {
                        Function = "ConvertThis",
                        Sources  = new MvxSerializableBindingDescription[]
                        {
                            new MvxSerializableBindingDescription()
                            {
                                Path = "Foo",
                            },
                            new MvxSerializableBindingDescription()
                            {
                                Literal = 12.45,
                            },
                        },
                    }
                }
            };

            MvxTrace.Trace(MvxTraceLevel.Diagnostic, "Testing: {0}", text);
            PerformTest(text, expected);
        }
Esempio n. 4
0
        public bool TryParseBindingSpecification(string text, out MvxSerializableBindingSpecification requestedBindings)
        {
            try
            {
                Reset(text);

                var toReturn = new MvxSerializableBindingSpecification();
                while (!IsComplete)
                {
                    SkipWhitespaceAndDescriptionSeparators();
                    var result = ParseTargetPropertyNameAndDescription();
                    toReturn[result.Key] = result.Value;
                    SkipWhitespaceAndDescriptionSeparators();
                }

                requestedBindings = toReturn;
                return true;
            }
            catch (Exception exception)
            {
                MvxBindingTrace.Trace(MvxTraceLevel.Error,
                                      "Problem parsing Lang binding {0}", exception.ToLongString());
                requestedBindings = null;
                return false;
            }
        }
Esempio n. 5
0
        public bool TryParseBindingSpecification(string text, out MvxSerializableBindingSpecification requestedBindings)
        {
            try
            {
                Reset(text);

                var toReturn = new MvxSerializableBindingSpecification();
                while (!IsComplete)
                {
                    SkipWhitespaceAndDescriptionSeparators();
                    var result = ParseTargetPropertyNameAndDescription();
                    toReturn[result.Key] = result.Value;
                    SkipWhitespaceAndDescriptionSeparators();
                }

                requestedBindings = toReturn;
                return(true);
            }
            catch (Exception exception)
            {
                MvxBindingTrace.Trace(MvxTraceLevel.Error,
                                      "Problem parsing binding {0}", exception.ToLongString());
                requestedBindings = null;
                return(false);
            }
        }
Esempio n. 6
0
        public void TestFunctionalValueConverterWithKEYWORDInTheName(string keyword)
        {
            var text     = "Target " + keyword + "This(Foo, 'Hello World')";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Target",
                    new MvxSerializableBindingDescription()
                    {
                        Function = keyword + "This",
                        Sources  = new MvxSerializableBindingDescription[]
                        {
                            new MvxSerializableBindingDescription()
                            {
                                Path = "Foo",
                            },
                            new MvxSerializableBindingDescription()
                            {
                                Literal = "Hello World",
                            },
                        },
                    }
                }
            };

            MvxTrace.Trace(MvxTraceLevel.Diagnostic, "Testing: {0}", text);
            PerformTest(text, expected);
        }
Esempio n. 7
0
        public void TestFunctionalValueConverterWithParameterBinding2()
        {
            var text     = "Target ConvertThis(Foo, 12.45)";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Target",
                    new MvxSerializableBindingDescription()
                    {
                        Converter = "ConvertThis",
                        Function  = "Single",
                        Sources   = new MvxSerializableBindingDescription[]
                        {
                            new MvxSerializableBindingDescription()
                            {
                                Path = "Foo",
                            },
                        },
                        ConverterParameter = 12.45
                    }
                }
            };

            PerformTest(text, expected);
        }
Esempio n. 8
0
        public void TestSimpleCombinerBinding()
        {
            var text     = "Target CombineThis(Foo, Foo2)";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Target",
                    new MvxSerializableBindingDescription()
                    {
                        Function = "CombineThis",
                        Sources  = new MvxSerializableBindingDescription[]
                        {
                            new MvxSerializableBindingDescription()
                            {
                                Path = "Foo",
                            },
                            new MvxSerializableBindingDescription()
                            {
                                Path = "Foo2",
                            },
                        }
                    }
                }
            };

            MvxTrace.Trace(MvxTraceLevel.Diagnostic, "Testing: {0}", text);
            PerformTest(text, expected);
        }
Esempio n. 9
0
        public void TestFunctionalValueConverterWithNullInTheName()
        {
            var text     = "Target NullThis(Foo, 'Hello World')";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Target",
                    new MvxSerializableBindingDescription()
                    {
                        Converter = "NullThis",
                        Function  = "Single",
                        Sources   = new MvxSerializableBindingDescription[]
                        {
                            new MvxSerializableBindingDescription()
                            {
                                Path = "Foo",
                            },
                        },
                        ConverterParameter = "Hello World"
                    }
                }
            };

            PerformTest(text, expected);
        }
Esempio n. 10
0
        public void TestFunctionalValueConverterWithParameterBinding()
        {
            var text     = "Target ConvertThis(Foo, 12)";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Target",
                    new MvxSerializableBindingDescription()
                    {
                        Converter = "ConvertThis",
                        Function  = "Single",
                        Sources   = new MvxSerializableBindingDescription[]
                        {
                            new MvxSerializableBindingDescription()
                            {
                                Path = "Foo",
                            },
                        },
                        ConverterParameter = 12L
                    }
                }
            };

            MvxTestLog.Instance.Trace("Testing: {0}", text);
            PerformTest(text, expected);
        }
        public void TestFunctionalValueConverterWithParameterBinding4()
        {
            var text     = "Target ConvertThis(Foo, 'Hello World')";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Target",
                    new MvxSerializableBindingDescription()
                    {
                        Converter = "ConvertThis",
                        Function  = "Single",
                        Sources   = new MvxSerializableBindingDescription[]
                        {
                            new MvxSerializableBindingDescription()
                            {
                                Path = "Foo",
                            },
                        },
                        ConverterParameter = "Hello World"
                    }
                }
            };

            MvxTrace.Trace(MvxTraceLevel.Diagnostic, "Testing: {0}", text);
            PerformTest(text, expected);
        }
        public void TestFunctionalValueConverterWithParameterBinding4()
        {
            var text     = "Target ConvertThis(Foo, 'Hello World')";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Target",
                    new MvxSerializableBindingDescription()
                    {
                        Function = "ConvertThis",
                        Sources  = new MvxSerializableBindingDescription[]
                        {
                            new MvxSerializableBindingDescription()
                            {
                                Path = "Foo",
                            },
                            new MvxSerializableBindingDescription()
                            {
                                Literal = "Hello World",
                            },
                        },
                    }
                }
            };

            MvxTestLog.Instance.Trace("Testing: {0}", text);
            PerformTest(text, expected);
        }
        public void TestOperatorCombinerBinding()
        {
            var text     = "Target First(Foo1, 'param1') + (Foo2, Converter=Second, FallbackValue=23) - 'test this'";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Target",
                    new MvxSerializableBindingDescription()
                    {
                        Function = "Add",
                        Sources  = new MvxSerializableBindingDescription[]
                        {
                            new MvxSerializableBindingDescription()
                            {
                                Function = "First",
                                Sources  = new MvxSerializableBindingDescription[]
                                {
                                    new MvxSerializableBindingDescription()
                                    {
                                        Path = "Foo1"
                                    },
                                    new MvxSerializableBindingDescription()
                                    {
                                        Literal = "param1"
                                    }
                                },
                            },
                            new MvxSerializableBindingDescription()
                            {
                                Function = "Subtract",
                                Sources  = new MvxSerializableBindingDescription[]
                                {
                                    new MvxSerializableBindingDescription()
                                    {
                                        Function = "Single",
                                        Sources  = new List <MvxSerializableBindingDescription>()
                                        {
                                            new MvxSerializableBindingDescription()
                                            {
                                                Path          = "Foo2",
                                                Converter     = "Second",
                                                FallbackValue = 23L,
                                            }
                                        }
                                    },
                                    new MvxSerializableBindingDescription()
                                    {
                                        Literal = "test this",
                                    },
                                },
                            }
                        },
                    }
                }
            };

            MvxTestLog.Instance.Trace("Testing: {0}", text);
            PerformTest(text, expected);
        }
Esempio n. 14
0
        public void TestOperatorWithPathCombinerBinding()
        {
            var text     = "Target First(Foo1, 'param1') + (Foo2, Converter=Second, FallbackValue=23) - Life.Like.That";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Target",
                    new MvxSerializableBindingDescription()
                    {
                        Function = "Add",
                        Sources  = new MvxSerializableBindingDescription[]
                        {
                            new MvxSerializableBindingDescription()
                            {
                                Function = "First",
                                Sources  = new MvxSerializableBindingDescription[]
                                {
                                    new MvxSerializableBindingDescription()
                                    {
                                        Path = "Foo1"
                                    },
                                    new MvxSerializableBindingDescription()
                                    {
                                        Literal = "param1"
                                    }
                                },
                            },
                            new MvxSerializableBindingDescription()
                            {
                                Function = "Subtract",
                                Sources  = new MvxSerializableBindingDescription[]
                                {
                                    new MvxSerializableBindingDescription()
                                    {
                                        Function = "Single",
                                        Sources  = new List <MvxSerializableBindingDescription>()
                                        {
                                            new MvxSerializableBindingDescription()
                                            {
                                                Path          = "Foo2",
                                                Converter     = "Second",
                                                FallbackValue = 23,
                                            }
                                        }
                                    },
                                    new MvxSerializableBindingDescription()
                                    {
                                        Path = "Life.Like.That",
                                    },
                                },
                            }
                        },
                    }
                }
            };

            MvxTrace.Trace(MvxTraceLevel.Diagnostic, "Testing: {0}", text);
            PerformTest(text, expected);
        }
        private void PerformTest(string text, MvxSerializableBindingSpecification expectedLookup)
        {
            var theParser = new MvxSwissBindingParser();
            MvxSerializableBindingSpecification specification;

            Assert.IsTrue(theParser.TryParseBindingSpecification(text, out specification));
            AssertAreEquivalent(expectedLookup, specification);
        }
Esempio n. 16
0
        public void TestAdvancedCombinerBinding()
        {
            var text     = "Target CombineThis(First(Foo1, 'param1'), (Foo2, Converter=Second, FallbackValue=23), 'test this', 23)";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Target",
                    new MvxSerializableBindingDescription()
                    {
                        Function = "CombineThis",
                        Sources  = new MvxSerializableBindingDescription[]
                        {
                            new MvxSerializableBindingDescription()
                            {
                                Function = "First",
                                Sources  = new List <MvxSerializableBindingDescription>()
                                {
                                    new MvxSerializableBindingDescription()
                                    {
                                        Path = "Foo1"
                                    },
                                    new MvxSerializableBindingDescription()
                                    {
                                        Literal = "param1"
                                    }
                                }
                            },
                            new MvxSerializableBindingDescription()
                            {
                                Function = "Single",
                                Sources  = new List <MvxSerializableBindingDescription>()
                                {
                                    new MvxSerializableBindingDescription()
                                    {
                                        Path          = "Foo2",
                                        Converter     = "Second",
                                        FallbackValue = 23,
                                    }
                                },
                            },
                            new MvxSerializableBindingDescription()
                            {
                                Literal = "test this",
                            },
                            new MvxSerializableBindingDescription()
                            {
                                Literal = 23,
                            },
                        }
                    }
                }
            };

            MvxTrace.Trace(MvxTraceLevel.Diagnostic, "Testing: {0}", text);
            PerformTest(text, expected);
        }
Esempio n. 17
0
 protected void AssertAreEquivalent(MvxSerializableBindingSpecification expected,
                                    MvxSerializableBindingSpecification actual)
 {
     Assert.AreEqual(expected.Count, actual.Count);
     foreach (var kvp in expected)
     {
         Assert.IsTrue(actual.ContainsKey(kvp.Key));
         AssertAreEquivalent(kvp.Value, actual[kvp.Key]);
     }
 }
 protected void AssertAreEquivalent(MvxSerializableBindingSpecification expected,
                                  MvxSerializableBindingSpecification actual)
 {
     Assert.AreEqual(expected.Count, actual.Count);
     foreach (var kvp in expected)
     {
         Assert.IsTrue(actual.ContainsKey(kvp.Key));
         AssertAreEquivalent(kvp.Value, actual[kvp.Key]);
     }
 }
        protected void PerformTest(string text, MvxSerializableBindingSpecification expectedLookup)
        {
            var theParser = new TParser();
            MvxSerializableBindingSpecification specification;
            var result = theParser.TryParseBindingSpecification(text, out specification);

            if (!result)
            {
                Debug.WriteLine("Failed on: " + text);
            }
            Assert.IsTrue(result);
            AssertAreEquivalent(expectedLookup, specification);
        }
Esempio n. 20
0
        private void PerformParseTest(params PerformSimpleTestParams[] testParamsArray)
        {
            var text = CreateText(testParamsArray);

            var expectedLookup = new MvxSerializableBindingSpecification();

            foreach (var testParams in testParamsArray)
            {
                expectedLookup[testParams.Target] = CreateExpectedDesciption(testParams);
            }

            PerformTest(text, expectedLookup);
        }
        private void PerformParseTest(params PerformSimpleTestParams[] testParamsArray)
        {
            var text = CreateText(testParamsArray);

            var expectedLookup = new MvxSerializableBindingSpecification();

            foreach (var testParams in testParamsArray)
            {
                expectedLookup[testParams.Target] = CreateExpectedDesciption(testParams);
            }

            MvxTrace.Trace(MvxTraceLevel.Diagnostic, "Testing: {0}", text);
            PerformTest(text, expectedLookup);
        }
Esempio n. 22
0
        public void TestLiteralBinding()
        {
            var text     = "Target 'James'";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Target",
                    new MvxSerializableBindingDescription()
                    {
                        Literal = "James"
                    }
                }
            };

            PerformTest(text, expected);
        }
Esempio n. 23
0
        public void TestLiteralNullBinding()
        {
            var text     = "Target null";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Target",
                    new MvxSerializableBindingDescription()
                    {
                        Literal = MvxTibetBindingParser.LiteralNull
                    }
                }
            };

            PerformTest(text, expected);
        }
Esempio n. 24
0
        public void TestPathBinding()
        {
            var text     = "Target James.T.Kirk";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Target",
                    new MvxSerializableBindingDescription()
                    {
                        Path = "James.T.Kirk"
                    }
                }
            };

            PerformTest(text, expected);
        }
Esempio n. 25
0
        public void TestAllOperators()
        {
            var operators = new Dictionary <string, string>()
            {
                { "+", "Add" },
                { "-", "Subtract" },
                { "*", "Multiply" },
                { "/", "Divide" },
                { "%", "Modulus" },
                { ">", "GreaterThan" },
                { "<", "LessThan" },
                { ">=", "GreaterThanOrEqualTo" },
                { "<=", "LessThanOrEqualTo" },
                { "!=", "NotEqualTo" },
                { "==", "EqualTo" },
                { "&&", "And" },
                { "||", "Or" },
            };

            foreach (var kvp in operators)
            {
                var text     = $"Target Foo1 {kvp.Key} Foo2";
                var expected = new MvxSerializableBindingSpecification()
                {
                    {
                        "Target",
                        new MvxSerializableBindingDescription()
                        {
                            Function = kvp.Value,
                            Sources  = new MvxSerializableBindingDescription[]
                            {
                                new MvxSerializableBindingDescription()
                                {
                                    Path = "Foo1"
                                },
                                new MvxSerializableBindingDescription()
                                {
                                    Path = "Foo2",
                                },
                            }
                        }
                    }
                };
                MvxTrace.Trace(MvxTraceLevel.Diagnostic, "Testing: {0}", text);
                PerformTest(text, expected);
            }
        }
        public void TestPathBinding()
        {
            var text     = "Target James.T.Kirk";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Target",
                    new MvxSerializableBindingDescription()
                    {
                        Path = "James.T.Kirk"
                    }
                }
            };

            MvxTrace.Trace(MvxTraceLevel.Diagnostic, "Testing: {0}", text);
            PerformTest(text, expected);
        }
Esempio n. 27
0
        public void TestLiteralNullBinding()
        {
            var text     = "Target null";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Target",
                    new MvxSerializableBindingDescription()
                    {
                        Literal = MvxTibetBindingParser.LiteralNull
                    }
                }
            };

            MvxTrace.Trace(MvxTraceLevel.Diagnostic, "Testing: {0}", text);
            PerformTest(text, expected);
        }
Esempio n. 28
0
        public void TestLiteralBinding()
        {
            var text     = "Target 'James'";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Target",
                    new MvxSerializableBindingDescription()
                    {
                        Literal = "James"
                    }
                }
            };

            MvxTrace.Trace(MvxTraceLevel.Diagnostic, "Testing: {0}", text);
            PerformTest(text, expected);
        }
Esempio n. 29
0
        public void TestCommandParameterQuotedStringBinding()
        {
            var text     = "Click MyCommand, CommandParameter=\"Love Converter=;Fred,It\"";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Click",
                    new MvxSerializableBindingDescription()
                    {
                        Path               = "MyCommand",
                        Converter          = "CommandParameter",
                        ConverterParameter = "Love Converter=;Fred,It"
                    }
                }
            };

            PerformTest(text, expected);
        }
Esempio n. 30
0
        public void TestCommandParameterNumberBinding()
        {
            var text     = "Tap Bar, CommandParameter=-12.12";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Tap",
                    new MvxSerializableBindingDescription()
                    {
                        Path               = "Bar",
                        Converter          = "CommandParameter",
                        ConverterParameter = -12.12
                    }
                }
            };

            PerformTest(text, expected);
        }
Esempio n. 31
0
        public void TestCommandParameterNullBinding()
        {
            var text     = "Life Love, CommandParameter=null";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Life",
                    new MvxSerializableBindingDescription()
                    {
                        Path               = "Love",
                        Converter          = "CommandParameter",
                        ConverterParameter = null
                    }
                }
            };

            PerformTest(text, expected);
        }
        public void TestCommandParameterBooleanBinding()
        {
            var text     = "Life Love, CommandParameter=false";
            var expected = new MvxSerializableBindingSpecification()
            {
                {
                    "Life",
                    new MvxSerializableBindingDescription()
                    {
                        Path               = "Love",
                        Converter          = "CommandParameter",
                        ConverterParameter = false
                    }
                }
            };

            MvxTrace.Trace(MvxTraceLevel.Diagnostic, "Testing: {0}", text);
            PerformTest(text, expected);
        }
Esempio n. 33
0
        public bool TryParseBindingSpecification(string text, out MvxSerializableBindingSpecification requestedBindings)
        {
            if (string.IsNullOrEmpty(text))
            {
                requestedBindings = new MvxSerializableBindingSpecification();
                return false;
            }

            try
            {
                var converter = this.GetService<IMvxJsonConverter>();
                requestedBindings = converter.DeserializeObject<MvxSerializableBindingSpecification>(text);
            }
            catch (Exception exception)
            {
                requestedBindings = null;
                MvxBindingTrace.Trace(MvxTraceLevel.Error,
                                      "Problem parsing Json tag for databinding {0}", exception.ToLongString());
                return false;
            }
            return true;
        }
Esempio n. 34
0
        private void PerformParseTest(params PerformSimpleTestParams[] testParamsArray)
        {
            var text = CreateText(testParamsArray);

            var expectedLookup = new MvxSerializableBindingSpecification();
            foreach (var testParams in testParamsArray)
            {
                expectedLookup[testParams.Target] = CreateExpectedDesciption(testParams);
            }

            MvxTrace.Trace(MvxTraceLevel.Diagnostic, "Testing: {0}", text);
            PerformTest(text, expectedLookup);
        }
 public bool TryParseBindingSpecification(string text, out MvxSerializableBindingSpecification requestedBindings)
 {
     return ChooseParser(text).TryParseBindingSpecification(text, out requestedBindings);
 }
Esempio n. 36
0
 private void PerformTest(string text, MvxSerializableBindingSpecification expectedLookup)
 {
     var theParser = new MvxSwissBindingParser();
     MvxSerializableBindingSpecification specification;
     Assert.IsTrue(theParser.TryParseBindingSpecification(text, out specification));
     AssertAreEquivalent(expectedLookup, specification);
 }