public void TestBinaryLengthTranslation([IncludeDataSources(TestProvName.AllSQLite)] string context) { using (var db = new TestDataConnection(context)) using (var table = db.CreateLocalTable <IssueClass>()) { db.Insert(new IssueClass() { Id = 99, Data = new byte[] { 1, 2, 3, 4, 5 }, DataB = new Binary(new byte[] { 1, 2, 3, 4, 5, 6 }) }); var qry1 = table.Select(x => Sql.Length(x.Data)).ToList(); Assert.That(db.LastQuery !.ToLower().Contains("length(")); var qry2 = table.Select(x => x.Data !.Length).ToList(); Assert.That(db.LastQuery !.ToLower().Contains("length(")); var qry3 = db.GetTable <IssueClass>().Select(x => Sql.Length(x.DataB)).ToList(); Assert.That(db.LastQuery !.ToLower().Contains("length(")); var qry4 = db.GetTable <IssueClass>().Select(x => x.DataB !.Length).ToList(); Assert.That(db.LastQuery !.ToLower().Contains("length(")); Assert.AreEqual(5, qry1[0]); Assert.AreEqual(5, qry2[0]); Assert.AreEqual(6, qry3[0]); Assert.AreEqual(6, qry4[0]); } }
public void Test([DataSources(false)] string context) { using (var db = new TestDataConnection(context)) using (db.CreateLocalTable <Parent564>()) { db.Insert(new Child564A() { StringValue = "SomeValue" }); db.Insert(new Child564B() { IntValue = 911 }); Assert.AreEqual(2, db.GetTable <Parent564>().Count()); } }
public void TestInsert([DataSources(false, TestProvName.AllFirebird, TestProvName.AllSybase, ProviderName.Informix)] string context) { const int recordsCount = 20; using (var db = new TestDataConnection(context)) using (db.CreateLocalTable <InsertTable>()) { var tasks = new List <Task>(); for (var iteration = 0; iteration < recordsCount; iteration++) { var local = iteration; tasks.Add(Task.Run(() => Insert(context, local))); } Task.WaitAll(tasks.ToArray()); Assert.AreEqual(db.GetTable <InsertTable>().Count(), db.GetTable <InsertTable>().GroupBy(_ => _.Value).Count()); } }
public void TestCreate([IncludeDataSources(false, TestProvName.AllSQLite)] string context) { using (var db = new TestDataConnection(context)) using (db.CreateLocalTable <TestTable>()) { var sql = db.LastQuery !; Assert.AreEqual(sql.Replace("\r", ""), @"CREATE TABLE [TestTable] ( [ID] INTEGER NOT NULL, [Field1] INTEGER NOT NULL, [Field2] INTEGER NOT NULL, [Field3] INTEGER NOT NULL, [Field4] INTEGER NOT NULL, [field11] NVarChar(255) NULL, [Field5] INTEGER NOT NULL, CONSTRAINT [PK_TestTable] PRIMARY KEY ([ID]) ) ".Replace("\r", "")); } }
public void TestInsert([DataSources(false, TestProvName.AllFirebird, TestProvName.AllSybase, TestProvName.AllInformix, TestProvName.AllOracle12)] string context) { const int recordsCount = 20; // sqlite connection pooling is not compatible with tested template SQLiteTools.ClearAllPools(); using (new DisableBaseline("Multi-threading")) using (var db = new TestDataConnection(context)) using (db.CreateLocalTable <InsertTable>()) { var tasks = new List <Task>(); for (var iteration = 0; iteration < recordsCount; iteration++) { var local = iteration; tasks.Add(Task.Run(() => Insert(context, local))); } Task.WaitAll(tasks.ToArray()); Assert.AreEqual(db.GetTable <InsertTable>().Count(), db.GetTable <InsertTable>().GroupBy(_ => _.Value).Count()); } }
public void TestMerge([MergeDataContextSource( ProviderName.Firebird, TestProvName.Firebird3, ProviderName.SybaseManaged, ProviderName.Informix)] string context) { const int repeatsCount = 20; var rnd = new Random(); var mammals = new[] { "Elephant", "Cat" }; var reptiles = new[] { "Snake", "Lizard" }; using (var db = new TestDataConnection(context)) using (db.CreateLocalTable <Animal>()) using (db.CreateLocalTable <AnimalUpdate>()) { for (var iteration = 0; iteration < repeatsCount; iteration++) { var mammalsUpdate = new Data() { Color = "Grey", Updates = mammals .Select(name => new AnimalUpdate() { Name = name, Length = rnd.Next(), Iteration = iteration }) .ToList() }; var reptilesUpdate = new Data() { Color = "Green", Updates = reptiles .Select(name => new AnimalUpdate() { Name = name, Length = rnd.Next(), Iteration = iteration + repeatsCount }) .ToList() }; var updateMammalsTask = Task.Run(() => Update(context, mammalsUpdate, iteration)); var updateReptilesTask = Task.Run(() => Update(context, reptilesUpdate, iteration + repeatsCount)); Task.WaitAll(updateMammalsTask, updateReptilesTask); var greenAnimalsCount = db.GetTable <Animal>().Count(animal => animal.Color == "Green"); if (greenAnimalsCount != reptiles.Length) { var error = new StringBuilder($"Error on iteration {iteration + 1}:"); foreach (var animal in db.GetTable <Animal>()) { error.AppendLine($"{animal.Name} is {animal.Color}"); } Assert.Fail(error.ToString()); } } } }