Ejemplo n.º 1
0
        public void testExpressionFunctions_roundDonwTimePart()
        {
            var dialect = new StandardDialect();
            var date    = new DateTime(2009, 1, 23, 12, 34, 56);

            dialect.TruncateTime(date).Is(new DateTime(2009, 1, 23));
        }
 internal ValueObject(SqlParserConfig config,
                      string parameterName, object parameterValue, Type parameterType)
 {
     _dialect     = config.Dialect;
     PropertyName = parameterName;
     Value        = parameterValue;
     DataType     = parameterType;
 }
        public void TestCaseUnparsedTextDecoration()
        {
            var dialect = new StandardDialect();
            var context = CreateContext(StringComparer.OrdinalIgnoreCase);

            ExpectArgumentNullException("context", () => dialect.DecorateUnParsedText(null, string.Empty));

            Assert.AreEqual(string.Empty, dialect.DecorateUnParsedText(context, null));
            Assert.AreEqual(string.Empty, dialect.DecorateUnParsedText(context, string.Empty));
            Assert.AreEqual(string.Empty, dialect.DecorateUnParsedText(context, "    \r\n"));
        }
        public void TestCaseDefaultConstructedAndStatic()
        {
            var parameterless = new StandardDialect();
            var iic           = new StandardDialect(CultureInfo.InvariantCulture, DialectCasing.IgnoreCase);
            var iuc           = new StandardDialect(CultureInfo.InvariantCulture, DialectCasing.UpperCase);

            Assert.AreEqual(iic, parameterless);
            Assert.AreEqual(iic.GetHashCode(), parameterless.GetHashCode());

            Assert.AreEqual(iuc, StandardDialect.Default);
            Assert.AreEqual(iuc.GetHashCode(), StandardDialect.Default.GetHashCode());

            Assert.AreEqual(iic, StandardDialect.DefaultIgnoreCase);
            Assert.AreEqual(iic.GetHashCode(), StandardDialect.DefaultIgnoreCase.GetHashCode());
        }
        public void TestCaseSpecialKeywordsCaseSensitiveLower()
        {
            var dialect = new StandardDialect(CultureInfo.InvariantCulture, DialectCasing.LowerCase);

            var undefined = XLTemplate.Evaluate(dialect, "{undefined}");
            var _true     = XLTemplate.Evaluate(dialect, "{true}");
            var _false    = XLTemplate.Evaluate(dialect, "{false}");
            var nan       = XLTemplate.Evaluate(dialect, "{nan}");
            var infinity  = XLTemplate.Evaluate(dialect, "{infinity}");

            Assert.AreEqual("undefined", undefined);
            Assert.AreEqual("true", _true);
            Assert.AreEqual("false", _false);
            Assert.AreEqual("nan", nan);
            Assert.AreEqual("infinity", infinity);
        }
        public void TestCaseSpecialKeywordsCaseSensitiveUpper()
        {
            var dialect = new StandardDialect(CultureInfo.InvariantCulture, DialectCasing.UpperCase);

            var undefined = XLTemplate.Evaluate(dialect, "{UNDEFINED}");
            var _true     = XLTemplate.Evaluate(dialect, "{TRUE}");
            var _false    = XLTemplate.Evaluate(dialect, "{FALSE}");
            var nan       = XLTemplate.Evaluate(dialect, "{NAN}");
            var infinity  = XLTemplate.Evaluate(dialect, "{INFINITY}");

            Assert.AreEqual("UNDEFINED", undefined);
            Assert.AreEqual("TRUE", _true);
            Assert.AreEqual("FALSE", _false);
            Assert.AreEqual("NAN", nan);
            Assert.AreEqual("INFINITY", infinity);
        }
        public void TestCaseSpecialKeywordsCaseInsensitive()
        {
            var dialect = new StandardDialect(CultureInfo.InvariantCulture, DialectCasing.IgnoreCase);

            var undefined = XLTemplate.Evaluate(dialect, "{undeFIned}");
            var _true     = XLTemplate.Evaluate(dialect, "{tRUe}");
            var _false    = XLTemplate.Evaluate(dialect, "{faLSe}");
            var nan       = XLTemplate.Evaluate(dialect, "{nAn}");
            var infinity  = XLTemplate.Evaluate(dialect, "{infinitY}");

            Assert.AreEqual("Undefined", undefined);
            Assert.AreEqual("True", _true);
            Assert.AreEqual("False", _false);
            Assert.AreEqual("NaN", nan);
            Assert.AreEqual("Infinity", infinity);
        }
