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

Unified Diff: third_party/sqlite/sqlite-src-3080704/test/randexpr1.tcl

Issue 2363173002: [sqlite] Remove obsolete reference version 3.8.7.4. (Closed)
Patch Set: Created 4 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: third_party/sqlite/sqlite-src-3080704/test/randexpr1.tcl
diff --git a/third_party/sqlite/sqlite-src-3080704/test/randexpr1.tcl b/third_party/sqlite/sqlite-src-3080704/test/randexpr1.tcl
deleted file mode 100644
index 37ebf531e8509ebd61fa8498a1ab4f8b0e743977..0000000000000000000000000000000000000000
--- a/third_party/sqlite/sqlite-src-3080704/test/randexpr1.tcl
+++ /dev/null
@@ -1,342 +0,0 @@
-# Run this TCL script to generate thousands of test cases containing
-# complicated expressions.
-#
-# The generated tests are intended to verify expression evaluation
-# in SQLite against expression evaluation TCL.
-#
-
-# Terms of the $intexpr list each contain two sub-terms.
-#
-# * An SQL expression template
-# * The equivalent TCL expression
-#
-# EXPR is replaced by an integer subexpression. BOOL is replaced
-# by a boolean subexpression.
-#
-set intexpr {
- {11 wide(11)}
- {13 wide(13)}
- {17 wide(17)}
- {19 wide(19)}
- {a $a}
- {b $b}
- {c $c}
- {d $d}
- {e $e}
- {f $f}
- {t1.a $a}
- {t1.b $b}
- {t1.c $c}
- {t1.d $d}
- {t1.e $e}
- {t1.f $f}
- {(EXPR) (EXPR)}
- {{ -EXPR} {-EXPR}}
- {+EXPR +EXPR}
- {~EXPR ~EXPR}
- {EXPR+EXPR EXPR+EXPR}
- {EXPR-EXPR EXPR-EXPR}
- {EXPR*EXPR EXPR*EXPR}
- {EXPR+EXPR EXPR+EXPR}
- {EXPR-EXPR EXPR-EXPR}
- {EXPR*EXPR EXPR*EXPR}
- {EXPR+EXPR EXPR+EXPR}
- {EXPR-EXPR EXPR-EXPR}
- {EXPR*EXPR EXPR*EXPR}
- {{EXPR | EXPR} {EXPR | EXPR}}
- {(abs(EXPR)/abs(EXPR)) (abs(EXPR)/abs(EXPR))}
- {
- {case when BOOL then EXPR else EXPR end}
- {((BOOL)?EXPR:EXPR)}
- }
- {
- {case when BOOL then EXPR when BOOL then EXPR else EXPR end}
- {((BOOL)?EXPR:((BOOL)?EXPR:EXPR))}
- }
- {
- {case EXPR when EXPR then EXPR else EXPR end}
- {(((EXPR)==(EXPR))?EXPR:EXPR)}
- }
- {
- {(select AGG from t1)}
- {(AGG)}
- }
- {
- {coalesce((select max(EXPR) from t1 where BOOL),EXPR)}
- {[coalesce_subquery [expr {EXPR}] [expr {BOOL}] [expr {EXPR}]]}
- }
- {
- {coalesce((select EXPR from t1 where BOOL),EXPR)}
- {[coalesce_subquery [expr {EXPR}] [expr {BOOL}] [expr {EXPR}]]}
- }
-}
-
-# The $boolexpr list contains terms that show both an SQL boolean
-# expression and its equivalent TCL.
-#
-set boolexpr {
- {EXPR=EXPR ((EXPR)==(EXPR))}
- {EXPR<EXPR ((EXPR)<(EXPR))}
- {EXPR>EXPR ((EXPR)>(EXPR))}
- {EXPR<=EXPR ((EXPR)<=(EXPR))}
- {EXPR>=EXPR ((EXPR)>=(EXPR))}
- {EXPR<>EXPR ((EXPR)!=(EXPR))}
- {
- {EXPR between EXPR and EXPR}
- {[betweenop [expr {EXPR}] [expr {EXPR}] [expr {EXPR}]]}
- }
- {
- {EXPR not between EXPR and EXPR}
- {(![betweenop [expr {EXPR}] [expr {EXPR}] [expr {EXPR}]])}
- }
- {
- {EXPR in (EXPR,EXPR,EXPR)}
- {([inop [expr {EXPR}] [expr {EXPR}] [expr {EXPR}] [expr {EXPR}]])}
- }
- {
- {EXPR not in (EXPR,EXPR,EXPR)}
- {(![inop [expr {EXPR}] [expr {EXPR}] [expr {EXPR}] [expr {EXPR}]])}
- }
- {
- {EXPR in (select EXPR from t1 union select EXPR from t1)}
- {[inop [expr {EXPR}] [expr {EXPR}] [expr {EXPR}]]}
- }
- {
- {EXPR in (select AGG from t1 union select AGG from t1)}
- {[inop [expr {EXPR}] [expr {AGG}] [expr {AGG}]]}
- }
- {
- {exists(select 1 from t1 where BOOL)}
- {(BOOL)}
- }
- {
- {not exists(select 1 from t1 where BOOL)}
- {!(BOOL)}
- }
- {{not BOOL} !BOOL}
- {{BOOL and BOOL} {BOOL tcland BOOL}}
- {{BOOL or BOOL} {BOOL || BOOL}}
- {{BOOL and BOOL} {BOOL tcland BOOL}}
- {{BOOL or BOOL} {BOOL || BOOL}}
- {(BOOL) (BOOL)}
- {(BOOL) (BOOL)}
-}
-
-# Aggregate expressions
-#
-set aggexpr {
- {count(*) wide(1)}
- {{count(distinct EXPR)} {[one {EXPR}]}}
- {{cast(avg(EXPR) AS integer)} (EXPR)}
- {min(EXPR) (EXPR)}
- {max(EXPR) (EXPR)}
- {(AGG) (AGG)}
- {{ -AGG} {-AGG}}
- {+AGG +AGG}
- {~AGG ~AGG}
- {abs(AGG) abs(AGG)}
- {AGG+AGG AGG+AGG}
- {AGG-AGG AGG-AGG}
- {AGG*AGG AGG*AGG}
- {{AGG | AGG} {AGG | AGG}}
- {
- {case AGG when AGG then AGG else AGG end}
- {(((AGG)==(AGG))?AGG:AGG)}
- }
-}
-
-# Convert a string containing EXPR, AGG, and BOOL into a string
-# that contains nothing but X, Y, and Z.
-#
-proc extract_vars {a} {
- regsub -all {EXPR} $a X a
- regsub -all {AGG} $a Y a
- regsub -all {BOOL} $a Z a
- regsub -all {[^XYZ]} $a {} a
- return $a
-}
-
-
-# Test all templates to make sure the number of EXPR, AGG, and BOOL
-# expressions match.
-#
-foreach term [concat $aggexpr $intexpr $boolexpr] {
- foreach {a b} $term break
- if {[extract_vars $a]!=[extract_vars $b]} {
- error "mismatch: $term"
- }
-}
-
-# Generate a random expression according to the templates given above.
-# If the argument is EXPR or omitted, then an integer expression is
-# generated. If the argument is BOOL then a boolean expression is
-# produced.
-#
-proc generate_expr {{e EXPR}} {
- set tcle $e
- set ne [llength $::intexpr]
- set nb [llength $::boolexpr]
- set na [llength $::aggexpr]
- set div 2
- set mx 50
- set i 0
- while {1} {
- set cnt 0
- set re [lindex $::intexpr [expr {int(rand()*$ne)}]]
- incr cnt [regsub {EXPR} $e [lindex $re 0] e]
- regsub {EXPR} $tcle [lindex $re 1] tcle
- set rb [lindex $::boolexpr [expr {int(rand()*$nb)}]]
- incr cnt [regsub {BOOL} $e [lindex $rb 0] e]
- regsub {BOOL} $tcle [lindex $rb 1] tcle
- set ra [lindex $::aggexpr [expr {int(rand()*$na)}]]
- incr cnt [regsub {AGG} $e [lindex $ra 0] e]
- regsub {AGG} $tcle [lindex $ra 1] tcle
-
- if {$cnt==0} break
- incr i $cnt
-
- set v1 [extract_vars $e]
- if {$v1!=[extract_vars $tcle]} {
- exit
- }
-
- if {$i+[string length $v1]>=$mx} {
- set ne [expr {$ne/$div}]
- set nb [expr {$nb/$div}]
- set na [expr {$na/$div}]
- set div 1
- set mx [expr {$mx*1000}]
- }
- }
- regsub -all { tcland } $tcle { \&\& } tcle
- return [list $e $tcle]
-}
-
-# Implementation of routines used to implement the IN and BETWEEN
-# operators.
-proc inop {lhs args} {
- foreach a $args {
- if {$a==$lhs} {return 1}
- }
- return 0
-}
-proc betweenop {lhs first second} {
- return [expr {$lhs>=$first && $lhs<=$second}]
-}
-proc coalesce_subquery {a b e} {
- if {$b} {
- return $a
- } else {
- return $e
- }
-}
-proc one {args} {
- return 1
-}
-
-# Begin generating the test script:
-#
-puts {# 2008 December 16
-#
-# 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.
-#
-#***********************************************************************
-# This file implements regression tests for SQLite library.
-#
-# This file tests randomly generated SQL expressions. The expressions
-# are generated by a TCL script. The same TCL script also computes the
-# correct value of the expression. So, from one point of view, this
-# file verifies the expression evaluation logic of SQLite against the
-# expression evaluation logic of TCL.
-#
-# An early version of this script is how bug #3541 was detected.
-#
-# $Id: randexpr1.tcl,v 1.1 2008/12/15 16:33:30 drh Exp $
-set testdir [file dirname $argv0]
-source $testdir/tester.tcl
-
-# Create test data
-#
-do_test randexpr1-1.1 {
- db eval {
- CREATE TABLE t1(a,b,c,d,e,f);
- INSERT INTO t1 VALUES(100,200,300,400,500,600);
- SELECT * FROM t1
- }
-} {100 200 300 400 500 600}
-}
-
-# Test data for TCL evaluation.
-#
-set a [expr {wide(100)}]
-set b [expr {wide(200)}]
-set c [expr {wide(300)}]
-set d [expr {wide(400)}]
-set e [expr {wide(500)}]
-set f [expr {wide(600)}]
-
-# A procedure to generate a test case.
-#
-set tn 0
-proc make_test_case {sql result} {
- global tn
- incr tn
- puts "do_test randexpr-2.$tn {\n db eval {$sql}\n} {$result}"
-}
-
-# Generate many random test cases.
-#
-expr srand(0)
-for {set i 0} {$i<1000} {incr i} {
- while {1} {
- foreach {sqle tcle} [generate_expr EXPR] break;
- if {[catch {expr $tcle} ans]} {
- #puts stderr [list $tcle]
- #puts stderr ans=$ans
- if {![regexp {divide by zero} $ans]} exit
- continue
- }
- set len [string length $sqle]
- if {$len<100 || $len>2000} continue
- if {[info exists seen($sqle)]} continue
- set seen($sqle) 1
- break
- }
- while {1} {
- foreach {sqlb tclb} [generate_expr BOOL] break;
- if {[catch {expr $tclb} bans]} {
- #puts stderr [list $tclb]
- #puts stderr bans=$bans
- if {![regexp {divide by zero} $bans]} exit
- continue
- }
- break
- }
- if {$bans} {
- make_test_case "SELECT $sqle FROM t1 WHERE $sqlb" $ans
- make_test_case "SELECT $sqle FROM t1 WHERE NOT ($sqlb)" {}
- } else {
- make_test_case "SELECT $sqle FROM t1 WHERE $sqlb" {}
- make_test_case "SELECT $sqle FROM t1 WHERE NOT ($sqlb)" $ans
- }
- if {[regexp { \| } $sqle]} {
- regsub -all { \| } $sqle { \& } sqle
- regsub -all { \| } $tcle { \& } tcle
- if {[catch {expr $tcle} ans]==0} {
- if {$bans} {
- make_test_case "SELECT $sqle FROM t1 WHERE $sqlb" $ans
- } else {
- make_test_case "SELECT $sqle FROM t1 WHERE NOT ($sqlb)" $ans
- }
- }
- }
-}
-
-# Terminate the test script
-#
-puts {finish_test}
« no previous file with comments | « third_party/sqlite/sqlite-src-3080704/test/quote.test ('k') | third_party/sqlite/sqlite-src-3080704/test/rdonly.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698