Beispiel #1
0
        public void Match()
        {
            using (var context = new BloggingContext(ConnectionString))
            {
                context.Database.Log = Console.Out.WriteLine;

                var blog1 = new Blog
                {
                    Name = "The quick brown fox jumps over the lazy dog."
                };
                var blog2 = new Blog
                {
                    Name = "Jackdaws loves my big sphinx of quartz."
                };
                context.Blogs.Add(blog1);
                context.Blogs.Add(blog2);
                context.SaveChanges();

                var foundBlog = context
                                .Blogs
                                .FirstOrDefault(
                    x =>
                    NpgsqlTextFunctions.Match(
                        NpgsqlTextFunctions.ToTsVector(x.Name),
                        NpgsqlTextFunctions.ToTsQuery("jump & dog")));

                Assert.That(foundBlog != null);
                Assert.That(foundBlog.Name, Is.EqualTo(blog1.Name));
            }
        }
Beispiel #2
0
        public void TsHeadline()
        {
            using (var context = new BloggingContext(ConnectionString))
            {
                context.Database.Log = Console.Out.WriteLine;

                var blog1 = new Blog
                {
                    Name = "cooky cookie piano pianos"
                };
                context.Blogs.Add(blog1);

                var blog2 = new Blog
                {
                    Name = "blue crab denominates elephant"
                };
                context.Blogs.Add(blog2);
                context.SaveChanges();

                var headlines = context
                                .Blogs
                                .Select(
                    x => NpgsqlTextFunctions.TsHeadline(
                        x.Name,
                        NpgsqlTextFunctions.ToTsQuery("cookie"),
                        "StartSel=<i> StopSel=</i>"))
                                .ToList();

                Assert.That(headlines.Count, Is.EqualTo(2));
                Assert.That(headlines[0], Is.EqualTo("<i>cooky</i> <i>cookie</i> piano pianos"));
                Assert.That(headlines[1], Is.EqualTo(blog2.Name));

                headlines = context
                            .Blogs
                            .Select(
                    x => NpgsqlTextFunctions.TsHeadline(
                        "english",
                        x.Name,
                        NpgsqlTextFunctions.ToTsQuery("piano"),
                        "StartSel=<i> StopSel=</i>"))
                            .ToList();

                Assert.That(headlines.Count, Is.EqualTo(2));
                Assert.That(headlines[0], Is.EqualTo("cooky cookie <i>piano</i> <i>pianos</i>"));
                Assert.That(headlines[1], Is.EqualTo(blog2.Name));
            }
        }
Beispiel #3
0
        public void NumNode()
        {
            using (var context = new BloggingContext(ConnectionString))
            {
                context.Database.Log = Console.Out.WriteLine;

                var blog = new Blog
                {
                    Name = "_"
                };
                context.Blogs.Add(blog);
                context.SaveChanges();

                var nodeCount = context
                                .Blogs
                                .Select(x => NpgsqlTextFunctions.NumNode(NpgsqlTextFunctions.ToTsQuery("(fat & rat) | cat")))
                                .FirstOrDefault();

                Assert.That(nodeCount, Is.EqualTo(5));
            }
        }
Beispiel #4
0
        public void ConversionToTsQuery()
        {
            using (var context = new BloggingContext(ConnectionString))
            {
                context.Database.Log = Console.Out.WriteLine;

                context.Blogs.Add(new Blog {
                    Name = "_"
                });
                context.SaveChanges();

                const string expected = "'b' & 'c'";
                var          casted   = context.Blogs.Select(x => NpgsqlTextFunctions.AsTsQuery(expected)).First();
                Assert.That(
                    NpgsqlTsQuery.Parse(casted).ToString(),
                    Is.EqualTo(NpgsqlTsQuery.Parse(expected).ToString()));

                var converted = context.Blogs.Select(x => NpgsqlTextFunctions.ToTsQuery("b & c")).First();
                Assert.That(
                    NpgsqlTsQuery.Parse(converted).ToString(),
                    Is.EqualTo(NpgsqlTsQuery.Parse(expected).ToString()));

                converted = context.Blogs.Select(x => NpgsqlTextFunctions.ToTsQuery("english", "b & c")).First();
                Assert.That(
                    NpgsqlTsQuery.Parse(converted).ToString(),
                    Is.EqualTo(NpgsqlTsQuery.Parse(expected).ToString()));

                converted = context.Blogs.Select(x => NpgsqlTextFunctions.PlainToTsQuery("b & c")).First();
                Assert.That(
                    NpgsqlTsQuery.Parse(converted).ToString(),
                    Is.EqualTo(NpgsqlTsQuery.Parse(expected).ToString()));

                converted = context.Blogs.Select(x => NpgsqlTextFunctions.PlainToTsQuery("english", "b & c")).First();
                Assert.That(
                    NpgsqlTsQuery.Parse(converted).ToString(),
                    Is.EqualTo(NpgsqlTsQuery.Parse(expected).ToString()));
            }
        }
Beispiel #5
0
        public void QueryTree()
        {
            using (var context = new BloggingContext(ConnectionString))
            {
                context.Database.Log = Console.Out.WriteLine;

                var blog = new Blog
                {
                    Name = "_"
                };
                context.Blogs.Add(blog);
                context.SaveChanges();

                var queryTree = context
                                .Blogs
                                .Select(x => NpgsqlTextFunctions.QueryTree(NpgsqlTextFunctions.ToTsQuery("foo & ! bar")))
                                .FirstOrDefault();

                Assert.That(
                    NpgsqlTsQuery.Parse(queryTree).ToString(),
                    Is.EqualTo(NpgsqlTsQuery.Parse("'foo'").ToString()));
            }
        }