/ Hex Artifact Content
Login
SQLite training in Houston TX on 2019-11-05 (details)
Part of the 2019 Tcl Conference

Artifact 31ac25b4f85fbc7fb507be34c6c0731adbefcf80:


0000: 23 20 32 30 30 31 20 53 65 70 74 65 6d 62 65 72  # 2001 September
0010: 20 31 35 0a 23 0a 23 20 54 68 65 20 61 75 74 68   15.#.# The auth
0020: 6f 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70  or disclaims cop
0030: 79 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73  yright to this s
0040: 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20  ource code.  In 
0050: 70 6c 61 63 65 20 6f 66 0a 23 20 61 20 6c 65 67  place of.# a leg
0060: 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20  al notice, here 
0070: 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23  is a blessing:.#
0080: 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f  .#    May you do
0090: 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76   good and not ev
00a0: 69 6c 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75  il..#    May you
00b0: 20 66 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73   find forgivenes
00c0: 73 20 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61  s for yourself a
00d0: 6e 64 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72  nd forgive other
00e0: 73 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20  s..#    May you 
00f0: 73 68 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65  share freely, ne
0100: 76 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20  ver taking more 
0110: 74 68 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23  than you give..#
0120: 0a 23 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .#**************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 23 20 54 68 69 73  *********.# This
0170: 20 66 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73   file implements
0180: 20 72 65 67 72 65 73 73 69 6f 6e 20 74 65 73 74   regression test
0190: 73 20 66 6f 72 20 53 51 4c 69 74 65 20 6c 69 62  s for SQLite lib
01a0: 72 61 72 79 2e 20 20 54 68 65 0a 23 20 66 6f 63  rary.  The.# foc
01b0: 75 73 20 6f 66 20 74 68 69 73 20 66 69 6c 65 20  us of this file 
01c0: 69 73 20 74 65 73 74 69 6e 67 20 74 68 65 20 73  is testing the s
01d0: 71 6c 69 74 65 5f 2a 5f 70 72 69 6e 74 66 28 29  qlite_*_printf()
01e0: 20 69 6e 74 65 72 66 61 63 65 2e 0a 23 0a 23 20   interface..#.# 
01f0: 24 49 64 3a 20 70 72 69 6e 74 66 2e 74 65 73 74  $Id: printf.test
0200: 2c 76 20 31 2e 39 20 32 30 30 34 2f 30 36 2f 31  ,v 1.9 2004/06/1
0210: 34 20 32 33 3a 34 36 3a 34 38 20 64 61 6e 69 65  4 23:46:48 danie
0220: 6c 6b 31 39 37 37 20 45 78 70 20 24 0a 0a 73 65  lk1977 Exp $..se
0230: 74 20 74 65 73 74 64 69 72 20 5b 66 69 6c 65 20  t testdir [file 
0240: 64 69 72 6e 61 6d 65 20 24 61 72 67 76 30 5d 0a  dirname $argv0].
0250: 73 6f 75 72 63 65 20 24 74 65 73 74 64 69 72 2f  source $testdir/
0260: 74 65 73 74 65 72 2e 74 63 6c 0a 0a 73 65 74 20  tester.tcl..set 
0270: 6e 20 31 0a 66 6f 72 65 61 63 68 20 76 20 7b 31  n 1.foreach v {1
0280: 20 32 20 35 20 31 30 20 39 39 20 31 30 30 20 31   2 5 10 99 100 1
0290: 30 30 30 30 30 30 20 39 39 39 39 39 39 39 39 39  000000 999999999
02a0: 20 30 20 2d 31 20 2d 32 20 2d 35 20 2d 31 30 20   0 -1 -2 -5 -10 
02b0: 2d 39 39 20 2d 31 30 30 20 2d 39 39 39 39 39 39  -99 -100 -999999
02c0: 39 7d 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20 70  9} {.  do_test p
02d0: 72 69 6e 74 66 2d 31 2e 24 6e 2e 31 20 5b 73 75  rintf-1.$n.1 [su
02e0: 62 73 74 20 7b 0a 20 20 20 20 73 71 6c 69 74 65  bst {.    sqlite
02f0: 33 5f 6d 70 72 69 6e 74 66 5f 69 6e 74 20 7b 54  3_mprintf_int {T
0300: 68 72 65 65 20 69 6e 74 65 67 65 72 73 3a 20 25  hree integers: %
0310: 64 20 25 78 20 25 6f 7d 20 24 76 20 24 76 20 24  d %x %o} $v $v $
0320: 76 0a 20 20 7d 5d 20 5b 66 6f 72 6d 61 74 20 7b  v.  }] [format {
0330: 54 68 72 65 65 20 69 6e 74 65 67 65 72 73 3a 20  Three integers: 
0340: 25 64 20 25 6c 78 20 25 6c 6f 7d 20 24 76 20 24  %d %lx %lo} $v $
0350: 76 20 24 76 5d 0a 20 20 64 6f 5f 74 65 73 74 20  v $v].  do_test 
0360: 70 72 69 6e 74 66 2d 31 2e 24 6e 2e 32 20 5b 73  printf-1.$n.2 [s
0370: 75 62 73 74 20 7b 0a 20 20 20 20 73 71 6c 69 74  ubst {.    sqlit
0380: 65 33 5f 6d 70 72 69 6e 74 66 5f 69 6e 74 20 7b  e3_mprintf_int {
0390: 54 68 72 65 65 20 69 6e 74 65 67 65 72 73 3a 20  Three integers: 
03a0: 28 25 36 64 29 20 28 25 36 78 29 20 28 25 36 6f  (%6d) (%6x) (%6o
03b0: 29 7d 20 24 76 20 24 76 20 24 76 0a 20 20 7d 5d  )} $v $v $v.  }]
03c0: 20 5b 66 6f 72 6d 61 74 20 7b 54 68 72 65 65 20   [format {Three 
03d0: 69 6e 74 65 67 65 72 73 3a 20 28 25 36 64 29 20  integers: (%6d) 
03e0: 28 25 36 6c 78 29 20 28 25 36 6c 6f 29 7d 20 24  (%6lx) (%6lo)} $
03f0: 76 20 24 76 20 24 76 5d 0a 20 20 64 6f 5f 74 65  v $v $v].  do_te
0400: 73 74 20 70 72 69 6e 74 66 2d 31 2e 24 6e 2e 33  st printf-1.$n.3
0410: 20 5b 73 75 62 73 74 20 7b 0a 20 20 20 20 73 71   [subst {.    sq
0420: 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 5f 69 6e  lite3_mprintf_in
0430: 74 20 7b 54 68 72 65 65 20 69 6e 74 65 67 65 72  t {Three integer
0440: 73 3a 20 28 25 2d 36 64 29 20 28 25 2d 36 78 29  s: (%-6d) (%-6x)
0450: 20 28 25 2d 36 6f 29 7d 20 24 76 20 24 76 20 24   (%-6o)} $v $v $
0460: 76 0a 20 20 7d 5d 20 5b 66 6f 72 6d 61 74 20 7b  v.  }] [format {
0470: 54 68 72 65 65 20 69 6e 74 65 67 65 72 73 3a 20  Three integers: 
0480: 28 25 2d 36 64 29 20 28 25 2d 36 6c 78 29 20 28  (%-6d) (%-6lx) (
0490: 25 2d 36 6c 6f 29 7d 20 24 76 20 24 76 20 24 76  %-6lo)} $v $v $v
04a0: 5d 0a 20 20 64 6f 5f 74 65 73 74 20 70 72 69 6e  ].  do_test prin
04b0: 74 66 2d 31 2e 24 6e 2e 34 20 5b 73 75 62 73 74  tf-1.$n.4 [subst
04c0: 20 7b 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 6d   {.    sqlite3_m
04d0: 70 72 69 6e 74 66 5f 69 6e 74 20 7b 54 68 72 65  printf_int {Thre
04e0: 65 20 69 6e 74 65 67 65 72 73 3a 20 28 25 2b 36  e integers: (%+6
04f0: 64 29 20 28 25 2b 36 78 29 20 28 25 2b 36 6f 29  d) (%+6x) (%+6o)
0500: 7d 20 24 76 20 24 76 20 24 76 0a 20 20 7d 5d 20  } $v $v $v.  }] 
0510: 5b 66 6f 72 6d 61 74 20 7b 54 68 72 65 65 20 69  [format {Three i
0520: 6e 74 65 67 65 72 73 3a 20 28 25 2b 36 64 29 20  ntegers: (%+6d) 
0530: 28 25 2b 36 6c 78 29 20 28 25 2b 36 6c 6f 29 7d  (%+6lx) (%+6lo)}
0540: 20 24 76 20 24 76 20 24 76 5d 0a 20 20 64 6f 5f   $v $v $v].  do_
0550: 74 65 73 74 20 70 72 69 6e 74 66 2d 31 2e 24 6e  test printf-1.$n
0560: 2e 35 20 5b 73 75 62 73 74 20 7b 0a 20 20 20 20  .5 [subst {.    
0570: 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 5f  sqlite3_mprintf_
0580: 69 6e 74 20 7b 54 68 72 65 65 20 69 6e 74 65 67  int {Three integ
0590: 65 72 73 3a 20 28 25 30 36 64 29 20 28 25 30 36  ers: (%06d) (%06
05a0: 78 29 20 28 25 30 36 6f 29 7d 20 24 76 20 24 76  x) (%06o)} $v $v
05b0: 20 24 76 0a 20 20 7d 5d 20 5b 66 6f 72 6d 61 74   $v.  }] [format
05c0: 20 7b 54 68 72 65 65 20 69 6e 74 65 67 65 72 73   {Three integers
05d0: 3a 20 28 25 30 36 64 29 20 28 25 30 36 6c 78 29  : (%06d) (%06lx)
05e0: 20 28 25 30 36 6c 6f 29 7d 20 24 76 20 24 76 20   (%06lo)} $v $v 
05f0: 24 76 5d 0a 20 20 64 6f 5f 74 65 73 74 20 70 72  $v].  do_test pr
0600: 69 6e 74 66 2d 31 2e 24 6e 2e 36 20 5b 73 75 62  intf-1.$n.6 [sub
0610: 73 74 20 7b 0a 20 20 20 20 73 71 6c 69 74 65 33  st {.    sqlite3
0620: 5f 6d 70 72 69 6e 74 66 5f 69 6e 74 20 7b 54 68  _mprintf_int {Th
0630: 72 65 65 20 69 6e 74 65 67 65 72 73 3a 20 28 25  ree integers: (%
0640: 20 36 64 29 20 28 25 20 36 78 29 20 28 25 20 36   6d) (% 6x) (% 6
0650: 6f 29 7d 20 24 76 20 24 76 20 24 76 0a 20 20 7d  o)} $v $v $v.  }
0660: 5d 20 5b 66 6f 72 6d 61 74 20 7b 54 68 72 65 65  ] [format {Three
0670: 20 69 6e 74 65 67 65 72 73 3a 20 28 25 20 36 64   integers: (% 6d
0680: 29 20 28 25 20 36 6c 78 29 20 28 25 20 36 6c 6f  ) (% 6lx) (% 6lo
0690: 29 7d 20 24 76 20 24 76 20 24 76 5d 0a 20 20 69  )} $v $v $v].  i
06a0: 6e 63 72 20 6e 0a 7d 0a 0a 0a 69 66 20 7b 24 3a  ncr n.}...if {$:
06b0: 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c  :tcl_platform(pl
06c0: 61 74 66 6f 72 6d 29 21 3d 22 77 69 6e 64 6f 77  atform)!="window
06d0: 73 22 7d 20 7b 0a 0a 73 65 74 20 6d 20 31 0a 66  s"} {..set m 1.f
06e0: 6f 72 65 61 63 68 20 7b 61 20 62 7d 20 7b 31 20  oreach {a b} {1 
06f0: 31 20 35 20 35 20 31 30 20 31 30 20 31 30 20 35  1 5 5 10 10 10 5
0700: 7d 20 7b 0a 20 20 73 65 74 20 6e 20 31 0a 20 20  } {.  set n 1.  
0710: 66 6f 72 65 61 63 68 20 78 20 7b 30 2e 30 30 31  foreach x {0.001
0720: 20 31 2e 30 65 2d 32 30 20 31 2e 30 20 30 2e 30   1.0e-20 1.0 0.0
0730: 20 31 30 30 2e 30 20 39 2e 39 39 39 39 39 20 2d   100.0 9.99999 -
0740: 30 2e 30 30 35 34 33 20 2d 31 2e 30 20 2d 39 39  0.00543 -1.0 -99
0750: 2e 39 39 39 39 39 7d 20 7b 0a 20 20 20 20 64 6f  .99999} {.    do
0760: 5f 74 65 73 74 20 70 72 69 6e 74 66 2d 32 2e 24  _test printf-2.$
0770: 6d 2e 24 6e 2e 31 20 5b 73 75 62 73 74 20 7b 0a  m.$n.1 [subst {.
0780: 20 20 20 20 20 20 73 71 6c 69 74 65 33 5f 6d 70        sqlite3_mp
0790: 72 69 6e 74 66 5f 64 6f 75 62 6c 65 20 7b 41 20  rintf_double {A 
07a0: 64 6f 75 62 6c 65 3a 20 25 2a 2e 2a 66 7d 20 24  double: %*.*f} $
07b0: 61 20 24 62 20 24 78 0a 20 20 20 20 7d 5d 20 5b  a $b $x.    }] [
07c0: 66 6f 72 6d 61 74 20 7b 41 20 64 6f 75 62 6c 65  format {A double
07d0: 3a 20 25 2a 2e 2a 66 7d 20 24 61 20 24 62 20 24  : %*.*f} $a $b $
07e0: 78 5d 0a 20 20 20 20 64 6f 5f 74 65 73 74 20 70  x].    do_test p
07f0: 72 69 6e 74 66 2d 32 2e 24 6d 2e 24 6e 2e 32 20  rintf-2.$m.$n.2 
0800: 5b 73 75 62 73 74 20 7b 0a 20 20 20 20 20 20 73  [subst {.      s
0810: 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 5f 64  qlite3_mprintf_d
0820: 6f 75 62 6c 65 20 7b 41 20 64 6f 75 62 6c 65 3a  ouble {A double:
0830: 20 25 2a 2e 2a 65 7d 20 24 61 20 24 62 20 24 78   %*.*e} $a $b $x
0840: 0a 20 20 20 20 7d 5d 20 5b 66 6f 72 6d 61 74 20  .    }] [format 
0850: 7b 41 20 64 6f 75 62 6c 65 3a 20 25 2a 2e 2a 65  {A double: %*.*e
0860: 7d 20 24 61 20 24 62 20 24 78 5d 0a 20 20 20 20  } $a $b $x].    
0870: 64 6f 5f 74 65 73 74 20 70 72 69 6e 74 66 2d 32  do_test printf-2
0880: 2e 24 6d 2e 24 6e 2e 33 20 5b 73 75 62 73 74 20  .$m.$n.3 [subst 
0890: 7b 0a 20 20 20 20 20 20 73 71 6c 69 74 65 33 5f  {.      sqlite3_
08a0: 6d 70 72 69 6e 74 66 5f 64 6f 75 62 6c 65 20 7b  mprintf_double {
08b0: 41 20 64 6f 75 62 6c 65 3a 20 25 2a 2e 2a 67 7d  A double: %*.*g}
08c0: 20 24 61 20 24 62 20 24 78 0a 20 20 20 20 7d 5d   $a $b $x.    }]
08d0: 20 5b 66 6f 72 6d 61 74 20 7b 41 20 64 6f 75 62   [format {A doub
08e0: 6c 65 3a 20 25 2a 2e 2a 67 7d 20 24 61 20 24 62  le: %*.*g} $a $b
08f0: 20 24 78 5d 0a 20 20 20 20 64 6f 5f 74 65 73 74   $x].    do_test
0900: 20 70 72 69 6e 74 66 2d 32 2e 24 6d 2e 24 6e 2e   printf-2.$m.$n.
0910: 34 20 5b 73 75 62 73 74 20 7b 0a 20 20 20 20 20  4 [subst {.     
0920: 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66   sqlite3_mprintf
0930: 5f 64 6f 75 62 6c 65 20 7b 41 20 64 6f 75 62 6c  _double {A doubl
0940: 65 3a 20 25 64 20 25 64 20 25 67 7d 20 24 61 20  e: %d %d %g} $a 
0950: 24 62 20 24 78 0a 20 20 20 20 7d 5d 20 5b 66 6f  $b $x.    }] [fo
0960: 72 6d 61 74 20 7b 41 20 64 6f 75 62 6c 65 3a 20  rmat {A double: 
0970: 25 64 20 25 64 20 25 67 7d 20 24 61 20 24 62 20  %d %d %g} $a $b 
0980: 24 78 5d 0a 20 20 20 20 64 6f 5f 74 65 73 74 20  $x].    do_test 
0990: 70 72 69 6e 74 66 2d 32 2e 24 6d 2e 24 6e 2e 35  printf-2.$m.$n.5
09a0: 20 5b 73 75 62 73 74 20 7b 0a 20 20 20 20 20 20   [subst {.      
09b0: 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 5f  sqlite3_mprintf_
09c0: 64 6f 75 62 6c 65 20 7b 41 20 64 6f 75 62 6c 65  double {A double
09d0: 3a 20 25 64 20 25 64 20 25 23 67 7d 20 24 61 20  : %d %d %#g} $a 
09e0: 24 62 20 24 78 0a 20 20 20 20 7d 5d 20 5b 66 6f  $b $x.    }] [fo
09f0: 72 6d 61 74 20 7b 41 20 64 6f 75 62 6c 65 3a 20  rmat {A double: 
0a00: 25 64 20 25 64 20 25 23 67 7d 20 24 61 20 24 62  %d %d %#g} $a $b
0a10: 20 24 78 5d 0a 20 20 20 20 69 6e 63 72 20 6e 0a   $x].    incr n.
0a20: 20 20 7d 0a 20 20 69 6e 63 72 20 6d 0a 7d 0a 0a    }.  incr m.}..
0a30: 7d 0a 0a 64 6f 5f 74 65 73 74 20 70 72 69 6e 74  }..do_test print
0a40: 66 2d 33 2e 31 20 7b 0a 20 20 73 71 6c 69 74 65  f-3.1 {.  sqlite
0a50: 33 5f 6d 70 72 69 6e 74 66 5f 73 74 72 20 7b 41  3_mprintf_str {A
0a60: 20 53 74 72 69 6e 67 3a 20 28 25 2a 2e 2a 73 29   String: (%*.*s)
0a70: 7d 20 31 30 20 31 30 20 7b 54 68 69 73 20 69 73  } 10 10 {This is
0a80: 20 74 68 65 20 73 74 72 69 6e 67 7d 0a 7d 20 5b   the string}.} [
0a90: 66 6f 72 6d 61 74 20 7b 41 20 53 74 72 69 6e 67  format {A String
0aa0: 3a 20 28 25 2a 2e 2a 73 29 7d 20 31 30 20 31 30  : (%*.*s)} 10 10
0ab0: 20 7b 54 68 69 73 20 69 73 20 74 68 65 20 73 74   {This is the st
0ac0: 72 69 6e 67 7d 5d 0a 64 6f 5f 74 65 73 74 20 70  ring}].do_test p
0ad0: 72 69 6e 74 66 2d 33 2e 32 20 7b 0a 20 20 73 71  rintf-3.2 {.  sq
0ae0: 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 5f 73 74  lite3_mprintf_st
0af0: 72 20 7b 41 20 53 74 72 69 6e 67 3a 20 28 25 2a  r {A String: (%*
0b00: 2e 2a 73 29 7d 20 31 30 20 35 20 7b 54 68 69 73  .*s)} 10 5 {This
0b10: 20 69 73 20 74 68 65 20 73 74 72 69 6e 67 7d 0a   is the string}.
0b20: 7d 20 5b 66 6f 72 6d 61 74 20 7b 41 20 53 74 72  } [format {A Str
0b30: 69 6e 67 3a 20 28 25 2a 2e 2a 73 29 7d 20 31 30  ing: (%*.*s)} 10
0b40: 20 35 20 7b 54 68 69 73 20 69 73 20 74 68 65 20   5 {This is the 
0b50: 73 74 72 69 6e 67 7d 5d 0a 64 6f 5f 74 65 73 74  string}].do_test
0b60: 20 70 72 69 6e 74 66 2d 33 2e 33 20 7b 0a 20 20   printf-3.3 {.  
0b70: 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 5f  sqlite3_mprintf_
0b80: 73 74 72 20 7b 41 20 53 74 72 69 6e 67 3a 20 28  str {A String: (
0b90: 25 2a 2e 2a 73 29 7d 20 2d 31 30 20 35 20 7b 54  %*.*s)} -10 5 {T
0ba0: 68 69 73 20 69 73 20 74 68 65 20 73 74 72 69 6e  his is the strin
0bb0: 67 7d 0a 7d 20 5b 66 6f 72 6d 61 74 20 7b 41 20  g}.} [format {A 
0bc0: 53 74 72 69 6e 67 3a 20 28 25 2a 2e 2a 73 29 7d  String: (%*.*s)}
0bd0: 20 2d 31 30 20 35 20 7b 54 68 69 73 20 69 73 20   -10 5 {This is 
0be0: 74 68 65 20 73 74 72 69 6e 67 7d 5d 0a 64 6f 5f  the string}].do_
0bf0: 74 65 73 74 20 70 72 69 6e 74 66 2d 33 2e 34 20  test printf-3.4 
0c00: 7b 0a 20 20 73 71 6c 69 74 65 33 5f 6d 70 72 69  {.  sqlite3_mpri
0c10: 6e 74 66 5f 73 74 72 20 7b 25 64 20 25 64 20 41  ntf_str {%d %d A
0c20: 20 53 74 72 69 6e 67 3a 20 28 25 73 29 7d 20 31   String: (%s)} 1
0c30: 20 32 20 7b 54 68 69 73 20 69 73 20 74 68 65 20   2 {This is the 
0c40: 73 74 72 69 6e 67 7d 0a 7d 20 5b 66 6f 72 6d 61  string}.} [forma
0c50: 74 20 7b 25 64 20 25 64 20 41 20 53 74 72 69 6e  t {%d %d A Strin
0c60: 67 3a 20 28 25 73 29 7d 20 31 20 32 20 7b 54 68  g: (%s)} 1 2 {Th
0c70: 69 73 20 69 73 20 74 68 65 20 73 74 72 69 6e 67  is is the string
0c80: 7d 5d 0a 64 6f 5f 74 65 73 74 20 70 72 69 6e 74  }].do_test print
0c90: 66 2d 33 2e 35 20 7b 0a 20 20 73 71 6c 69 74 65  f-3.5 {.  sqlite
0ca0: 33 5f 6d 70 72 69 6e 74 66 5f 73 74 72 20 7b 25  3_mprintf_str {%
0cb0: 64 20 25 64 20 41 20 53 74 72 69 6e 67 3a 20 28  d %d A String: (
0cc0: 25 33 30 73 29 7d 20 31 20 32 20 7b 54 68 69 73  %30s)} 1 2 {This
0cd0: 20 69 73 20 74 68 65 20 73 74 72 69 6e 67 7d 0a   is the string}.
0ce0: 7d 20 5b 66 6f 72 6d 61 74 20 7b 25 64 20 25 64  } [format {%d %d
0cf0: 20 41 20 53 74 72 69 6e 67 3a 20 28 25 33 30 73   A String: (%30s
0d00: 29 7d 20 31 20 32 20 7b 54 68 69 73 20 69 73 20  )} 1 2 {This is 
0d10: 74 68 65 20 73 74 72 69 6e 67 7d 5d 0a 64 6f 5f  the string}].do_
0d20: 74 65 73 74 20 70 72 69 6e 74 66 2d 33 2e 36 20  test printf-3.6 
0d30: 7b 0a 20 20 73 71 6c 69 74 65 33 5f 6d 70 72 69  {.  sqlite3_mpri
0d40: 6e 74 66 5f 73 74 72 20 7b 25 64 20 25 64 20 41  ntf_str {%d %d A
0d50: 20 53 74 72 69 6e 67 3a 20 28 25 2d 33 30 73 29   String: (%-30s)
0d60: 7d 20 31 20 32 20 7b 54 68 69 73 20 69 73 20 74  } 1 2 {This is t
0d70: 68 65 20 73 74 72 69 6e 67 7d 0a 7d 20 5b 66 6f  he string}.} [fo
0d80: 72 6d 61 74 20 7b 25 64 20 25 64 20 41 20 53 74  rmat {%d %d A St
0d90: 72 69 6e 67 3a 20 28 25 2d 33 30 73 29 7d 20 31  ring: (%-30s)} 1
0da0: 20 32 20 7b 54 68 69 73 20 69 73 20 74 68 65 20   2 {This is the 
0db0: 73 74 72 69 6e 67 7d 5d 0a 0a 64 6f 5f 74 65 73  string}]..do_tes
0dc0: 74 20 70 72 69 6e 74 66 2d 34 2e 31 20 7b 0a 20  t printf-4.1 {. 
0dd0: 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66   sqlite3_mprintf
0de0: 5f 73 74 72 20 7b 25 64 20 25 64 20 41 20 71 75  _str {%d %d A qu
0df0: 6f 74 65 64 20 73 74 72 69 6e 67 3a 20 27 25 71  oted string: '%q
0e00: 27 7d 20 31 20 32 20 7b 48 69 20 59 27 61 6c 6c  '} 1 2 {Hi Y'all
0e10: 7d 0a 7d 20 7b 31 20 32 20 41 20 71 75 6f 74 65  }.} {1 2 A quote
0e20: 64 20 73 74 72 69 6e 67 3a 20 27 48 69 20 59 27  d string: 'Hi Y'
0e30: 27 61 6c 6c 27 7d 0a 64 6f 5f 74 65 73 74 20 70  'all'}.do_test p
0e40: 72 69 6e 74 66 2d 34 2e 32 20 7b 0a 20 20 73 71  rintf-4.2 {.  sq
0e50: 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 5f 73 74  lite3_mprintf_st
0e60: 72 20 7b 25 64 20 25 64 20 41 20 4e 55 4c 4c 20  r {%d %d A NULL 
0e70: 70 6f 69 6e 74 65 72 20 69 6e 20 25 25 71 3a 20  pointer in %%q: 
0e80: 27 25 71 27 7d 20 31 20 32 0a 7d 20 7b 31 20 32  '%q'} 1 2.} {1 2
0e90: 20 41 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20   A NULL pointer 
0ea0: 69 6e 20 25 71 3a 20 27 28 4e 55 4c 4c 29 27 7d  in %q: '(NULL)'}
0eb0: 0a 64 6f 5f 74 65 73 74 20 70 72 69 6e 74 66 2d  .do_test printf-
0ec0: 34 2e 33 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f  4.3 {.  sqlite3_
0ed0: 6d 70 72 69 6e 74 66 5f 73 74 72 20 7b 25 64 20  mprintf_str {%d 
0ee0: 25 64 20 41 20 71 75 6f 74 65 64 20 73 74 72 69  %d A quoted stri
0ef0: 6e 67 3a 20 25 51 7d 20 31 20 32 20 7b 48 69 20  ng: %Q} 1 2 {Hi 
0f00: 59 27 61 6c 6c 7d 0a 7d 20 7b 31 20 32 20 41 20  Y'all}.} {1 2 A 
0f10: 71 75 6f 74 65 64 20 73 74 72 69 6e 67 3a 20 27  quoted string: '
0f20: 48 69 20 59 27 27 61 6c 6c 27 7d 0a 64 6f 5f 74  Hi Y''all'}.do_t
0f30: 65 73 74 20 70 72 69 6e 74 66 2d 34 2e 34 20 7b  est printf-4.4 {
0f40: 0a 20 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e  .  sqlite3_mprin
0f50: 74 66 5f 73 74 72 20 7b 25 64 20 25 64 20 41 20  tf_str {%d %d A 
0f60: 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 69 6e 20  NULL pointer in 
0f70: 25 25 51 3a 20 25 51 7d 20 31 20 32 0a 7d 20 7b  %%Q: %Q} 1 2.} {
0f80: 31 20 32 20 41 20 4e 55 4c 4c 20 70 6f 69 6e 74  1 2 A NULL point
0f90: 65 72 20 69 6e 20 25 51 3a 20 4e 55 4c 4c 7d 0a  er in %Q: NULL}.
0fa0: 0a 64 6f 5f 74 65 73 74 20 70 72 69 6e 74 66 2d  .do_test printf-
0fb0: 35 2e 31 20 7b 0a 20 20 73 65 74 20 78 20 5b 73  5.1 {.  set x [s
0fc0: 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 5f 73  qlite3_mprintf_s
0fd0: 74 72 20 7b 25 64 20 25 64 20 25 31 30 30 30 30  tr {%d %d %10000
0fe0: 30 73 7d 20 30 20 30 20 7b 48 65 6c 6c 6f 7d 5d  0s} 0 0 {Hello}]
0ff0: 0a 20 20 73 74 72 69 6e 67 20 6c 65 6e 67 74 68  .  string length
1000: 20 24 78 0a 7d 20 7b 39 39 34 7d 0a 64 6f 5f 74   $x.} {994}.do_t
1010: 65 73 74 20 70 72 69 6e 74 66 2d 35 2e 32 20 7b  est printf-5.2 {
1020: 0a 20 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e  .  sqlite3_mprin
1030: 74 66 5f 73 74 72 20 7b 25 64 20 25 64 20 28 25  tf_str {%d %d (%
1040: 2d 31 30 2e 31 30 73 29 20 25 7d 20 2d 39 20 2d  -10.10s) %} -9 -
1050: 31 30 20 7b 48 65 6c 6c 6f 48 65 6c 6c 6f 48 65  10 {HelloHelloHe
1060: 6c 6c 6f 7d 0a 7d 20 7b 2d 39 20 2d 31 30 20 28  llo}.} {-9 -10 (
1070: 48 65 6c 6c 6f 48 65 6c 6c 6f 29 20 25 7d 0a 0a  HelloHello) %}..
1080: 64 6f 5f 74 65 73 74 20 70 72 69 6e 74 66 2d 36  do_test printf-6
1090: 2e 31 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f 6d  .1 {.  sqlite3_m
10a0: 70 72 69 6e 74 66 5f 7a 5f 74 65 73 74 20 2c 20  printf_z_test , 
10b0: 6f 6e 65 20 74 77 6f 20 74 68 72 65 65 20 66 6f  one two three fo
10c0: 75 72 20 66 69 76 65 20 73 69 78 0a 7d 20 7b 2c  ur five six.} {,
10d0: 6f 6e 65 2c 74 77 6f 2c 74 68 72 65 65 2c 66 6f  one,two,three,fo
10e0: 75 72 2c 66 69 76 65 2c 73 69 78 7d 0a 0a 0a 64  ur,five,six}...d
10f0: 6f 5f 74 65 73 74 20 70 72 69 6e 74 66 2d 37 2e  o_test printf-7.
1100: 31 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f 6d 70  1 {.  sqlite3_mp
1110: 72 69 6e 74 66 5f 73 63 61 6c 65 64 20 7b 41 20  rintf_scaled {A 
1120: 64 6f 75 62 6c 65 3a 20 25 67 7d 20 31 2e 30 65  double: %g} 1.0e
1130: 33 30 37 20 31 2e 30 0a 7d 20 7b 41 20 64 6f 75  307 1.0.} {A dou
1140: 62 6c 65 3a 20 31 65 2b 33 30 37 7d 0a 64 6f 5f  ble: 1e+307}.do_
1150: 74 65 73 74 20 70 72 69 6e 74 66 2d 37 2e 32 20  test printf-7.2 
1160: 7b 0a 20 20 73 71 6c 69 74 65 33 5f 6d 70 72 69  {.  sqlite3_mpri
1170: 6e 74 66 5f 73 63 61 6c 65 64 20 7b 41 20 64 6f  ntf_scaled {A do
1180: 75 62 6c 65 3a 20 25 67 7d 20 31 2e 30 65 33 30  uble: %g} 1.0e30
1190: 37 20 31 30 2e 30 0a 7d 20 7b 41 20 64 6f 75 62  7 10.0.} {A doub
11a0: 6c 65 3a 20 31 65 2b 33 30 38 7d 0a 64 6f 5f 74  le: 1e+308}.do_t
11b0: 65 73 74 20 70 72 69 6e 74 66 2d 37 2e 33 20 7b  est printf-7.3 {
11c0: 0a 20 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e  .  sqlite3_mprin
11d0: 74 66 5f 73 63 61 6c 65 64 20 7b 41 20 64 6f 75  tf_scaled {A dou
11e0: 62 6c 65 3a 20 25 67 7d 20 31 2e 30 65 33 30 37  ble: %g} 1.0e307
11f0: 20 31 30 30 2e 30 0a 7d 20 7b 41 20 64 6f 75 62   100.0.} {A doub
1200: 6c 65 3a 20 4e 61 4e 7d 0a 0a 66 69 6e 69 73 68  le: NaN}..finish
1210: 5f 74 65 73 74 0a                                _test.