public void test_result_errors()
        {
            int code = 10;
            delegate_function_scalar errorcode_func =
                (ctx, user_data, args) => raw.sqlite3_result_error_code(ctx, code);

            delegate_function_scalar toobig_func =
                (ctx, user_data, args) => raw.sqlite3_result_error_toobig(ctx);

            delegate_function_scalar nomem_func =
                (ctx, user_data, args) => raw.sqlite3_result_error_nomem(ctx);

            using (sqlite3 db = ugly.open(":memory:"))
            {
                db.create_function("errorcode", 0, null, errorcode_func);
                db.create_function("toobig", 0, null, toobig_func);
                db.create_function("nomem", 0, null, nomem_func);

                try
                {
                    db.exec("select errorcode();");
                    Assert.Fail("expected exception");
                }
                catch (ugly.sqlite3_exception e)
                {
                    Assert.AreEqual(e.errcode, code);
                }

                try
                {
                    db.exec("select toobig();");
                    Assert.Fail("expected exception");
                }
                catch (ugly.sqlite3_exception e)
                {
                    Assert.AreEqual(e.errcode, raw.SQLITE_TOOBIG);
                }

                try
                {
                    db.exec("select nomem();");
                    Assert.Fail("expected exception");
                }
                catch (ugly.sqlite3_exception e)
                {
                    Assert.AreEqual(e.errcode, raw.SQLITE_NOMEM);
                }
            }
        }
Beispiel #2
0
 public void test_makeblob()
 {
     using (sqlite3 db = ugly.open(":memory:"))
     {
         db.create_function("makeblob", 1, null, makeblob);
         byte[] c = db.query_scalar <byte[]>("SELECT makeblob(?);", val);
         Assert.AreEqual(c.Length, val);
     }
 }
Beispiel #3
0
 public void test_concat()
 {
     using (sqlite3 db = ugly.open(":memory:"))
     {
         db.create_function("my_concat", -1, null, concat);
         Assert.AreEqual("foobar", db.query_scalar <string>("SELECT my_concat('foo', 'bar');"));
         Assert.AreEqual("abc", db.query_scalar <string>("SELECT my_concat('a', 'b', 'c');"));
     }
 }
Beispiel #4
0
 public void test_cube()
 {
     using (sqlite3 db = ugly.open(":memory:"))
     {
         db.create_function("cube", 1, null, cube);
         long c = db.query_scalar <long>("SELECT cube(?);", val);
         Assert.AreEqual(c, val * val * val);
     }
 }
Beispiel #5
0
 public void test_len_as_blobs()
 {
     using (sqlite3 db = ugly.open(":memory:"))
     {
         db.create_function("len_as_blobs", -1, null, len_as_blobs);
         Assert.AreEqual(0, db.query_scalar <int>("SELECT len_as_blobs();"));
         Assert.AreEqual(0, db.query_scalar <int>("SELECT len_as_blobs(null);"));
         Assert.IsTrue(8 <= db.query_scalar <int>("SELECT len_as_blobs(1,2,3,4,5,6,7,8);"));
     }
 }
Beispiel #6
0
 public void test_countargs()
 {
     using (sqlite3 db = ugly.open(":memory:"))
     {
         db.create_function("count_args", -1, null, count_args);
         Assert.AreEqual(8, db.query_scalar <int>("SELECT count_args(1,2,3,4,5,6,7,8);"));
         Assert.AreEqual(0, db.query_scalar <int>("SELECT count_args();"));
         Assert.AreEqual(1, db.query_scalar <int>("SELECT count_args(null);"));
     }
 }
Beispiel #7
0
 public void test_scalar_mean_double()
 {
     using (sqlite3 db = ugly.open(":memory:"))
     {
         db.create_function("my_mean", -1, null, mean);
         double d = db.query_scalar <double>("SELECT my_mean(1,2,3,4,5,6,7,8);");
         Assert.IsTrue(d >= (36 / 8));
         Assert.IsTrue(d <= (36 / 8 + 1));
     }
 }
Beispiel #8
0
 public void test_sum_plus_count()
 {
     using (sqlite3 db = ugly.open(":memory:"))
     {
         db.create_function("sum_plus_count", 1, null, sum_plus_count_step, sum_plus_count_final);
         db.exec("CREATE TABLE foo (x int);");
         for (int i = 0; i < 5; i++)
         {
             db.exec("INSERT INTO foo (x) VALUES (?);", i);
         }
         long c = db.query_scalar <long>("SELECT sum_plus_count(x) FROM foo;");
         Assert.AreEqual(c, (0 + 1 + 2 + 3 + 4) + 5);
     }
 }
        public void test_result_zeroblob()
        {
            delegate_function_scalar zeroblob_func =
                (ctx, user_data, args) =>
            {
                int size = raw.sqlite3_value_int(args[0]);
                raw.sqlite3_result_zeroblob(ctx, size);
            };

            using (sqlite3 db = ugly.open(":memory:"))
            {
                db.exec("CREATE TABLE foo (x blob);");
                db.create_function("createblob", 1, null, zeroblob_func);
                db.exec("INSERT INTO foo (x) VALUES(createblob(10));");

                var    rowid = db.last_insert_rowid();
                byte[] blob  = db.query_scalar <byte[]>("SELECT x FROM foo WHERE rowid=" + rowid);
                Assert.AreEqual(blob.Length, 10);
                foreach (var b in blob)
                {
                    Assert.AreEqual(b, 0);
                }
            }
        }