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); }
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); }
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); }
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; } }
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); } }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
public void TestLiteralBinding() { var text = "Target 'James'"; var expected = new MvxSerializableBindingSpecification() { { "Target", new MvxSerializableBindingDescription() { Literal = "James" } } }; PerformTest(text, expected); }
public void TestLiteralNullBinding() { var text = "Target null"; var expected = new MvxSerializableBindingSpecification() { { "Target", new MvxSerializableBindingDescription() { Literal = MvxTibetBindingParser.LiteralNull } } }; PerformTest(text, expected); }
public void TestPathBinding() { var text = "Target James.T.Kirk"; var expected = new MvxSerializableBindingSpecification() { { "Target", new MvxSerializableBindingDescription() { Path = "James.T.Kirk" } } }; PerformTest(text, expected); }
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); }
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); }
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); }
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); }
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); }
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); }
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; }
public bool TryParseBindingSpecification(string text, out MvxSerializableBindingSpecification requestedBindings) { return ChooseParser(text).TryParseBindingSpecification(text, out requestedBindings); }