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" } })); }