public void ScalerFromQuery() { _testName = MethodInfo.GetCurrentMethod().Name.GetHashCode().ToString(); Cleanup(); var objs = TestResourceFactory.GetMockClassAObjects(100).ToList(); var first = objs.FirstOrDefault() as MockClassC; var select = new ScalarSelectExpression( new string[] { "Location.Y" }, new CompareToken("Id", CompareEnum.Equals, 1), new CompareToken("ReferenceCode", CompareEnum.Like, first.ReferenceCode), new CompareToken("Location.X", CompareEnum.Equals, first.Location.X), new CompareToken("Name", CompareEnum.Like, first.Name.Substring(1, first.Name.Length - 2))); using (var db = new Database<int, MockClassA>(_testName + ".database", "Id")) { var eval = new ExpressionResolver<int, MockClassA>(db); db.Load(); using (var t = db.BeginTransaction()) { objs.ToList().ForEach(o => o.Id = db.Add(o)); t.Commit(); var results = eval.ExecuteScaler(select); Assert.AreEqual(1, results.Count); Assert.AreEqual(first.Location.Y, results[0].Value<float>("Location.Y")); } } }
public void UpdateFromQuery() { _testName = MethodInfo.GetCurrentMethod().Name.GetHashCode().ToString(); Cleanup(); var objs = TestResourceFactory.GetMockClassAObjects(100).ToList(); objs.OfType<MockClassC>().ToList().ForEach(o => o.ReferenceCode = null); var first = objs.FirstOrDefault() as MockClassC; var refCode = "R " + new Random().Next(); var select = new ScalarSelectExpression( new string[] { "Location.Y" }, new CompareToken("Id", CompareEnum.Equals, 1), new CompareToken("Location.X", CompareEnum.Equals, first.Location.X), new CompareToken("Name", CompareEnum.Like, first.Name.Substring(1, first.Name.Length - 2))); using (var db = new Database<int, MockClassA>(_testName + ".database", "Id")) { var eval = new ExpressionResolver<int, MockClassA>(db); db.Load(); using (var t = db.BeginTransaction()) { objs.ToList().ForEach(o => o.Id = db.Add(o)); t.Commit(); } using (var t = db.BeginTransaction()) { var count = eval.ExecuteUpdate( new UpdateExpression( typeof(MockClassC).AssemblyQualifiedName, select, new UpdateToken("Location.Y", 133.33, ValueEnum.Float), new UpdateToken("Location.Z", 222.11, ValueEnum.Float), new UpdateToken("ReferenceCode", refCode))); Assert.AreEqual(1, count); t.Commit(); var results = eval.ExecuteScaler(select); Assert.AreEqual(1, results.Count); Assert.AreEqual(133.33f, ((MockClassC)db.Fetch(1)).Location.Y); Assert.AreEqual(222.11f, ((MockClassC)db.Fetch(1)).Location.Z); Assert.AreEqual(refCode, ((MockClassC)db.Fetch(1)).ReferenceCode); } } }
public void ScalerFirstFromQuery() { _testName = MethodInfo.GetCurrentMethod().Name.GetHashCode().ToString(); Cleanup(); var objs = TestResourceFactory.GetMockClassAObjects(100).ToList(); var first = objs.FirstOrDefault() as MockClassC; var select = new ScalarSelectExpression(10, true, new string[] { "Location.Y" }, new CompareToken("Name", CompareEnum.Greater, "Z" + first.Name)); using (var db = new Database<int, MockClassA>(_testName + ".database", "Id")) { var eval = new ExpressionResolver<int, MockClassA>(db); db.Load(); using (var t = db.BeginTransaction()) { objs.ToList().ForEach(o => o.Id = db.Add(o)); t.Commit(); var results = eval.ExecuteScaler(select); Assert.LessOrEqual(10, results.Count); } } using (var db = new Database<int, MockClassA>(_testName + ".database", "Id")) { var eval = new ExpressionResolver<int, MockClassA>(db); db.Load(); var results2 = eval.ExecuteScaler(select); Assert.LessOrEqual(10, results2.Count); } }