コード例 #1
0
        public void Query_Outgoing_Two_Level_Star_Returns()
        {
            var(set, _, _) = StoreProcessor.GetGraphs("app1");

            var query = new ObjectQueryModel {
                Filter = new Dictionary <string, QueryUnit>()
                {
                    ["type"] = new QueryUnit {
                        Operator = "eq", Value = "building"
                    }
                },
                PageSize  = 10,
                HasObject = new LinkQuery[]
                {
                    new LinkQuery
                    {
                        Path   = "*/*",
                        Target = new ObjectQueryModel
                        {
                            Filter = new Dictionary <string, QueryUnit>()
                            {
                                ["name"] = new QueryUnit {
                                    Operator = "eq", Value = "Entity room 4"
                                }
                            }
                        }
                    }
                }
            };

            var rsp    = new ObjectQueryExecutor().Query(query, (RocksGraph)set);
            var values = rsp.Values.ToArray();

            Assert.AreEqual(1, values.Count());
            Assert.AreEqual(rsp.Continuation, null);
            Assert.AreEqual("oBZ_JoNOBC", values.First().Subject);
        }
コード例 #2
0
        public void Query_With_Incoming_Single_Level_Returns()
        {
            var(set, _, _) = StoreProcessor.GetGraphs("app1");

            var query = new ObjectQueryModel
            {
                Filter = new Dictionary <string, QueryUnit>()
                {
                    ["name"] = new QueryUnit {
                        Operator = "eq", Value = "name300"
                    }
                },
                PageSize   = 10,
                HasSubject = new LinkQuery[]
                {
                    new LinkQuery
                    {
                        Path   = "values",
                        Target = new ObjectQueryModel
                        {
                            Filter = new Dictionary <string, QueryUnit>()
                            {
                                ["name"] = new QueryUnit {
                                    Operator = "eq", Value = "name200"
                                }
                            }
                        }
                    }
                }
            };

            var rsp    = new ObjectQueryExecutor().Query(query, (RocksGraph)set);
            var values = rsp.Values.Select(x => x.Subject).ToArray();

            CollectionAssert.Contains(values, "300");
            Assert.AreEqual(1, values.Length);
        }
コード例 #3
0
        public void Query_With_Outgoing_EQ_Returns()
        {
            var(set, _, _) = StoreProcessor.GetGraphs("app1");

            var query = new ObjectQueryModel
            {
                Filter = new Dictionary <string, QueryUnit>()
                {
                    ["name"] = new QueryUnit {
                        Operator = "eq", Value = "name100"
                    }
                },
                PageSize  = 10,
                HasObject = new LinkQuery[]
                {
                    new LinkQuery
                    {
                        Path   = "contains/values",
                        Target = new ObjectQueryModel
                        {
                            Filter = new Dictionary <string, QueryUnit>()
                            {
                                ["name"] = new QueryUnit {
                                    Operator = "eq", Value = "name300"
                                }
                            }
                        }
                    }
                }
            };

            var rsp    = new ObjectQueryExecutor().Query(query, set);
            var values = rsp.Values.Select(x => x.Subject).ToArray();

            CollectionAssert.Contains(values, "100");
            Assert.AreEqual(1, rsp.Values.Count());
        }
コード例 #4
0
        public void Query_With_Continuation_Returns()
        {
            var(set, _, _) = StoreProcessor.GetGraphs("app1");

            var query = new ObjectQueryModel
            {
                Filter = new Dictionary <string, QueryUnit>()
                {
                    ["name"] = new QueryUnit {
                        Operator = "contains", Value = "name"
                    },
                },
                PageSize = 2
            };

            var rsp1 = new ObjectQueryExecutor().Query(query, (RocksGraph)set);

            Assert.AreEqual(2, rsp1.Values.Count());
            Assert.AreEqual(rsp1.Continuation, new Triple("200", "name", TripleObject.FromData("name200")));

            var query2 = new ObjectQueryModel
            {
                Filter = new Dictionary <string, QueryUnit>()
                {
                    ["name"] = new QueryUnit {
                        Operator = "contains", Value = "name"
                    },
                },
                Continuation = rsp1.Continuation,
                PageSize     = 2
            };

            var rsp2 = new ObjectQueryExecutor().Query(query2, (RocksGraph)set);

            Assert.AreEqual(2, rsp2.Values.Count());
            Assert.AreEqual(rsp2.Continuation, new Triple("400", "name", TripleObject.FromData("name400")));

            var query3 = new ObjectQueryModel
            {
                Filter = new Dictionary <string, QueryUnit>()
                {
                    ["name"] = new QueryUnit {
                        Operator = "contains", Value = "name"
                    },
                },
                Continuation = rsp2.Continuation,
                PageSize     = 2
            };

            var rsp3 = new ObjectQueryExecutor().Query(query3, (RocksGraph)set);

            Assert.AreEqual(2, rsp3.Values.Count());
            Assert.AreEqual(rsp3.Continuation, new Triple("600", "name", TripleObject.FromData("name600")));

            var query4 = new ObjectQueryModel
            {
                Filter = new Dictionary <string, QueryUnit>()
                {
                    ["name"] = new QueryUnit {
                        Operator = "contains", Value = "name"
                    },
                },
                Continuation = rsp3.Continuation,
                PageSize     = 2
            };

            var rsp4 = new ObjectQueryExecutor().Query(query4, (RocksGraph)set);

            Assert.AreEqual(2, rsp4.Values.Count());
            Assert.AreEqual(rsp4.Continuation, new Triple("800", "name", TripleObject.FromData("name800")));

            var query5 = new ObjectQueryModel
            {
                Filter = new Dictionary <string, QueryUnit>()
                {
                    ["name"] = new QueryUnit {
                        Operator = "contains", Value = "name"
                    },
                },
                Continuation = rsp4.Continuation,
                PageSize     = 2
            };

            var rsp5 = new ObjectQueryExecutor().Query(query5, (RocksGraph)set);

            Assert.AreEqual(0, rsp5.Values.Count());
            Assert.AreEqual(rsp5.Continuation, null);
        }
