/ Hex Artifact Content
Login

Artifact 4c71871e1a75a2dacb673945fc13ddb30168798f:


0000: 23 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20  # Copyright (c) 
0010: 32 30 30 31 20 44 2e 20 52 69 63 68 61 72 64 20  2001 D. Richard 
0020: 48 69 70 70 0a 23 0a 23 20 54 68 69 73 20 70 72  Hipp.#.# This pr
0030: 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f  ogram is free so
0040: 66 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20  ftware; you can 
0050: 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20  redistribute it 
0060: 61 6e 64 2f 6f 72 0a 23 20 6d 6f 64 69 66 79 20  and/or.# modify 
0070: 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72  it under the ter
0080: 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65  ms of the GNU Ge
0090: 6e 65 72 61 6c 20 50 75 62 6c 69 63 0a 23 20 4c  neral Public.# L
00a0: 69 63 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73  icense as publis
00b0: 68 65 64 20 62 79 20 74 68 65 20 46 72 65 65 20  hed by the Free 
00c0: 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74  Software Foundat
00d0: 69 6f 6e 3b 20 65 69 74 68 65 72 0a 23 20 76 65  ion; either.# ve
00e0: 72 73 69 6f 6e 20 32 20 6f 66 20 74 68 65 20 4c  rsion 2 of the L
00f0: 69 63 65 6e 73 65 2c 20 6f 72 20 28 61 74 20 79  icense, or (at y
0100: 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20  our option) any 
0110: 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 23  later version..#
0120: 0a 23 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20  .# This program 
0130: 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69  is distributed i
0140: 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20  n the hope that 
0150: 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75  it will be usefu
0160: 6c 2c 0a 23 20 62 75 74 20 57 49 54 48 4f 55 54  l,.# but WITHOUT
0170: 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77   ANY WARRANTY; w
0180: 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20  ithout even the 
0190: 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79  implied warranty
01a0: 20 6f 66 0a 23 20 4d 45 52 43 48 41 4e 54 41 42   of.# MERCHANTAB
01b0: 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53  ILITY or FITNESS
01c0: 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41   FOR A PARTICULA
01d0: 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20  R PURPOSE.  See 
01e0: 74 68 65 20 47 4e 55 0a 23 20 47 65 6e 65 72 61  the GNU.# Genera
01f0: 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65  l Public License
0200: 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c   for more detail
0210: 73 2e 0a 23 20 0a 23 20 59 6f 75 20 73 68 6f 75  s..# .# You shou
0220: 6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65 64  ld have received
0230: 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47   a copy of the G
0240: 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69  NU General Publi
0250: 63 0a 23 20 4c 69 63 65 6e 73 65 20 61 6c 6f 6e  c.# License alon
0260: 67 20 77 69 74 68 20 74 68 69 73 20 6c 69 62 72  g with this libr
0270: 61 72 79 3b 20 69 66 20 6e 6f 74 2c 20 77 72 69  ary; if not, wri
0280: 74 65 20 74 6f 20 74 68 65 0a 23 20 46 72 65 65  te to the.# Free
0290: 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61   Software Founda
02a0: 74 69 6f 6e 2c 20 49 6e 63 2e 2c 20 35 39 20 54  tion, Inc., 59 T
02b0: 65 6d 70 6c 65 20 50 6c 61 63 65 20 2d 20 53 75  emple Place - Su
02c0: 69 74 65 20 33 33 30 2c 0a 23 20 42 6f 73 74 6f  ite 330,.# Bosto
02d0: 6e 2c 20 4d 41 20 20 30 32 31 31 31 2d 31 33 30  n, MA  02111-130
02e0: 37 2c 20 55 53 41 2e 0a 23 0a 23 20 41 75 74 68  7, USA..#.# Auth
02f0: 6f 72 20 63 6f 6e 74 61 63 74 20 69 6e 66 6f 72  or contact infor
0300: 6d 61 74 69 6f 6e 3a 0a 23 20 20 20 64 72 68 40  mation:.#   drh@
0310: 68 77 61 63 69 2e 63 6f 6d 0a 23 20 20 20 68 74  hwaci.com.#   ht
0320: 74 70 3a 2f 2f 77 77 77 2e 68 77 61 63 69 2e 63  tp://www.hwaci.c
0330: 6f 6d 2f 64 72 68 2f 0a 23 0a 23 2a 2a 2a 2a 2a  om/drh/.#.#*****
0340: 2a 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 0a 23 20 54 68 69 73 20 66 69 6c 65 20 69  **.# This file i
0390: 6d 70 6c 65 6d 65 6e 74 73 20 72 65 67 72 65 73  mplements regres
03a0: 73 69 6f 6e 20 74 65 73 74 73 20 66 6f 72 20 53  sion tests for S
03b0: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 20 20  QLite library.  
03c0: 54 68 65 0a 23 20 66 6f 63 75 73 20 6f 66 20 74  The.# focus of t
03d0: 68 69 73 20 66 69 6c 65 20 69 73 20 74 65 73 74  his file is test
03e0: 69 6e 67 20 74 68 65 20 73 71 6c 69 74 65 5f 2a  ing the sqlite_*
03f0: 5f 70 72 69 6e 74 66 28 29 20 69 6e 74 65 72 66  _printf() interf
0400: 61 63 65 2e 0a 23 0a 23 20 24 49 64 3a 20 70 72  ace..#.# $Id: pr
0410: 69 6e 74 66 2e 74 65 73 74 2c 76 20 31 2e 32 20  intf.test,v 1.2 
0420: 32 30 30 31 2f 30 34 2f 31 31 20 31 34 3a 32 38  2001/04/11 14:28
0430: 3a 34 33 20 64 72 68 20 45 78 70 20 24 0a 0a 73  :43 drh Exp $..s
0440: 65 74 20 74 65 73 74 64 69 72 20 5b 66 69 6c 65  et testdir [file
0450: 20 64 69 72 6e 61 6d 65 20 24 61 72 67 76 30 5d   dirname $argv0]
0460: 0a 73 6f 75 72 63 65 20 24 74 65 73 74 64 69 72  .source $testdir
0470: 2f 74 65 73 74 65 72 2e 74 63 6c 0a 0a 73 65 74  /tester.tcl..set
0480: 20 6e 20 31 0a 66 6f 72 65 61 63 68 20 76 20 7b   n 1.foreach v {
0490: 31 20 32 20 35 20 31 30 20 39 39 20 31 30 30 20  1 2 5 10 99 100 
04a0: 31 30 30 30 30 30 30 20 39 39 39 39 39 39 39 39  1000000 99999999
04b0: 39 20 30 20 2d 31 20 2d 32 20 2d 35 20 2d 31 30  9 0 -1 -2 -5 -10
04c0: 20 2d 39 39 20 2d 31 30 30 20 2d 39 39 39 39 39   -99 -100 -99999
04d0: 39 39 7d 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20  99} {.  do_test 
04e0: 70 72 69 6e 74 66 2d 31 2e 24 6e 2e 31 20 5b 73  printf-1.$n.1 [s
04f0: 75 62 73 74 20 7b 0a 20 20 20 20 73 71 6c 69 74  ubst {.    sqlit
0500: 65 5f 6d 70 72 69 6e 74 66 5f 69 6e 74 20 7b 54  e_mprintf_int {T
0510: 68 72 65 65 20 69 6e 74 65 67 65 72 73 3a 20 25  hree integers: %
0520: 64 20 25 78 20 25 6f 7d 20 24 76 20 24 76 20 24  d %x %o} $v $v $
0530: 76 0a 20 20 7d 5d 20 5b 66 6f 72 6d 61 74 20 7b  v.  }] [format {
0540: 54 68 72 65 65 20 69 6e 74 65 67 65 72 73 3a 20  Three integers: 
0550: 25 64 20 25 78 20 25 6f 7d 20 24 76 20 24 76 20  %d %x %o} $v $v 
0560: 24 76 5d 0a 20 20 64 6f 5f 74 65 73 74 20 70 72  $v].  do_test pr
0570: 69 6e 74 66 2d 31 2e 24 6e 2e 32 20 5b 73 75 62  intf-1.$n.2 [sub
0580: 73 74 20 7b 0a 20 20 20 20 73 71 6c 69 74 65 5f  st {.    sqlite_
0590: 6d 70 72 69 6e 74 66 5f 69 6e 74 20 7b 54 68 72  mprintf_int {Thr
05a0: 65 65 20 69 6e 74 65 67 65 72 73 3a 20 28 25 36  ee integers: (%6
05b0: 64 29 20 28 25 36 78 29 20 28 25 36 6f 29 7d 20  d) (%6x) (%6o)} 
05c0: 24 76 20 24 76 20 24 76 0a 20 20 7d 5d 20 5b 66  $v $v $v.  }] [f
05d0: 6f 72 6d 61 74 20 7b 54 68 72 65 65 20 69 6e 74  ormat {Three int
05e0: 65 67 65 72 73 3a 20 28 25 36 64 29 20 28 25 36  egers: (%6d) (%6
05f0: 78 29 20 28 25 36 6f 29 7d 20 24 76 20 24 76 20  x) (%6o)} $v $v 
0600: 24 76 5d 0a 20 20 64 6f 5f 74 65 73 74 20 70 72  $v].  do_test pr
0610: 69 6e 74 66 2d 31 2e 24 6e 2e 33 20 5b 73 75 62  intf-1.$n.3 [sub
0620: 73 74 20 7b 0a 20 20 20 20 73 71 6c 69 74 65 5f  st {.    sqlite_
0630: 6d 70 72 69 6e 74 66 5f 69 6e 74 20 7b 54 68 72  mprintf_int {Thr
0640: 65 65 20 69 6e 74 65 67 65 72 73 3a 20 28 25 2d  ee integers: (%-
0650: 36 64 29 20 28 25 2d 36 78 29 20 28 25 2d 36 6f  6d) (%-6x) (%-6o
0660: 29 7d 20 24 76 20 24 76 20 24 76 0a 20 20 7d 5d  )} $v $v $v.  }]
0670: 20 5b 66 6f 72 6d 61 74 20 7b 54 68 72 65 65 20   [format {Three 
0680: 69 6e 74 65 67 65 72 73 3a 20 28 25 2d 36 64 29  integers: (%-6d)
0690: 20 28 25 2d 36 78 29 20 28 25 2d 36 6f 29 7d 20   (%-6x) (%-6o)} 
06a0: 24 76 20 24 76 20 24 76 5d 0a 20 20 64 6f 5f 74  $v $v $v].  do_t
06b0: 65 73 74 20 70 72 69 6e 74 66 2d 31 2e 24 6e 2e  est printf-1.$n.
06c0: 34 20 5b 73 75 62 73 74 20 7b 0a 20 20 20 20 73  4 [subst {.    s
06d0: 71 6c 69 74 65 5f 6d 70 72 69 6e 74 66 5f 69 6e  qlite_mprintf_in
06e0: 74 20 7b 54 68 72 65 65 20 69 6e 74 65 67 65 72  t {Three integer
06f0: 73 3a 20 28 25 2b 36 64 29 20 28 25 2b 36 78 29  s: (%+6d) (%+6x)
0700: 20 28 25 2b 36 6f 29 7d 20 24 76 20 24 76 20 24   (%+6o)} $v $v $
0710: 76 0a 20 20 7d 5d 20 5b 66 6f 72 6d 61 74 20 7b  v.  }] [format {
0720: 54 68 72 65 65 20 69 6e 74 65 67 65 72 73 3a 20  Three integers: 
0730: 28 25 2b 36 64 29 20 28 25 2b 36 78 29 20 28 25  (%+6d) (%+6x) (%
0740: 2b 36 6f 29 7d 20 24 76 20 24 76 20 24 76 5d 0a  +6o)} $v $v $v].
0750: 20 20 64 6f 5f 74 65 73 74 20 70 72 69 6e 74 66    do_test printf
0760: 2d 31 2e 24 6e 2e 35 20 5b 73 75 62 73 74 20 7b  -1.$n.5 [subst {
0770: 0a 20 20 20 20 73 71 6c 69 74 65 5f 6d 70 72 69  .    sqlite_mpri
0780: 6e 74 66 5f 69 6e 74 20 7b 54 68 72 65 65 20 69  ntf_int {Three i
0790: 6e 74 65 67 65 72 73 3a 20 28 25 30 36 64 29 20  ntegers: (%06d) 
07a0: 28 25 30 36 78 29 20 28 25 30 36 6f 29 7d 20 24  (%06x) (%06o)} $
07b0: 76 20 24 76 20 24 76 0a 20 20 7d 5d 20 5b 66 6f  v $v $v.  }] [fo
07c0: 72 6d 61 74 20 7b 54 68 72 65 65 20 69 6e 74 65  rmat {Three inte
07d0: 67 65 72 73 3a 20 28 25 30 36 64 29 20 28 25 30  gers: (%06d) (%0
07e0: 36 78 29 20 28 25 30 36 6f 29 7d 20 24 76 20 24  6x) (%06o)} $v $
07f0: 76 20 24 76 5d 0a 20 20 64 6f 5f 74 65 73 74 20  v $v].  do_test 
0800: 70 72 69 6e 74 66 2d 31 2e 24 6e 2e 36 20 5b 73  printf-1.$n.6 [s
0810: 75 62 73 74 20 7b 0a 20 20 20 20 73 71 6c 69 74  ubst {.    sqlit
0820: 65 5f 6d 70 72 69 6e 74 66 5f 69 6e 74 20 7b 54  e_mprintf_int {T
0830: 68 72 65 65 20 69 6e 74 65 67 65 72 73 3a 20 28  hree integers: (
0840: 25 20 36 64 29 20 28 25 20 36 78 29 20 28 25 20  % 6d) (% 6x) (% 
0850: 36 6f 29 7d 20 24 76 20 24 76 20 24 76 0a 20 20  6o)} $v $v $v.  
0860: 7d 5d 20 5b 66 6f 72 6d 61 74 20 7b 54 68 72 65  }] [format {Thre
0870: 65 20 69 6e 74 65 67 65 72 73 3a 20 28 25 20 36  e integers: (% 6
0880: 64 29 20 28 25 20 36 78 29 20 28 25 20 36 6f 29  d) (% 6x) (% 6o)
0890: 7d 20 24 76 20 24 76 20 24 76 5d 0a 20 20 69 6e  } $v $v $v].  in
08a0: 63 72 20 6e 0a 7d 0a 0a 73 65 74 20 6d 20 31 0a  cr n.}..set m 1.
08b0: 66 6f 72 65 61 63 68 20 7b 61 20 62 7d 20 7b 31  foreach {a b} {1
08c0: 20 31 20 35 20 35 20 31 30 20 31 30 20 31 30 20   1 5 5 10 10 10 
08d0: 35 7d 20 7b 0a 20 20 73 65 74 20 6e 20 31 0a 20  5} {.  set n 1. 
08e0: 20 66 6f 72 65 61 63 68 20 78 20 7b 30 2e 30 30   foreach x {0.00
08f0: 31 20 31 2e 30 65 2d 32 30 20 31 2e 30 20 30 2e  1 1.0e-20 1.0 0.
0900: 30 20 31 30 30 2e 30 20 39 2e 39 39 39 39 39 20  0 100.0 9.99999 
0910: 2d 30 2e 30 30 35 34 33 20 2d 31 2e 30 20 2d 39  -0.00543 -1.0 -9
0920: 39 2e 39 39 39 39 39 7d 20 7b 0a 20 20 20 20 64  9.99999} {.    d
0930: 6f 5f 74 65 73 74 20 70 72 69 6e 74 66 2d 32 2e  o_test printf-2.
0940: 24 6d 2e 24 6e 2e 31 20 5b 73 75 62 73 74 20 7b  $m.$n.1 [subst {
0950: 0a 20 20 20 20 20 20 73 71 6c 69 74 65 5f 6d 70  .      sqlite_mp
0960: 72 69 6e 74 66 5f 64 6f 75 62 6c 65 20 7b 41 20  rintf_double {A 
0970: 64 6f 75 62 6c 65 3a 20 25 2a 2e 2a 66 7d 20 24  double: %*.*f} $
0980: 61 20 24 62 20 24 78 0a 20 20 20 20 7d 5d 20 5b  a $b $x.    }] [
0990: 66 6f 72 6d 61 74 20 7b 41 20 64 6f 75 62 6c 65  format {A double
09a0: 3a 20 25 2a 2e 2a 66 7d 20 24 61 20 24 62 20 24  : %*.*f} $a $b $
09b0: 78 5d 0a 20 20 20 20 64 6f 5f 74 65 73 74 20 70  x].    do_test p
09c0: 72 69 6e 74 66 2d 32 2e 24 6d 2e 24 6e 2e 32 20  rintf-2.$m.$n.2 
09d0: 5b 73 75 62 73 74 20 7b 0a 20 20 20 20 20 20 73  [subst {.      s
09e0: 71 6c 69 74 65 5f 6d 70 72 69 6e 74 66 5f 64 6f  qlite_mprintf_do
09f0: 75 62 6c 65 20 7b 41 20 64 6f 75 62 6c 65 3a 20  uble {A double: 
0a00: 25 2a 2e 2a 65 7d 20 24 61 20 24 62 20 24 78 0a  %*.*e} $a $b $x.
0a10: 20 20 20 20 7d 5d 20 5b 66 6f 72 6d 61 74 20 7b      }] [format {
0a20: 41 20 64 6f 75 62 6c 65 3a 20 25 2a 2e 2a 65 7d  A double: %*.*e}
0a30: 20 24 61 20 24 62 20 24 78 5d 0a 20 20 20 20 64   $a $b $x].    d
0a40: 6f 5f 74 65 73 74 20 70 72 69 6e 74 66 2d 32 2e  o_test printf-2.
0a50: 24 6d 2e 24 6e 2e 33 20 5b 73 75 62 73 74 20 7b  $m.$n.3 [subst {
0a60: 0a 20 20 20 20 20 20 73 71 6c 69 74 65 5f 6d 70  .      sqlite_mp
0a70: 72 69 6e 74 66 5f 64 6f 75 62 6c 65 20 7b 41 20  rintf_double {A 
0a80: 64 6f 75 62 6c 65 3a 20 25 2a 2e 2a 67 7d 20 24  double: %*.*g} $
0a90: 61 20 24 62 20 24 78 0a 20 20 20 20 7d 5d 20 5b  a $b $x.    }] [
0aa0: 66 6f 72 6d 61 74 20 7b 41 20 64 6f 75 62 6c 65  format {A double
0ab0: 3a 20 25 2a 2e 2a 67 7d 20 24 61 20 24 62 20 24  : %*.*g} $a $b $
0ac0: 78 5d 0a 20 20 20 20 64 6f 5f 74 65 73 74 20 70  x].    do_test p
0ad0: 72 69 6e 74 66 2d 32 2e 24 6d 2e 24 6e 2e 34 20  rintf-2.$m.$n.4 
0ae0: 5b 73 75 62 73 74 20 7b 0a 20 20 20 20 20 20 73  [subst {.      s
0af0: 71 6c 69 74 65 5f 6d 70 72 69 6e 74 66 5f 64 6f  qlite_mprintf_do
0b00: 75 62 6c 65 20 7b 41 20 64 6f 75 62 6c 65 3a 20  uble {A double: 
0b10: 25 64 20 25 64 20 25 67 7d 20 24 61 20 24 62 20  %d %d %g} $a $b 
0b20: 24 78 0a 20 20 20 20 7d 5d 20 5b 66 6f 72 6d 61  $x.    }] [forma
0b30: 74 20 7b 41 20 64 6f 75 62 6c 65 3a 20 25 64 20  t {A double: %d 
0b40: 25 64 20 25 67 7d 20 24 61 20 24 62 20 24 78 5d  %d %g} $a $b $x]
0b50: 0a 20 20 20 20 64 6f 5f 74 65 73 74 20 70 72 69  .    do_test pri
0b60: 6e 74 66 2d 32 2e 24 6d 2e 24 6e 2e 35 20 5b 73  ntf-2.$m.$n.5 [s
0b70: 75 62 73 74 20 7b 0a 20 20 20 20 20 20 73 71 6c  ubst {.      sql
0b80: 69 74 65 5f 6d 70 72 69 6e 74 66 5f 64 6f 75 62  ite_mprintf_doub
0b90: 6c 65 20 7b 41 20 64 6f 75 62 6c 65 3a 20 25 64  le {A double: %d
0ba0: 20 25 64 20 25 23 67 7d 20 24 61 20 24 62 20 24   %d %#g} $a $b $
0bb0: 78 0a 20 20 20 20 7d 5d 20 5b 66 6f 72 6d 61 74  x.    }] [format
0bc0: 20 7b 41 20 64 6f 75 62 6c 65 3a 20 25 64 20 25   {A double: %d %
0bd0: 64 20 25 23 67 7d 20 24 61 20 24 62 20 24 78 5d  d %#g} $a $b $x]
0be0: 0a 20 20 20 20 69 6e 63 72 20 6e 0a 20 20 7d 0a  .    incr n.  }.
0bf0: 20 20 69 6e 63 72 20 6d 0a 7d 0a 0a 64 6f 5f 74    incr m.}..do_t
0c00: 65 73 74 20 70 72 69 6e 74 66 2d 33 2e 31 20 7b  est printf-3.1 {
0c10: 0a 20 20 73 71 6c 69 74 65 5f 6d 70 72 69 6e 74  .  sqlite_mprint
0c20: 66 5f 73 74 72 20 7b 41 20 53 74 72 69 6e 67 3a  f_str {A String:
0c30: 20 28 25 2a 2e 2a 73 29 7d 20 31 30 20 31 30 20   (%*.*s)} 10 10 
0c40: 7b 54 68 69 73 20 69 73 20 74 68 65 20 73 74 72  {This is the str
0c50: 69 6e 67 7d 0a 7d 20 5b 66 6f 72 6d 61 74 20 7b  ing}.} [format {
0c60: 41 20 53 74 72 69 6e 67 3a 20 28 25 2a 2e 2a 73  A String: (%*.*s
0c70: 29 7d 20 31 30 20 31 30 20 7b 54 68 69 73 20 69  )} 10 10 {This i
0c80: 73 20 74 68 65 20 73 74 72 69 6e 67 7d 5d 0a 64  s the string}].d
0c90: 6f 5f 74 65 73 74 20 70 72 69 6e 74 66 2d 33 2e  o_test printf-3.
0ca0: 32 20 7b 0a 20 20 73 71 6c 69 74 65 5f 6d 70 72  2 {.  sqlite_mpr
0cb0: 69 6e 74 66 5f 73 74 72 20 7b 41 20 53 74 72 69  intf_str {A Stri
0cc0: 6e 67 3a 20 28 25 2a 2e 2a 73 29 7d 20 31 30 20  ng: (%*.*s)} 10 
0cd0: 35 20 7b 54 68 69 73 20 69 73 20 74 68 65 20 73  5 {This is the s
0ce0: 74 72 69 6e 67 7d 0a 7d 20 5b 66 6f 72 6d 61 74  tring}.} [format
0cf0: 20 7b 41 20 53 74 72 69 6e 67 3a 20 28 25 2a 2e   {A String: (%*.
0d00: 2a 73 29 7d 20 31 30 20 35 20 7b 54 68 69 73 20  *s)} 10 5 {This 
0d10: 69 73 20 74 68 65 20 73 74 72 69 6e 67 7d 5d 0a  is the string}].
0d20: 64 6f 5f 74 65 73 74 20 70 72 69 6e 74 66 2d 33  do_test printf-3
0d30: 2e 33 20 7b 0a 20 20 73 71 6c 69 74 65 5f 6d 70  .3 {.  sqlite_mp
0d40: 72 69 6e 74 66 5f 73 74 72 20 7b 41 20 53 74 72  rintf_str {A Str
0d50: 69 6e 67 3a 20 28 25 2a 2e 2a 73 29 7d 20 2d 31  ing: (%*.*s)} -1
0d60: 30 20 35 20 7b 54 68 69 73 20 69 73 20 74 68 65  0 5 {This is the
0d70: 20 73 74 72 69 6e 67 7d 0a 7d 20 5b 66 6f 72 6d   string}.} [form
0d80: 61 74 20 7b 41 20 53 74 72 69 6e 67 3a 20 28 25  at {A String: (%
0d90: 2a 2e 2a 73 29 7d 20 2d 31 30 20 35 20 7b 54 68  *.*s)} -10 5 {Th
0da0: 69 73 20 69 73 20 74 68 65 20 73 74 72 69 6e 67  is is the string
0db0: 7d 5d 0a 64 6f 5f 74 65 73 74 20 70 72 69 6e 74  }].do_test print
0dc0: 66 2d 33 2e 34 20 7b 0a 20 20 73 71 6c 69 74 65  f-3.4 {.  sqlite
0dd0: 5f 6d 70 72 69 6e 74 66 5f 73 74 72 20 7b 25 64  _mprintf_str {%d
0de0: 20 25 64 20 41 20 53 74 72 69 6e 67 3a 20 28 25   %d A String: (%
0df0: 73 29 7d 20 31 20 32 20 7b 54 68 69 73 20 69 73  s)} 1 2 {This is
0e00: 20 74 68 65 20 73 74 72 69 6e 67 7d 0a 7d 20 5b   the string}.} [
0e10: 66 6f 72 6d 61 74 20 7b 25 64 20 25 64 20 41 20  format {%d %d A 
0e20: 53 74 72 69 6e 67 3a 20 28 25 73 29 7d 20 31 20  String: (%s)} 1 
0e30: 32 20 7b 54 68 69 73 20 69 73 20 74 68 65 20 73  2 {This is the s
0e40: 74 72 69 6e 67 7d 5d 0a 64 6f 5f 74 65 73 74 20  tring}].do_test 
0e50: 70 72 69 6e 74 66 2d 33 2e 35 20 7b 0a 20 20 73  printf-3.5 {.  s
0e60: 71 6c 69 74 65 5f 6d 70 72 69 6e 74 66 5f 73 74  qlite_mprintf_st
0e70: 72 20 7b 25 64 20 25 64 20 41 20 53 74 72 69 6e  r {%d %d A Strin
0e80: 67 3a 20 28 25 33 30 73 29 7d 20 31 20 32 20 7b  g: (%30s)} 1 2 {
0e90: 54 68 69 73 20 69 73 20 74 68 65 20 73 74 72 69  This is the stri
0ea0: 6e 67 7d 0a 7d 20 5b 66 6f 72 6d 61 74 20 7b 25  ng}.} [format {%
0eb0: 64 20 25 64 20 41 20 53 74 72 69 6e 67 3a 20 28  d %d A String: (
0ec0: 25 33 30 73 29 7d 20 31 20 32 20 7b 54 68 69 73  %30s)} 1 2 {This
0ed0: 20 69 73 20 74 68 65 20 73 74 72 69 6e 67 7d 5d   is the string}]
0ee0: 0a 64 6f 5f 74 65 73 74 20 70 72 69 6e 74 66 2d  .do_test printf-
0ef0: 33 2e 36 20 7b 0a 20 20 73 71 6c 69 74 65 5f 6d  3.6 {.  sqlite_m
0f00: 70 72 69 6e 74 66 5f 73 74 72 20 7b 25 64 20 25  printf_str {%d %
0f10: 64 20 41 20 53 74 72 69 6e 67 3a 20 28 25 2d 33  d A String: (%-3
0f20: 30 73 29 7d 20 31 20 32 20 7b 54 68 69 73 20 69  0s)} 1 2 {This i
0f30: 73 20 74 68 65 20 73 74 72 69 6e 67 7d 0a 7d 20  s the string}.} 
0f40: 5b 66 6f 72 6d 61 74 20 7b 25 64 20 25 64 20 41  [format {%d %d A
0f50: 20 53 74 72 69 6e 67 3a 20 28 25 2d 33 30 73 29   String: (%-30s)
0f60: 7d 20 31 20 32 20 7b 54 68 69 73 20 69 73 20 74  } 1 2 {This is t
0f70: 68 65 20 73 74 72 69 6e 67 7d 5d 0a 0a 64 6f 5f  he string}]..do_
0f80: 74 65 73 74 20 70 72 69 6e 74 66 2d 34 2e 31 20  test printf-4.1 
0f90: 7b 0a 20 20 73 71 6c 69 74 65 5f 6d 70 72 69 6e  {.  sqlite_mprin
0fa0: 74 66 5f 73 74 72 20 7b 25 64 20 25 64 20 41 20  tf_str {%d %d A 
0fb0: 71 75 6f 74 65 64 20 73 74 72 69 6e 67 3a 20 27  quoted string: '
0fc0: 25 71 27 7d 20 31 20 32 20 7b 48 69 20 59 27 61  %q'} 1 2 {Hi Y'a
0fd0: 6c 6c 7d 0a 7d 20 7b 31 20 32 20 41 20 71 75 6f  ll}.} {1 2 A quo
0fe0: 74 65 64 20 73 74 72 69 6e 67 3a 20 27 48 69 20  ted string: 'Hi 
0ff0: 59 27 27 61 6c 6c 27 7d 0a 0a 64 6f 5f 74 65 73  Y''all'}..do_tes
1000: 74 20 70 72 69 6e 74 66 2d 35 2e 31 20 7b 0a 20  t printf-5.1 {. 
1010: 20 73 65 74 20 78 20 5b 73 71 6c 69 74 65 5f 6d   set x [sqlite_m
1020: 70 72 69 6e 74 66 5f 73 74 72 20 7b 25 64 20 25  printf_str {%d %
1030: 64 20 25 31 30 30 30 30 30 73 7d 20 30 20 30 20  d %100000s} 0 0 
1040: 7b 48 65 6c 6c 6f 7d 5d 0a 20 20 73 74 72 69 6e  {Hello}].  strin
1050: 67 20 6c 65 6e 67 74 68 20 24 78 0a 7d 20 7b 39  g length $x.} {9
1060: 39 34 7d 0a 64 6f 5f 74 65 73 74 20 70 72 69 6e  94}.do_test prin
1070: 74 66 2d 35 2e 32 20 7b 0a 20 20 73 71 6c 69 74  tf-5.2 {.  sqlit
1080: 65 5f 6d 70 72 69 6e 74 66 5f 73 74 72 20 7b 25  e_mprintf_str {%
1090: 64 20 25 64 20 28 25 2d 31 30 2e 31 30 73 29 20  d %d (%-10.10s) 
10a0: 25 7d 20 2d 39 20 2d 31 30 20 7b 48 65 6c 6c 6f  %} -9 -10 {Hello
10b0: 48 65 6c 6c 6f 48 65 6c 6c 6f 7d 0a 7d 20 7b 2d  HelloHello}.} {-
10c0: 39 20 2d 31 30 20 28 48 65 6c 6c 6f 48 65 6c 6c  9 -10 (HelloHell
10d0: 6f 29 20 25 7d 0a 64 6f 5f 74 65 73 74 20 70 72  o) %}.do_test pr
10e0: 69 6e 74 66 2d 35 2e 33 20 7b 0a 20 20 73 71 6c  intf-5.3 {.  sql
10f0: 69 74 65 5f 6d 70 72 69 6e 74 66 5f 73 74 72 20  ite_mprintf_str 
1100: 7b 25 25 20 25 64 20 25 64 20 28 25 3d 31 30 73  {%% %d %d (%=10s
1110: 29 7d 20 35 20 36 20 48 65 6c 6c 6f 0a 7d 20 7b  )} 5 6 Hello.} {
1120: 25 20 35 20 36 20 28 20 20 48 65 6c 6c 6f 20 20  % 5 6 (  Hello  
1130: 20 29 7d 0a 0a 66 69 6e 69 73 68 5f 74 65 73 74   )}..finish_test
1140: 0a                                               .