public void LocateOptimizedWithNullExpressionThrowsArgumentNull()
 {
     Assert.Throws <ArgumentNullException>(() => {
         string singleAlias;
         JoinAliasLocator.LocateOptimized(null, out singleAlias);
     });
 }
        public void LocateOptimizedReturnsSingleAliasIfExpressionContainsSingleAliasDoubleTimes()
        {
            string singleAlias;
            var    aliases = JoinAliasLocator.LocateOptimized("x.y + x.z", out singleAlias);

            Assert.Null(aliases);
            Assert.Equal("x", singleAlias);
        }
        public void LocateOptimizedWorksWithEmptyString()
        {
            string singleAlias;
            var    aliases = JoinAliasLocator.LocateOptimized("", out singleAlias);

            Assert.Null(aliases);
            Assert.Null(singleAlias);
        }
Esempio n. 4
0
        public void LocateOptimizedReturnsSingleAliasIfExpressionContainsSingle()
        {
            string singleAlias;
            var    aliases = JoinAliasLocator.LocateOptimized("x.y", out singleAlias);

            Assert.Equal(null, aliases);
            Assert.Equal("x", singleAlias);
        }
        public void LocateOptimizedReturnsHashSetIfExpressionContainsDoubleAliases()
        {
            string singleAlias;
            var    aliases = JoinAliasLocator.LocateOptimized("x.y + y.z", out singleAlias);

            Assert.Null(singleAlias);
            Assert.Equal(2, aliases.Count);
            Assert.Contains("x", aliases);
            Assert.Contains("y", aliases);
        }
        public void EnumerateAliasesDoesntEnumerateBracedAliases()
        {
            string singleAlias;
            var    aliases = JoinAliasLocator.LocateOptimized("x.y + [a].b + y.z + [a].[b].d", out singleAlias);

            Assert.Null(singleAlias);
            Assert.Equal(2, aliases.Count);
            Assert.Contains("x", aliases);
            Assert.Contains("y", aliases);
            Assert.StrictEqual(2, aliases.Count);
        }
Esempio n. 7
0
        public void LocateOptimizedReturnsHashSetIfExpressionContainsTripleAliases()
        {
            string singleAlias;
            var    aliases = JoinAliasLocator.LocateOptimized("x.y + y.z + u.w", out singleAlias);

            Assert.Equal(null, singleAlias);
            Assert.Equal(3, aliases.Count);
            Assert.True(aliases.Contains("x"));
            Assert.True(aliases.Contains("y"));
            Assert.True(aliases.Contains("u"));
        }
        public void LocateOptimizedReturnsHashSetWithIgnoreCase()
        {
            string singleAlias;
            var    aliases = JoinAliasLocator.LocateOptimized("x.y + y.z", out singleAlias);

            Assert.Null(singleAlias);
            Assert.Equal(2, aliases.Count);
            Assert.Contains("X", aliases);
            Assert.Contains("x", aliases);
            Assert.Contains("Y", aliases);
            Assert.Contains("y", aliases);
        }
Esempio n. 9
0
        /// <summary>
        /// Ensures the joins in expression. For this to work, into row must provide
        /// a list of joins and their expressions.
        /// </summary>
        /// <param name="expression">The expression.</param>
        /// <returns>The query itself.</returns>
        public SqlQuery EnsureJoinsInExpression(string expression)
        {
            if (string.IsNullOrEmpty(expression))
            {
                return(this);
            }

            var referencedJoins = JoinAliasLocator.LocateOptimized(expression, out string referencedJoin);

            if (referencedJoin != null)
            {
                EnsureJoin(referencedJoin);
            }

            if (referencedJoins != null)
            {
                foreach (var alias in referencedJoins)
                {
                    EnsureJoin(alias);
                }
            }

            return(this);
        }