Ejemplo n.º 8
0
        public void testExpressionFunctions_escape_withBackslash()
        {
            var dialect = new StandardDialect();

            dialect.Escape("a\\a%a_", '\\').Is("a\\\\a\\%a\\_");

            //var input = "a\\a%a_";
            //var result = Regex.Replace(input, "[\\%\\\\_]", "\\$0");
            //result.Is("a\\\\a\\%a\\_");

            //var input = "a\\a%a_";
            //var result = Regex.Replace(input, @"[\\%\\_]", "\\$0");
            //result.Is("a\\\\a\\%a\\_");

            //var input = "a\\a%a_";
            //var result = Regex.Replace(input, "[\\\\%\\\\_]", "\\$0");
            //result.Is("a\\\\a\\%a\\_");
        }
Ejemplo n.º 9
0
        public void TestCaseEquality()
        {
            /* Build dialects. */
            var iic = new CodeMonkeyDialect(DialectCasing.IgnoreCase);
            var iuc = new CodeMonkeyDialect(DialectCasing.UpperCase);
            var ilc = new CodeMonkeyDialect(DialectCasing.LowerCase);

            /* 1 */
            Assert.AreEqual(iic, iic);
            Assert.AreNotEqual(iic, iuc);
            Assert.AreNotEqual(iic.GetHashCode(), iuc.GetHashCode());
            Assert.AreNotEqual(iic, ilc);
            Assert.AreNotEqual(iic.GetHashCode(), ilc.GetHashCode());

            /* 2 */
            Assert.AreEqual(iuc, iuc);
            Assert.AreNotEqual(iuc, ilc);
            Assert.AreNotEqual(iuc.GetHashCode(), ilc.GetHashCode());

            /* 3 */
            Assert.AreEqual(ilc, ilc);

            /* 4 */
            var siic = new StandardDialect(CultureInfo.InvariantCulture, DialectCasing.IgnoreCase);
            var siuc = new StandardDialect(CultureInfo.InvariantCulture, DialectCasing.UpperCase);
            var silc = new StandardDialect(CultureInfo.InvariantCulture, DialectCasing.LowerCase);

            Assert.AreNotEqual(iic, siic);
            Assert.AreNotEqual(iuc, siuc);
            Assert.AreNotEqual(ilc, silc);
            Assert.AreNotEqual(iic.GetHashCode(), siic.GetHashCode());
            Assert.AreNotEqual(iuc.GetHashCode(), siuc.GetHashCode());
            Assert.AreNotEqual(ilc.GetHashCode(), silc.GetHashCode());

            /* Special */
            Assert.AreNotEqual(iic, this);
            Assert.AreNotEqual(iic, null);
        }
Ejemplo n.º 10
0
        public void testExpressionFunctions_infix()
        {
            var dialect = new StandardDialect();

            dialect.Contains("a$a%a_").Is("%a$$a$%a$_%");
        }
Ejemplo n.º 11
0
        public void testExpressionFunctions_infix_escapeWithBackslash()
        {
            var dialect = new StandardDialect();

            dialect.Contains("a\\a%a_", '\\').Is("%a\\\\a\\%a\\_%");
        }
Ejemplo n.º 12
0
        public void testExpressionFunctions_suffix()
        {
            var dialect = new StandardDialect();

            dialect.EndsWith("a$a%a_").Is("%a$$a$%a$_");
        }
Ejemplo n.º 13
0
        public void testExpressionFunctions_prefix_escape()
        {
            var dialect = new StandardDialect();

            dialect.StartsWith("a!a%a_", '!').Is("a!!a!%a!_%");
        }
Ejemplo n.º 14
0
        public void testExpressionFunctions_prefix()
        {
            var dialect = new StandardDialect();

            dialect.StartsWith("a$a%a_").Is("a$$a$%a$_%");
        }
