Index: third_party/sqlite/sqlite-src-3080704/test/incrblob4.test |
diff --git a/third_party/sqlite/sqlite-src-3080704/test/incrblob4.test b/third_party/sqlite/sqlite-src-3080704/test/incrblob4.test |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a92e373536b9d4f43efb76a7cd7443c2fd45a300 |
--- /dev/null |
+++ b/third_party/sqlite/sqlite-src-3080704/test/incrblob4.test |
@@ -0,0 +1,89 @@ |
+# 2012 March 23 |
+# |
+# The author disclaims copyright to this source code. In place of |
+# a legal notice, here is a blessing: |
+# |
+# May you do good and not evil. |
+# May you find forgiveness for yourself and forgive others. |
+# May you share freely, never taking more than you give. |
+# |
+#*********************************************************************** |
+# |
+# |
+set testdir [file dirname $argv0] |
+source $testdir/tester.tcl |
+ifcapable {!incrblob} { finish_test ; return } |
+set testprefix incrblob4 |
+ |
+proc create_t1 {} { |
+ execsql { |
+ PRAGMA page_size = 1024; |
+ CREATE TABLE t1(k INTEGER PRIMARY KEY, v); |
+ } |
+} |
+ |
+proc populate_t1 {} { |
+ set data [list a b c d e f g h i j k l m n o p q r s t u v w x y z] |
+ foreach d $data { |
+ set blob [string repeat $d 900] |
+ execsql { INSERT INTO t1(v) VALUES($blob) } |
+ } |
+} |
+ |
+ |
+do_test 1.1 { |
+ create_t1 |
+ populate_t1 |
+} {} |
+ |
+do_test 1.2 { |
+ set blob [db incrblob t1 v 5] |
+ read $blob 10 |
+} {eeeeeeeeee} |
+ |
+do_test 1.3 { |
+ execsql { DELETE FROM t1 } |
+ populate_t1 |
+} {} |
+ |
+ |
+ |
+do_test 2.1 { |
+ reset_db |
+ create_t1 |
+ populate_t1 |
+} {} |
+ |
+do_test 2.2 { |
+ set blob [db incrblob t1 v 10] |
+ read $blob 10 |
+} {jjjjjjjjjj} |
+ |
+do_test 2.3 { |
+ set new [string repeat % 900] |
+ execsql { DELETE FROM t1 WHERE k=10 } |
+ execsql { DELETE FROM t1 WHERE k=9 } |
+ execsql { INSERT INTO t1(v) VALUES($new) } |
+} {} |
+ |
+ |
+ |
+do_test 3.1 { |
+ reset_db |
+ create_t1 |
+ populate_t1 |
+} {} |
+ |
+do_test 3.2 { |
+ set blob [db incrblob t1 v 20] |
+ read $blob 10 |
+} {tttttttttt} |
+ |
+do_test 3.3 { |
+ set new [string repeat % 900] |
+ execsql { UPDATE t1 SET v = $new WHERE k = 20 } |
+ execsql { DELETE FROM t1 WHERE k=19 } |
+ execsql { INSERT INTO t1(v) VALUES($new) } |
+} {} |
+ |
+finish_test |