Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: third_party/sqlite/src/test/fuzzer1.test

Issue 2751253002: [sql] Import SQLite 3.17.0. (Closed)
Patch Set: also clang on Linux i386 Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/sqlite/src/test/fuzzdata5.db ('k') | third_party/sqlite/src/test/fuzzer2.test » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # 2011 March 25 1 # 2011 March 25
2 # 2 #
3 # The author disclaims copyright to this source code. In place of 3 # The author disclaims copyright to this source code. In place of
4 # a legal notice, here is a blessing: 4 # a legal notice, here is a blessing:
5 # 5 #
6 # May you do good and not evil. 6 # May you do good and not evil.
7 # May you find forgiveness for yourself and forgive others. 7 # May you find forgiveness for yourself and forgive others.
8 # May you share freely, never taking more than you give. 8 # May you share freely, never taking more than you give.
9 # 9 #
10 #*********************************************************************** 10 #***********************************************************************
11 # This file implements regression tests for TCL interface to the 11 # This file implements regression tests for TCL interface to the
12 # SQLite library. 12 # SQLite library.
13 # 13 #
14 # The focus of the tests is the word-fuzzer virtual table. 14 # The focus of the tests is the word-fuzzer virtual table.
15 # 15 #
16 16
17 set testdir [file dirname $argv0] 17 set testdir [file dirname $argv0]
18 source $testdir/tester.tcl 18 source $testdir/tester.tcl
19 19
20 ifcapable !vtab { 20 ifcapable !vtab {
21 finish_test 21 finish_test
22 return 22 return
23 } 23 }
24 24
25 set ::testprefix fuzzer1 25 set ::testprefix fuzzer1
26
27 load_static_extension db fuzzer 26 load_static_extension db fuzzer
28 27
29 # Check configuration errors. 28 # Check configuration errors.
30 # 29 #
31 do_catchsql_test fuzzer1-1.1 { 30 do_catchsql_test fuzzer1-1.1 {
32 CREATE VIRTUAL TABLE f USING fuzzer; 31 CREATE VIRTUAL TABLE f USING fuzzer;
33 } {1 {fuzzer: wrong number of CREATE VIRTUAL TABLE arguments}} 32 } {1 {fuzzer: wrong number of CREATE VIRTUAL TABLE arguments}}
34 33
35 do_catchsql_test fuzzer1-1.2 { 34 do_catchsql_test fuzzer1-1.2 {
36 CREATE VIRTUAL TABLE f USING fuzzer(one, two); 35 CREATE VIRTUAL TABLE f USING fuzzer(one, two);
(...skipping 1605 matching lines...) Expand 10 before | Expand all | Expand 10 after
1642 do_execsql_test 5.5.3 { 1641 do_execsql_test 5.5.3 {
1643 DROP TABLE IF EXISTS x; 1642 DROP TABLE IF EXISTS x;
1644 DELETE FROM "fuzzer [x] rules table"; 1643 DELETE FROM "fuzzer [x] rules table";
1645 INSERT INTO "fuzzer [x] rules table" VALUES((1<<32)+100, 'x', 'y', 2); 1644 INSERT INTO "fuzzer [x] rules table" VALUES((1<<32)+100, 'x', 'y', 2);
1646 } 1645 }
1647 do_catchsql_test 5.5.4 { 1646 do_catchsql_test 5.5.4 {
1648 CREATE VIRTUAL TABLE x USING fuzzer('fuzzer [x] rules table'); 1647 CREATE VIRTUAL TABLE x USING fuzzer('fuzzer [x] rules table');
1649 } {1 {fuzzer: ruleset must be between 0 and 2147483647}} 1648 } {1 {fuzzer: ruleset must be between 0 and 2147483647}}
1650 1649
1651 #------------------------------------------------------------------------- 1650 #-------------------------------------------------------------------------
1652 # This test uses a fuzzer table with many rules. There is one rule to
1653 # map each possible two character string, where characters are lower-case
1654 # letters used in the English language, to all other possible two character
1655 # strings. In total, (26^4)-(26^2) mappings (the subtracted term represents
1656 # the no-op mappings discarded automatically by the fuzzer).
1657 #
1658 #
1659 do_execsql_test 6.1.1 {
1660 DROP TABLE IF EXISTS x1;
1661 DROP TABLE IF EXISTS x1_rules;
1662 CREATE TABLE x1_rules(ruleset, cFrom, cTo, cost);
1663 }
1664 puts "This test is slow - perhaps around 7 seconds on an average pc"
1665 do_test 6.1.2 {
1666 set LETTERS {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}
1667 set cost 1
1668 db transaction {
1669 foreach c1 $LETTERS {
1670 foreach c2 $LETTERS {
1671 foreach c3 $LETTERS {
1672 foreach c4 $LETTERS {
1673 db eval {INSERT INTO x1_rules VALUES(0, $c1||$c2, $c3||$c4, $cost)}
1674 set cost [expr ($cost%1000) + 1]
1675 }
1676 }
1677 }
1678 }
1679 db eval {UPDATE x1_rules SET cost = 20 WHERE cost<20 AND cFrom!='xx'}
1680 }
1681 } {}
1682
1683 do_execsql_test 6.2 {
1684 SELECT count(*) FROM x1_rules WHERE cTo!=cFrom;
1685 } [expr 26*26*26*26 - 26*26]
1686
1687 do_execsql_test 6.2.1 {
1688 CREATE VIRTUAL TABLE x1 USING fuzzer(x1_rules);
1689 SELECT word FROM x1 WHERE word MATCH 'xx' LIMIT 10;
1690 } {xx hw hx hy hz ia ib ic id ie}
1691 do_execsql_test 6.2.2 {
1692 SELECT cTo FROM x1_rules WHERE cFrom='xx'
1693 ORDER BY cost asc, rowid asc LIMIT 9;
1694 } {hw hx hy hz ia ib ic id ie}
1695
1696 #-------------------------------------------------------------------------
1697 # Test using different types of quotes with CREATE VIRTUAL TABLE 1651 # Test using different types of quotes with CREATE VIRTUAL TABLE
1698 # arguments. 1652 # arguments.
1699 # 1653 #
1700 do_execsql_test 7.1 { 1654 do_execsql_test 7.1 {
1701 CREATE TABLE [x2 "rules] (a, b, c, d); 1655 CREATE TABLE [x2 "rules] (a, b, c, d);
1702 INSERT INTO [x2 "rules] VALUES(0, 'a', 'b', 5); 1656 INSERT INTO [x2 "rules] VALUES(0, 'a', 'b', 5);
1703 } 1657 }
1704 foreach {tn sql} { 1658 foreach {tn sql} {
1705 1 { CREATE VIRTUAL TABLE x2 USING fuzzer( [x2 "rules] ) } 1659 1 { CREATE VIRTUAL TABLE x2 USING fuzzer( [x2 "rules] ) }
1706 2 { CREATE VIRTUAL TABLE x2 USING fuzzer( "x2 ""rules" ) } 1660 2 { CREATE VIRTUAL TABLE x2 USING fuzzer( "x2 ""rules" ) }
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
1857 } {} 1811 } {}
1858 1812
1859 do_execsql_test 10.3 { 1813 do_execsql_test 10.3 {
1860 INSERT INTO x5_rules VALUES(0, 'a', '0.1.2.3.4.5.6.7.8.9.a', 1); 1814 INSERT INTO x5_rules VALUES(0, 'a', '0.1.2.3.4.5.6.7.8.9.a', 1);
1861 DROP TABLE x5; 1815 DROP TABLE x5;
1862 CREATE VIRTUAL TABLE x5 USING fuzzer(x5_rules); 1816 CREATE VIRTUAL TABLE x5 USING fuzzer(x5_rules);
1863 SELECT length(word) FROM x5 WHERE word MATCH 'a' LIMIT 50; 1817 SELECT length(word) FROM x5 WHERE word MATCH 'a' LIMIT 50;
1864 } {1 21 41 61 81} 1818 } {1 21 41 61 81}
1865 1819
1866 finish_test 1820 finish_test
OLDNEW
« no previous file with comments | « third_party/sqlite/src/test/fuzzdata5.db ('k') | third_party/sqlite/src/test/fuzzer2.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698