Ejemplo n.º 15
0
        public void testExpressionFunctions_escape_withExclamation()
        {
            var dialect = new StandardDialect();

            dialect.Escape("a!a%a_", '!').Is("a!!a!%a!_");
        }
Ejemplo n.º 16
0
        public void testExpressionFunctions_escape()
        {
            var dialect = new StandardDialect();

            dialect.Escape("a$a%a_").Is("a$$a$%a$_");
        }
        private static StandardDialect TestDialect(CultureInfo culture, DialectCasing casing)
        {
            var dialect = new StandardDialect(culture, casing);

            Assert.IsInstanceOf <StandardSelfObject>(dialect.Self);

            Assert.AreEqual(dialect.Culture, culture);
            Assert.AreEqual('"', dialect.EndStringLiteralCharacter);
            Assert.AreEqual('}', dialect.EndTagCharacter);
            Assert.AreEqual(culture.NumberFormat.CurrencyDecimalSeparator[0], dialect.NumberDecimalSeparatorCharacter);
            Assert.AreEqual('"', dialect.StartStringLiteralCharacter);
            Assert.AreEqual('{', dialect.StartTagCharacter);
            Assert.AreEqual('\\', dialect.StringLiteralEscapeCharacter);

            Assert.NotNull(dialect.FlowSymbols);
            Assert.AreEqual("(", dialect.FlowSymbols.GroupOpen);
            Assert.AreEqual(")", dialect.FlowSymbols.GroupClose);
            Assert.AreEqual(",", dialect.FlowSymbols.Separator);
            Assert.AreEqual(".", dialect.FlowSymbols.MemberAccess);

            var expectedComparer = StringComparer.Create(dialect.Culture, casing == DialectCasing.IgnoreCase);

            Assert.AreEqual(dialect.IdentifierComparer, expectedComparer);
            Assert.AreEqual(dialect.StringLiteralComparer, expectedComparer);

            Func <string, string> transformer = input => input;

            if (casing == DialectCasing.LowerCase)
            {
                transformer = input => input.ToLower(culture);
            }
            else if (casing == DialectCasing.UpperCase)
            {
                transformer = input => input.ToUpper(culture);
            }

            Assert.AreEqual(5, dialect.SpecialKeywords.Count);
            Assert.IsTrue(dialect.SpecialKeywords.ContainsKey(transformer("True")) && dialect.SpecialKeywords[transformer("True")].Equals(true));
            Assert.IsTrue(dialect.SpecialKeywords.ContainsKey(transformer("False")) && dialect.SpecialKeywords[transformer("False")].Equals(false));
            Assert.IsTrue(dialect.SpecialKeywords.ContainsKey(transformer("Undefined")) && dialect.SpecialKeywords[transformer("Undefined")] == null);
            Assert.IsTrue(dialect.SpecialKeywords.ContainsKey(transformer("NaN")) && dialect.SpecialKeywords[transformer("NaN")].Equals(double.NaN));
            Assert.IsTrue(dialect.SpecialKeywords.ContainsKey(transformer("Infinity")) && dialect.SpecialKeywords[transformer("Infinity")].Equals(double.PositiveInfinity));

            Assert.AreEqual(7, dialect.Directives.Count);
            foreach (var directive in dialect.Directives)
            {
                if (directive is ConditionalInterpolationDirective)
                {
                    Assert.AreEqual(transformer("{$ IF $}"), directive.ToString());
                }
                else if (directive is ForEachDirective)
                {
                    Assert.AreEqual(transformer("{FOR EACH ? IN $}...{END}"), directive.ToString());
                }
                else if (directive is IfDirective)
                {
                    Assert.AreEqual(transformer("{IF $ THEN}...{END}"), directive.ToString());
                }
                else if (directive is IfElseDirective)
                {
                    Assert.AreEqual(transformer("{IF $ THEN}...{ELSE}...{END}"), directive.ToString());
                }
                else if (directive is InterpolationDirective)
                {
                    Assert.AreEqual("{$}", directive.ToString());
                }
                else if (directive is RepeatDirective)
                {
                    Assert.AreEqual(transformer("{REPEAT $ TIMES}...{END}"), directive.ToString());
                }
                else if (directive is PreFormattedUnParsedTextDirective)
                {
                    Assert.AreEqual(transformer("{PREFORMATTED}...{END}"), directive.ToString());
                }
                else
                {
                    Assert.Fail();
                }
            }

            Assert.AreEqual(24, dialect.Operators.Count);
            foreach (var @operator in dialect.Operators)
            {
                if (@operator is RelationalEqualsOperator)
                {
                    Assert.AreEqual("==", @operator.ToString());
                }
                else if (@operator is RelationalNotEqualsOperator)
                {
                    Assert.AreEqual("!=", @operator.ToString());
                }
                else if (@operator is RelationalGreaterThanOperator)
                {
                    Assert.AreEqual(">", @operator.ToString());
                }
                else if (@operator is RelationalGreaterThanOrEqualsOperator)
                {
                    Assert.AreEqual(">=", @operator.ToString());
                }
                else if (@operator is RelationalLowerThanOperator)
                {
                    Assert.AreEqual("<", @operator.ToString());
                }
                else if (@operator is RelationalLowerThanOrEqualsOperator)
                {
                    Assert.AreEqual("<=", @operator.ToString());
                }
                else if (@operator is LogicalAndOperator)
                {
                    Assert.AreEqual("&&", @operator.ToString());
                }
                else if (@operator is LogicalOrOperator)
                {
                    Assert.AreEqual("||", @operator.ToString());
                }
                else if (@operator is LogicalNotOperator)
                {
                    Assert.AreEqual("!", @operator.ToString());
                }
                else if (@operator is BitwiseAndOperator)
                {
                    Assert.AreEqual("&", @operator.ToString());
                }
                else if (@operator is BitwiseOrOperator)
                {
                    Assert.AreEqual("|", @operator.ToString());
                }
                else if (@operator is BitwiseXorOperator)
                {
                    Assert.AreEqual("^", @operator.ToString());
                }
                else if (@operator is BitwiseNotOperator)
                {
                    Assert.AreEqual("~", @operator.ToString());
                }
                else if (@operator is BitwiseShiftLeftOperator)
                {
                    Assert.AreEqual("<<", @operator.ToString());
                }
                else if (@operator is BitwiseShiftRightOperator)
                {
                    Assert.AreEqual(">>", @operator.ToString());
                }
                else if (@operator is ArithmeticDivideOperator)
                {
                    Assert.AreEqual("/", @operator.ToString());
                }
                else if (@operator is ArithmeticModuloOperator)
                {
                    Assert.AreEqual("%", @operator.ToString());
                }
                else if (@operator is ArithmeticMultiplyOperator)
                {
                    Assert.AreEqual("*", @operator.ToString());
                }
                else if (@operator is ArithmeticNegateOperator)
                {
                    Assert.AreEqual("-", @operator.ToString());
                }
                else if (@operator is ArithmeticNeutralOperator)
                {
                    Assert.AreEqual("+", @operator.ToString());
                }
                else if (@operator is ArithmeticSubtractOperator)
                {
                    Assert.AreEqual("-", @operator.ToString());
                }
                else if (@operator is ArithmeticSumOperator)
                {
                    Assert.AreEqual("+", @operator.ToString());
                }
                else if (@operator is SequenceOperator)
                {
                    Assert.AreEqual("..", @operator.ToString());
                }
                else if (@operator is FormatOperator)
                {
                    Assert.AreEqual(":", @operator.ToString());
                }
                else
                {
                    Assert.Fail();
                }
            }

            return(dialect);
        }
Ejemplo n.º 18
0
        public void testExpressionFunctions_suffix_escape()
        {
            var dialect = new StandardDialect();

            dialect.EndsWith("a!a%a_", '!').Is("%a!!a!%a!_");
        }
Ejemplo n.º 19
0
        public void testExpressionFunctions_suffix_escapeWithBackslash()
        {
            var dialect = new StandardDialect();

            dialect.EndsWith("a\\a%a_", '\\').Is("%a\\\\a\\%a\\_");
        }
Ejemplo n.º 20
0
        public void testExpressionFunctions_infix_escape()
        {
            var dialect = new StandardDialect();

            dialect.Contains("a!a%a_", '!').Is("%a!!a!%a!_%");
        }