/ Hex Artifact Content
Login

Artifact 1f514623a568ebd351d0f1fe30c8f273681c1396:


0000: 23 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20  # Copyright (c) 
0010: 31 39 39 39 2c 20 32 30 30 30 20 44 2e 20 52 69  1999, 2000 D. Ri
0020: 63 68 61 72 64 20 48 69 70 70 0a 23 0a 23 20 54  chard Hipp.#.# T
0030: 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66  his program is f
0040: 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f  ree software; yo
0050: 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75  u can redistribu
0060: 74 65 20 69 74 20 61 6e 64 2f 6f 72 0a 23 20 6d  te it and/or.# m
0070: 6f 64 69 66 79 20 69 74 20 75 6e 64 65 72 20 74  odify it under t
0080: 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20  he terms of the 
0090: 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c  GNU General Publ
00a0: 69 63 0a 23 20 4c 69 63 65 6e 73 65 20 61 73 20  ic.# License as 
00b0: 70 75 62 6c 69 73 68 65 64 20 62 79 20 74 68 65  published by the
00c0: 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46   Free Software F
00d0: 6f 75 6e 64 61 74 69 6f 6e 3b 20 65 69 74 68 65  oundation; eithe
00e0: 72 0a 23 20 76 65 72 73 69 6f 6e 20 32 20 6f 66  r.# version 2 of
00f0: 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72   the License, or
0100: 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e   (at your option
0110: 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73  ) any later vers
0120: 69 6f 6e 2e 0a 23 0a 23 20 54 68 69 73 20 70 72  ion..#.# This pr
0130: 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62  ogram is distrib
0140: 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65  uted in the hope
0150: 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65   that it will be
0160: 20 75 73 65 66 75 6c 2c 0a 23 20 62 75 74 20 57   useful,.# but W
0170: 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41  ITHOUT ANY WARRA
0180: 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76 65  NTY; without eve
0190: 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61  n the implied wa
01a0: 72 72 61 6e 74 79 20 6f 66 0a 23 20 4d 45 52 43  rranty of.# MERC
01b0: 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46  HANTABILITY or F
01c0: 49 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52  ITNESS FOR A PAR
01d0: 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e  TICULAR PURPOSE.
01e0: 20 20 53 65 65 20 74 68 65 20 47 4e 55 0a 23 20    See the GNU.# 
01f0: 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c  General Public L
0200: 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20  icense for more 
0210: 64 65 74 61 69 6c 73 2e 0a 23 20 0a 23 20 59 6f  details..# .# Yo
0220: 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65  u should have re
0230: 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66  ceived a copy of
0240: 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c   the GNU General
0250: 20 50 75 62 6c 69 63 0a 23 20 4c 69 63 65 6e 73   Public.# Licens
0260: 65 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69  e along with thi
0270: 73 20 6c 69 62 72 61 72 79 3b 20 69 66 20 6e 6f  s library; if no
0280: 74 2c 20 77 72 69 74 65 20 74 6f 20 74 68 65 0a  t, write to the.
0290: 23 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20  # Free Software 
02a0: 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 49 6e 63 2e  Foundation, Inc.
02b0: 2c 20 35 39 20 54 65 6d 70 6c 65 20 50 6c 61 63  , 59 Temple Plac
02c0: 65 20 2d 20 53 75 69 74 65 20 33 33 30 2c 0a 23  e - Suite 330,.#
02d0: 20 42 6f 73 74 6f 6e 2c 20 4d 41 20 20 30 32 31   Boston, MA  021
02e0: 31 31 2d 31 33 30 37 2c 20 55 53 41 2e 0a 23 0a  11-1307, USA..#.
02f0: 23 20 41 75 74 68 6f 72 20 63 6f 6e 74 61 63 74  # Author contact
0300: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 3a 0a 23 20   information:.# 
0310: 20 20 64 72 68 40 68 77 61 63 69 2e 63 6f 6d 0a    drh@hwaci.com.
0320: 23 20 20 20 68 74 74 70 3a 2f 2f 77 77 77 2e 68  #   http://www.h
0330: 77 61 63 69 2e 63 6f 6d 2f 64 72 68 2f 0a 23 0a  waci.com/drh/.#.
0340: 23 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  #***************
0350: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0360: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0370: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0380: 2a 2a 2a 2a 2a 2a 2a 2a 0a 23 20 54 68 69 73 20  ********.# This 
0390: 66 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20  file implements 
03a0: 72 65 67 72 65 73 73 69 6f 6e 20 74 65 73 74 73  regression tests
03b0: 20 66 6f 72 20 53 51 4c 69 74 65 20 6c 69 62 72   for SQLite libr
03c0: 61 72 79 2e 20 20 54 68 65 0a 23 20 66 6f 63 75  ary.  The.# focu
03d0: 73 20 6f 66 20 74 68 69 73 20 66 69 6c 65 20 69  s of this file i
03e0: 73 20 74 65 73 74 69 6e 67 20 65 78 70 72 65 73  s testing expres
03f0: 73 69 6f 6e 73 2e 0a 23 0a 23 20 24 49 64 3a 20  sions..#.# $Id: 
0400: 65 78 70 72 2e 74 65 73 74 2c 76 20 31 2e 32 20  expr.test,v 1.2 
0410: 32 30 30 30 2f 30 35 2f 33 31 20 31 37 3a 35 39  2000/05/31 17:59
0420: 3a 32 36 20 64 72 68 20 45 78 70 20 24 0a 0a 73  :26 drh Exp $..s
0430: 65 74 20 74 65 73 74 64 69 72 20 5b 66 69 6c 65  et testdir [file
0440: 20 64 69 72 6e 61 6d 65 20 24 61 72 67 76 30 5d   dirname $argv0]
0450: 0a 73 6f 75 72 63 65 20 24 74 65 73 74 64 69 72  .source $testdir
0460: 2f 74 65 73 74 65 72 2e 74 63 6c 0a 0a 23 20 43  /tester.tcl..# C
0470: 72 65 61 74 65 20 61 20 74 61 62 6c 65 20 74 6f  reate a table to
0480: 20 77 6f 72 6b 20 77 69 74 68 2e 0a 23 0a 65 78   work with..#.ex
0490: 65 63 73 71 6c 20 7b 43 52 45 41 54 45 20 54 41  ecsql {CREATE TA
04a0: 42 4c 45 20 74 65 73 74 31 28 69 31 20 69 6e 74  BLE test1(i1 int
04b0: 2c 20 69 32 20 69 6e 74 2c 20 72 31 20 72 65 61  , i2 int, r1 rea
04c0: 6c 2c 20 72 32 20 72 65 61 6c 2c 20 74 31 20 74  l, r2 real, t1 t
04d0: 65 78 74 2c 20 74 32 20 74 65 78 74 29 7d 0a 65  ext, t2 text)}.e
04e0: 78 65 63 73 71 6c 20 7b 49 4e 53 45 52 54 20 49  xecsql {INSERT I
04f0: 4e 54 4f 20 74 65 73 74 31 20 56 41 4c 55 45 53  NTO test1 VALUES
0500: 28 31 2c 32 2c 31 2e 31 2c 32 2e 32 2c 27 68 65  (1,2,1.1,2.2,'he
0510: 6c 6c 6f 27 2c 27 77 6f 72 6c 64 27 29 7d 0a 70  llo','world')}.p
0520: 72 6f 63 20 74 65 73 74 5f 65 78 70 72 20 7b 6e  roc test_expr {n
0530: 61 6d 65 20 73 65 74 74 69 6e 67 73 20 65 78 70  ame settings exp
0540: 72 20 72 65 73 75 6c 74 7d 20 7b 0a 20 20 64 6f  r result} {.  do
0550: 5f 74 65 73 74 20 24 6e 61 6d 65 20 5b 66 6f 72  _test $name [for
0560: 6d 61 74 20 7b 0a 20 20 20 20 65 78 65 63 73 71  mat {.    execsq
0570: 6c 20 7b 55 50 44 41 54 45 20 74 65 73 74 31 20  l {UPDATE test1 
0580: 53 45 54 20 25 73 7d 0a 20 20 20 20 65 78 65 63  SET %s}.    exec
0590: 73 71 6c 20 7b 53 45 4c 45 43 54 20 25 73 20 46  sql {SELECT %s F
05a0: 52 4f 4d 20 74 65 73 74 31 7d 0a 20 20 7d 20 24  ROM test1}.  } $
05b0: 73 65 74 74 69 6e 67 73 20 24 65 78 70 72 5d 20  settings $expr] 
05c0: 24 72 65 73 75 6c 74 0a 7d 0a 0a 74 65 73 74 5f  $result.}..test_
05d0: 65 78 70 72 20 65 78 70 72 2d 31 2e 31 20 7b 69  expr expr-1.1 {i
05e0: 31 3d 31 30 2c 20 69 32 3d 32 30 7d 20 7b 69 31  1=10, i2=20} {i1
05f0: 2b 69 32 7d 20 33 30 0a 74 65 73 74 5f 65 78 70  +i2} 30.test_exp
0600: 72 20 65 78 70 72 2d 31 2e 32 20 7b 69 31 3d 31  r expr-1.2 {i1=1
0610: 30 2c 20 69 32 3d 32 30 7d 20 7b 69 31 2d 69 32  0, i2=20} {i1-i2
0620: 7d 20 2d 31 30 0a 74 65 73 74 5f 65 78 70 72 20  } -10.test_expr 
0630: 65 78 70 72 2d 31 2e 33 20 7b 69 31 3d 31 30 2c  expr-1.3 {i1=10,
0640: 20 69 32 3d 32 30 7d 20 7b 69 31 2a 69 32 7d 20   i2=20} {i1*i2} 
0650: 32 30 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78  200.test_expr ex
0660: 70 72 2d 31 2e 34 20 7b 69 31 3d 31 30 2c 20 69  pr-1.4 {i1=10, i
0670: 32 3d 32 30 7d 20 7b 69 31 2f 69 32 7d 20 30 2e  2=20} {i1/i2} 0.
0680: 35 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  5.test_expr expr
0690: 2d 31 2e 35 20 7b 69 31 3d 31 30 2c 20 69 32 3d  -1.5 {i1=10, i2=
06a0: 32 30 7d 20 7b 69 32 2f 69 31 7d 20 32 0a 74 65  20} {i2/i1} 2.te
06b0: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 36  st_expr expr-1.6
06c0: 20 7b 69 31 3d 31 30 2c 20 69 32 3d 32 30 7d 20   {i1=10, i2=20} 
06d0: 7b 69 32 3c 69 31 7d 20 30 0a 74 65 73 74 5f 65  {i2<i1} 0.test_e
06e0: 78 70 72 20 65 78 70 72 2d 31 2e 37 20 7b 69 31  xpr expr-1.7 {i1
06f0: 3d 31 30 2c 20 69 32 3d 32 30 7d 20 7b 69 32 3c  =10, i2=20} {i2<
0700: 3d 69 31 7d 20 30 0a 74 65 73 74 5f 65 78 70 72  =i1} 0.test_expr
0710: 20 65 78 70 72 2d 31 2e 38 20 7b 69 31 3d 31 30   expr-1.8 {i1=10
0720: 2c 20 69 32 3d 32 30 7d 20 7b 69 32 3e 69 31 7d  , i2=20} {i2>i1}
0730: 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   1.test_expr exp
0740: 72 2d 31 2e 39 20 7b 69 31 3d 31 30 2c 20 69 32  r-1.9 {i1=10, i2
0750: 3d 32 30 7d 20 7b 69 32 3e 3d 69 31 7d 20 31 0a  =20} {i2>=i1} 1.
0760: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31  test_expr expr-1
0770: 2e 31 30 20 7b 69 31 3d 31 30 2c 20 69 32 3d 32  .10 {i1=10, i2=2
0780: 30 7d 20 7b 69 32 21 3d 69 31 7d 20 31 0a 74 65  0} {i2!=i1} 1.te
0790: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 31  st_expr expr-1.1
07a0: 31 20 7b 69 31 3d 31 30 2c 20 69 32 3d 32 30 7d  1 {i1=10, i2=20}
07b0: 20 7b 69 32 3d 69 31 7d 20 30 0a 74 65 73 74 5f   {i2=i1} 0.test_
07c0: 65 78 70 72 20 65 78 70 72 2d 31 2e 31 32 20 7b  expr expr-1.12 {
07d0: 69 31 3d 31 30 2c 20 69 32 3d 32 30 7d 20 7b 69  i1=10, i2=20} {i
07e0: 32 3c 3e 69 31 7d 20 31 0a 74 65 73 74 5f 65 78  2<>i1} 1.test_ex
07f0: 70 72 20 65 78 70 72 2d 31 2e 31 33 20 7b 69 31  pr expr-1.13 {i1
0800: 3d 31 30 2c 20 69 32 3d 32 30 7d 20 7b 69 32 3d  =10, i2=20} {i2=
0810: 3d 69 31 7d 20 30 0a 74 65 73 74 5f 65 78 70 72  =i1} 0.test_expr
0820: 20 65 78 70 72 2d 31 2e 31 34 20 7b 69 31 3d 32   expr-1.14 {i1=2
0830: 30 2c 20 69 32 3d 32 30 7d 20 7b 69 32 3c 69 31  0, i2=20} {i2<i1
0840: 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 0.test_expr ex
0850: 70 72 2d 31 2e 31 35 20 7b 69 31 3d 32 30 2c 20  pr-1.15 {i1=20, 
0860: 69 32 3d 32 30 7d 20 7b 69 32 3c 3d 69 31 7d 20  i2=20} {i2<=i1} 
0870: 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  1.test_expr expr
0880: 2d 31 2e 31 36 20 7b 69 31 3d 32 30 2c 20 69 32  -1.16 {i1=20, i2
0890: 3d 32 30 7d 20 7b 69 32 3e 69 31 7d 20 30 0a 74  =20} {i2>i1} 0.t
08a0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e  est_expr expr-1.
08b0: 31 37 20 7b 69 31 3d 32 30 2c 20 69 32 3d 32 30  17 {i1=20, i2=20
08c0: 7d 20 7b 69 32 3e 3d 69 31 7d 20 31 0a 74 65 73  } {i2>=i1} 1.tes
08d0: 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 31 38  t_expr expr-1.18
08e0: 20 7b 69 31 3d 32 30 2c 20 69 32 3d 32 30 7d 20   {i1=20, i2=20} 
08f0: 7b 69 32 21 3d 69 31 7d 20 30 0a 74 65 73 74 5f  {i2!=i1} 0.test_
0900: 65 78 70 72 20 65 78 70 72 2d 31 2e 31 39 20 7b  expr expr-1.19 {
0910: 69 31 3d 32 30 2c 20 69 32 3d 32 30 7d 20 7b 69  i1=20, i2=20} {i
0920: 32 3d 69 31 7d 20 31 0a 74 65 73 74 5f 65 78 70  2=i1} 1.test_exp
0930: 72 20 65 78 70 72 2d 31 2e 32 30 20 7b 69 31 3d  r expr-1.20 {i1=
0940: 32 30 2c 20 69 32 3d 32 30 7d 20 7b 69 32 3c 3e  20, i2=20} {i2<>
0950: 69 31 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20  i1} 0.test_expr 
0960: 65 78 70 72 2d 31 2e 32 31 20 7b 69 31 3d 32 30  expr-1.21 {i1=20
0970: 2c 20 69 32 3d 32 30 7d 20 7b 69 32 3d 3d 69 31  , i2=20} {i2==i1
0980: 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 1.test_expr ex
0990: 70 72 2d 31 2e 32 32 20 7b 69 31 3d 31 2c 20 69  pr-1.22 {i1=1, i
09a0: 32 3d 32 2c 20 72 31 3d 33 2e 30 7d 20 7b 69 31  2=2, r1=3.0} {i1
09b0: 2b 69 32 2a 72 31 7d 20 7b 37 7d 0a 74 65 73 74  +i2*r1} {7}.test
09c0: 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 32 33 20  _expr expr-1.23 
09d0: 7b 69 31 3d 31 2c 20 69 32 3d 32 2c 20 72 31 3d  {i1=1, i2=2, r1=
09e0: 33 2e 30 7d 20 7b 28 69 31 2b 69 32 29 2a 72 31  3.0} {(i1+i2)*r1
09f0: 7d 20 7b 39 7d 0a 74 65 73 74 5f 65 78 70 72 20  } {9}.test_expr 
0a00: 65 78 70 72 2d 31 2e 32 34 20 7b 69 31 3d 31 2c  expr-1.24 {i1=1,
0a10: 20 69 32 3d 32 7d 20 7b 6d 69 6e 28 69 31 2c 69   i2=2} {min(i1,i
0a20: 32 2c 69 31 2b 69 32 2c 69 31 2d 69 32 29 7d 20  2,i1+i2,i1-i2)} 
0a30: 7b 2d 31 7d 0a 74 65 73 74 5f 65 78 70 72 20 65  {-1}.test_expr e
0a40: 78 70 72 2d 31 2e 32 35 20 7b 69 31 3d 31 2c 20  xpr-1.25 {i1=1, 
0a50: 69 32 3d 32 7d 20 7b 6d 61 78 28 69 31 2c 69 32  i2=2} {max(i1,i2
0a60: 2c 69 31 2b 69 32 2c 69 31 2d 69 32 29 7d 20 7b  ,i1+i2,i1-i2)} {
0a70: 33 7d 0a 0a 0a 74 65 73 74 5f 65 78 70 72 20 65  3}...test_expr e
0a80: 78 70 72 2d 32 2e 31 20 7b 72 31 3d 31 2e 32 33  xpr-2.1 {r1=1.23
0a90: 2c 20 72 32 3d 32 2e 33 34 7d 20 7b 72 31 2b 72  , r2=2.34} {r1+r
0aa0: 32 7d 20 33 2e 35 37 0a 74 65 73 74 5f 65 78 70  2} 3.57.test_exp
0ab0: 72 20 65 78 70 72 2d 32 2e 32 20 7b 72 31 3d 31  r expr-2.2 {r1=1
0ac0: 2e 32 33 2c 20 72 32 3d 32 2e 33 34 7d 20 7b 72  .23, r2=2.34} {r
0ad0: 31 2d 72 32 7d 20 2d 31 2e 31 31 0a 74 65 73 74  1-r2} -1.11.test
0ae0: 5f 65 78 70 72 20 65 78 70 72 2d 32 2e 33 20 7b  _expr expr-2.3 {
0af0: 72 31 3d 31 2e 32 33 2c 20 72 32 3d 32 2e 33 34  r1=1.23, r2=2.34
0b00: 7d 20 7b 72 31 2a 72 32 7d 20 32 2e 38 37 38 32  } {r1*r2} 2.8782
0b10: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
0b20: 32 2e 34 20 7b 72 31 3d 31 2e 32 33 2c 20 72 32  2.4 {r1=1.23, r2
0b30: 3d 32 2e 33 34 7d 20 7b 72 31 2f 72 32 7d 20 30  =2.34} {r1/r2} 0
0b40: 2e 35 32 35 36 34 31 0a 74 65 73 74 5f 65 78 70  .525641.test_exp
0b50: 72 20 65 78 70 72 2d 32 2e 35 20 7b 72 31 3d 31  r expr-2.5 {r1=1
0b60: 2e 32 33 2c 20 72 32 3d 32 2e 33 34 7d 20 7b 72  .23, r2=2.34} {r
0b70: 32 2f 72 31 7d 20 31 2e 39 30 32 34 34 0a 74 65  2/r1} 1.90244.te
0b80: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e 36  st_expr expr-2.6
0b90: 20 7b 72 31 3d 31 2e 32 33 2c 20 72 32 3d 32 2e   {r1=1.23, r2=2.
0ba0: 33 34 7d 20 7b 72 32 3c 72 31 7d 20 30 0a 74 65  34} {r2<r1} 0.te
0bb0: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e 37  st_expr expr-2.7
0bc0: 20 7b 72 31 3d 31 2e 32 33 2c 20 72 32 3d 32 2e   {r1=1.23, r2=2.
0bd0: 33 34 7d 20 7b 72 32 3c 3d 72 31 7d 20 30 0a 74  34} {r2<=r1} 0.t
0be0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e  est_expr expr-2.
0bf0: 38 20 7b 72 31 3d 31 2e 32 33 2c 20 72 32 3d 32  8 {r1=1.23, r2=2
0c00: 2e 33 34 7d 20 7b 72 32 3e 72 31 7d 20 31 0a 74  .34} {r2>r1} 1.t
0c10: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e  est_expr expr-2.
0c20: 39 20 7b 72 31 3d 31 2e 32 33 2c 20 72 32 3d 32  9 {r1=1.23, r2=2
0c30: 2e 33 34 7d 20 7b 72 32 3e 3d 72 31 7d 20 31 0a  .34} {r2>=r1} 1.
0c40: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32  test_expr expr-2
0c50: 2e 31 30 20 7b 72 31 3d 31 2e 32 33 2c 20 72 32  .10 {r1=1.23, r2
0c60: 3d 32 2e 33 34 7d 20 7b 72 32 21 3d 72 31 7d 20  =2.34} {r2!=r1} 
0c70: 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  1.test_expr expr
0c80: 2d 32 2e 31 31 20 7b 72 31 3d 31 2e 32 33 2c 20  -2.11 {r1=1.23, 
0c90: 72 32 3d 32 2e 33 34 7d 20 7b 72 32 3d 72 31 7d  r2=2.34} {r2=r1}
0ca0: 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   0.test_expr exp
0cb0: 72 2d 32 2e 31 32 20 7b 72 31 3d 31 2e 32 33 2c  r-2.12 {r1=1.23,
0cc0: 20 72 32 3d 32 2e 33 34 7d 20 7b 72 32 3c 3e 72   r2=2.34} {r2<>r
0cd0: 31 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65  1} 1.test_expr e
0ce0: 78 70 72 2d 32 2e 31 33 20 7b 72 31 3d 31 2e 32  xpr-2.13 {r1=1.2
0cf0: 33 2c 20 72 32 3d 32 2e 33 34 7d 20 7b 72 32 3d  3, r2=2.34} {r2=
0d00: 3d 72 31 7d 20 30 0a 74 65 73 74 5f 65 78 70 72  =r1} 0.test_expr
0d10: 20 65 78 70 72 2d 32 2e 31 34 20 7b 72 31 3d 32   expr-2.14 {r1=2
0d20: 2e 33 34 2c 20 72 32 3d 32 2e 33 34 7d 20 7b 72  .34, r2=2.34} {r
0d30: 32 3c 72 31 7d 20 30 0a 74 65 73 74 5f 65 78 70  2<r1} 0.test_exp
0d40: 72 20 65 78 70 72 2d 32 2e 31 35 20 7b 72 31 3d  r expr-2.15 {r1=
0d50: 32 2e 33 34 2c 20 72 32 3d 32 2e 33 34 7d 20 7b  2.34, r2=2.34} {
0d60: 72 32 3c 3d 72 31 7d 20 31 0a 74 65 73 74 5f 65  r2<=r1} 1.test_e
0d70: 78 70 72 20 65 78 70 72 2d 32 2e 31 36 20 7b 72  xpr expr-2.16 {r
0d80: 31 3d 32 2e 33 34 2c 20 72 32 3d 32 2e 33 34 7d  1=2.34, r2=2.34}
0d90: 20 7b 72 32 3e 72 31 7d 20 30 0a 74 65 73 74 5f   {r2>r1} 0.test_
0da0: 65 78 70 72 20 65 78 70 72 2d 32 2e 31 37 20 7b  expr expr-2.17 {
0db0: 72 31 3d 32 2e 33 34 2c 20 72 32 3d 32 2e 33 34  r1=2.34, r2=2.34
0dc0: 7d 20 7b 72 32 3e 3d 72 31 7d 20 31 0a 74 65 73  } {r2>=r1} 1.tes
0dd0: 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e 31 38  t_expr expr-2.18
0de0: 20 7b 72 31 3d 32 2e 33 34 2c 20 72 32 3d 32 2e   {r1=2.34, r2=2.
0df0: 33 34 7d 20 7b 72 32 21 3d 72 31 7d 20 30 0a 74  34} {r2!=r1} 0.t
0e00: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e  est_expr expr-2.
0e10: 31 39 20 7b 72 31 3d 32 2e 33 34 2c 20 72 32 3d  19 {r1=2.34, r2=
0e20: 32 2e 33 34 7d 20 7b 72 32 3d 72 31 7d 20 31 0a  2.34} {r2=r1} 1.
0e30: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32  test_expr expr-2
0e40: 2e 32 30 20 7b 72 31 3d 32 2e 33 34 2c 20 72 32  .20 {r1=2.34, r2
0e50: 3d 32 2e 33 34 7d 20 7b 72 32 3c 3e 72 31 7d 20  =2.34} {r2<>r1} 
0e60: 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  0.test_expr expr
0e70: 2d 32 2e 32 31 20 7b 72 31 3d 32 2e 33 34 2c 20  -2.21 {r1=2.34, 
0e80: 72 32 3d 32 2e 33 34 7d 20 7b 72 32 3d 3d 72 31  r2=2.34} {r2==r1
0e90: 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 1.test_expr ex
0ea0: 70 72 2d 32 2e 32 32 20 7b 72 31 3d 31 2e 32 33  pr-2.22 {r1=1.23
0eb0: 2c 20 72 32 3d 32 2e 33 34 7d 20 7b 6d 69 6e 28  , r2=2.34} {min(
0ec0: 72 31 2c 72 32 2c 72 31 2b 72 32 2c 72 31 2d 72  r1,r2,r1+r2,r1-r
0ed0: 32 29 7d 20 7b 2d 31 2e 31 31 7d 0a 74 65 73 74  2)} {-1.11}.test
0ee0: 5f 65 78 70 72 20 65 78 70 72 2d 32 2e 32 33 20  _expr expr-2.23 
0ef0: 7b 72 31 3d 31 2e 32 33 2c 20 72 32 3d 32 2e 33  {r1=1.23, r2=2.3
0f00: 34 7d 20 7b 6d 61 78 28 72 31 2c 72 32 2c 72 31  4} {max(r1,r2,r1
0f10: 2b 72 32 2c 72 31 2d 72 32 29 7d 20 7b 33 2e 35  +r2,r1-r2)} {3.5
0f20: 37 7d 0a 0a 66 69 6e 69 73 68 5f 74 65 73 74 0a  7}..finish_test.