コード例 #5
0
        public void Query_With_PageSize_Returns()
        {
            var(set, _, _) = StoreProcessor.GetGraphs("app1");

            var query = new ObjectQueryModel
            {
                Filter = new Dictionary <string, QueryUnit>()
                {
                    ["name"] = new QueryUnit {
                        Operator = "contains", Value = "name"
                    }
                },
                PageSize  = 10,
                HasObject = new LinkQuery[]
                {
                    new LinkQuery
                    {
                        Path   = "contains/values",
                        Target = new ObjectQueryModel
                        {
                            Filter = new Dictionary <string, QueryUnit>()
                            {
                                ["name"] = new QueryUnit {
                                    Operator = "eq", Value = "namev0"
                                }
                            }
                        }
                    }
                }
            };

            var rsp    = new ObjectQueryExecutor().Query(query, (RocksGraph)set);
            var values = rsp.Values.Select(x => x.Subject).ToArray();

            CollectionAssert.AreEqual(values, new string[] { "i00", "i01", "i02", "i03", "i04", "i05", "i06", "i07", "i08", "i09" });
            Assert.AreEqual(new Triple("i09", "name", TripleObject.FromData("name09")), rsp.Continuation);

            var query2 = new ObjectQueryModel
            {
                Continuation = rsp.Continuation,
                Filter       = new Dictionary <string, QueryUnit>()
                {
                    ["name"] = new QueryUnit {
                        Operator = "contains", Value = "name"
                    }
                },
                PageSize  = 10,
                HasObject = new LinkQuery[]
                {
                    new LinkQuery
                    {
                        Path   = "contains/values",
                        Target = new ObjectQueryModel
                        {
                            Filter = new Dictionary <string, QueryUnit>()
                            {
                                ["name"] = new QueryUnit {
                                    Operator = "eq", Value = "namev0"
                                }
                            }
                        }
                    }
                }
            };

            var rsp2    = new ObjectQueryExecutor().Query(query2, (RocksGraph)set);
            var values2 = rsp2.Values.Select(x => x.Subject).ToArray();

            CollectionAssert.AreEqual(values2, new string[] { "i10", "i11", "i12", "i13", "i14", "i15", "i16", "i17", "i18", "i19" });
            Assert.AreEqual(new Triple("i19", "name", TripleObject.FromData("name19")), rsp2.Continuation);

            var query3 = new ObjectQueryModel
            {
                Continuation = rsp2.Continuation,
                Filter       = new Dictionary <string, QueryUnit>()
                {
                    ["name"] = new QueryUnit {
                        Operator = "contains", Value = "name"
                    }
                },
                PageSize  = 1000,
                HasObject = new LinkQuery[]
                {
                    new LinkQuery
                    {
                        Path   = "contains/values",
                        Target = new ObjectQueryModel
                        {
                            Filter = new Dictionary <string, QueryUnit>()
                            {
                                ["name"] = new QueryUnit {
                                    Operator = "eq", Value = "namev0"
                                }
                            }
                        }
                    }
                }
            };

            var rsp3    = new ObjectQueryExecutor().Query(query3, (RocksGraph)set);
            var values3 = rsp3.Values.Select(x => x.Subject).ToArray();

            Assert.AreEqual(80, values3.Length);
            Assert.AreEqual(null, rsp3.Continuation);
        }