示例#1
0
        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]);
                }
        }
示例#2
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());
                }
        }
示例#3
0
        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());
                }
        }
示例#4
0
        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", ""));
                }
        }
示例#5
0
        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());
                    }
        }
示例#6
0
        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());
                            }
                        }
                    }
        }