예제 #1
0
        public void TestImplicitMappingClass()
        {
            Scheduler.WaitFor(Wrapper.ExecuteSQL("CREATE TEMPORARY TABLE Test (a int, b int)"));

            int rowCount = 100;

            using (var q = Wrapper.BuildQuery("INSERT INTO TEST (a, b) VALUES (?,?)"))
                for (int i = 0; i < rowCount; i++)
                {
                    Scheduler.WaitFor(q.ExecuteNonQuery(i, i * 2));
                }

            using (var q = Wrapper.BuildQuery("SELECT a, b FROM Test"))
                using (var e = q.Execute <ImplicitlyMappedClass>()) {
                    var items = (ImplicitlyMappedClass[])Scheduler.WaitFor(e.GetArray());

                    for (int i = 0; i < rowCount; i++)
                    {
                        Assert.AreEqual(i, items[i].A);
                        Assert.AreEqual(i * 2, items[i].B);
                    }

                    Assert.AreEqual(rowCount, items.Length);
                }
        }
예제 #2
0
        public void TestPropertySerializerSaveAndLoad()
        {
            Scheduler.WaitFor(Wrapper.ExecuteSQL("CREATE TEMPORARY TABLE Data (name TEXT, value VARIANT)"));

            var props      = new ClassWithProperties();
            var serializer = new DatabasePropertySerializer(Wrapper, "Data");

            serializer.Bind(() => props.A);
            serializer.Bind(() => props.B);
            serializer.Bind(() => props.C);
            serializer.Bind(() => props.D);

            var timeA = DateTime.UtcNow;
            var timeB = timeA.AddDays(1);

            props.A = 5;
            props.B = 10;
            props.C = "Test";
            props.D = timeA;

            Scheduler.WaitFor(serializer.Save());

            Assert.AreEqual(
                4,
                Scheduler.WaitFor(Wrapper.ExecuteScalar <long>("SELECT COUNT(value) FROM Data"))
                );

            props.A = props.B = 0;
            props.C = "Baz";
            props.D = timeB;

            Scheduler.WaitFor(serializer.Load());

            Assert.AreEqual(
                5, props.A
                );
            Assert.AreEqual(
                10, props.B
                );
            Assert.AreEqual(
                "Test", props.C
                );
            Assert.AreEqual(
                timeA, props.D
                );
        }
예제 #3
0
        public void TestQueryParameters()
        {
            using (var scheduler = new TaskScheduler())
                using (var wrapper = new ConnectionWrapper(scheduler, Connection)) {
                    scheduler.WaitFor(wrapper.ExecuteSQL("CREATE TEMPORARY TABLE Test (a INTEGER, b VARIANT)"));

                    using (var q = wrapper.BuildQuery("INSERT INTO Test (a, b) VALUES (?, ?)")) {
                        q.Parameters[1].DbType = DbType.Object;
                        Assert.AreEqual(DbType.Object, q.Parameters[1].DbType);
                    }
                }
        }