Example #1
0
        public void test_Load()
        {
            DataSet ds = new DataSet();

            Query subQuery = new Query("roles");

            subQuery.Condition = (QField)"role" == (QConst)"admin";
            subQuery.Fields    = new QField[] { "id" };

            Query q = new Query("users");

            q.Condition = (QField)"role" == subQuery;
            q.SetSort("name");

            Dalc.Load(q, ds);
            Assert.AreEqual(2, ds.Tables["users"].Rows.Count, "Load failed: rows count");

            Assert.AreEqual("Joe", ds.Tables["users"].Rows[0]["name"].ToString(), "Load failed: ivalid order");
            Assert.AreEqual("Mike", ds.Tables["users"].Rows[1]["name"].ToString(), "Load failed: ivalid order");

            q.Sort = new QSort[] { "role", "name DESC" };
            ds.Clear();
            Dalc.Load(q, ds);

            Assert.AreEqual(2, ds.Tables["users"].Rows.Count, "Load failed: rows count");

            Assert.AreEqual("Mike", ds.Tables["users"].Rows[0]["name"].ToString(), "Load failed: ivalid order");
            Assert.AreEqual("Joe", ds.Tables["users"].Rows[1]["name"].ToString(), "Load failed: ivalid order");

            q.Condition = (QField)"role" == subQuery & (QField)"id" > (QConst)5;
            ds.Clear();
            Dalc.Load(q, ds);
            Assert.AreEqual(0, ds.Tables["users"].Rows.Count, "Load failed");

            // test sql expr
            Assert.AreEqual(1, Dalc.LoadValue(new Query("users", (QField)"id" == (QConst)1)
            {
                Fields = new[] { new QField("sumIds", "sum(id)") }
            }));

            // test utility load helpers
            var loadAllValuesRes = Dalc.LoadAllValues(new Query("users",
                                                                new QueryConditionNode((QField)"role", Conditions.In, subQuery))
            {
                Fields      = new[] { (QField)"name" },
                StartRecord = 1,
                Sort        = new[] { (QSort)"name" }
            });

            Assert.AreEqual(1, loadAllValuesRes.Length);
            Assert.AreEqual("Mike", loadAllValuesRes[0]);

            Assert.AreEqual("Joe", Dalc.LoadValue(new Query("users",
                                                            new QueryConditionNode((QField)"role", Conditions.In, subQuery))
            {
                Fields      = new[] { (QField)"name" },
                StartRecord = 1,
                Sort        = new[] { (QSort)"name desc" }
            }));
        }