Annotation of embedaddon/sqlite3/test/func2.test, revision 1.1
1.1 ! misho 1: # 2009 November 11
! 2: #
! 3: # The author disclaims copyright to this source code. In place of
! 4: # a legal notice, here is a blessing:
! 5: #
! 6: # May you do good and not evil.
! 7: # May you find forgiveness for yourself and forgive others.
! 8: # May you share freely, never taking more than you give.
! 9: #
! 10: #***********************************************************************
! 11: # This file implements regression tests for SQLite library. The
! 12: # focus of this file is testing built-in functions.
! 13: #
! 14:
! 15: set testdir [file dirname $argv0]
! 16: source $testdir/tester.tcl
! 17:
! 18: # Test plan:
! 19: #
! 20: # func2-1.*: substr implementation (ascii)
! 21: # func2-2.*: substr implementation (utf8)
! 22: # func2-3.*: substr implementation (blob)
! 23: #
! 24:
! 25: proc bin_to_hex {blob} {
! 26: set bytes {}
! 27: binary scan $blob \c* bytes
! 28: set bytes2 [list]
! 29: foreach b $bytes {lappend bytes2 [format %02X [expr $b & 0xFF]]}
! 30: join $bytes2 {}
! 31: }
! 32:
! 33: #----------------------------------------------------------------------------
! 34: # Test cases func2-1.*: substr implementation (ascii)
! 35: #
! 36:
! 37: do_test func2-1.1 {
! 38: execsql {SELECT 'Supercalifragilisticexpialidocious'}
! 39: } {Supercalifragilisticexpialidocious}
! 40:
! 41: # substr(x,y), substr(x,y,z)
! 42: do_test func2-1.2.1 {
! 43: catchsql {SELECT SUBSTR()}
! 44: } {1 {wrong number of arguments to function SUBSTR()}}
! 45: do_test func2-1.2.2 {
! 46: catchsql {SELECT SUBSTR('Supercalifragilisticexpialidocious')}
! 47: } {1 {wrong number of arguments to function SUBSTR()}}
! 48: do_test func2-1.2.3 {
! 49: catchsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 1,1,1)}
! 50: } {1 {wrong number of arguments to function SUBSTR()}}
! 51:
! 52: # p1 is 1-indexed
! 53: do_test func2-1.3 {
! 54: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 0)}
! 55: } {Supercalifragilisticexpialidocious}
! 56: do_test func2-1.4 {
! 57: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 1)}
! 58: } {Supercalifragilisticexpialidocious}
! 59: do_test func2-1.5 {
! 60: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 2)}
! 61: } {upercalifragilisticexpialidocious}
! 62: do_test func2-1.6 {
! 63: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 30)}
! 64: } {cious}
! 65: do_test func2-1.7 {
! 66: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 34)}
! 67: } {s}
! 68: do_test func2-1.8 {
! 69: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 35)}
! 70: } {{}}
! 71: do_test func2-1.9 {
! 72: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 36)}
! 73: } {{}}
! 74:
! 75: # if p1<0, start from right
! 76: do_test func2-1.10 {
! 77: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -0)}
! 78: } {Supercalifragilisticexpialidocious}
! 79: do_test func2-1.11 {
! 80: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -1)}
! 81: } {s}
! 82: do_test func2-1.12 {
! 83: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -2)}
! 84: } {us}
! 85: do_test func2-1.13 {
! 86: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -30)}
! 87: } {rcalifragilisticexpialidocious}
! 88: do_test func2-1.14 {
! 89: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -34)}
! 90: } {Supercalifragilisticexpialidocious}
! 91: do_test func2-1.15 {
! 92: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -35)}
! 93: } {Supercalifragilisticexpialidocious}
! 94: do_test func2-1.16 {
! 95: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -36)}
! 96: } {Supercalifragilisticexpialidocious}
! 97:
! 98: # p1 is 1-indexed, p2 length to return
! 99: do_test func2-1.17.1 {
! 100: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 0, 1)}
! 101: } {{}}
! 102: do_test func2-1.17.2 {
! 103: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 0, 2)}
! 104: } {S}
! 105: do_test func2-1.18 {
! 106: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 1, 1)}
! 107: } {S}
! 108: do_test func2-1.19.0 {
! 109: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 2, 0)}
! 110: } {{}}
! 111: do_test func2-1.19.1 {
! 112: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 2, 1)}
! 113: } {u}
! 114: do_test func2-1.19.2 {
! 115: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 2, 2)}
! 116: } {up}
! 117: do_test func2-1.20 {
! 118: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 30, 1)}
! 119: } {c}
! 120: do_test func2-1.21 {
! 121: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 34, 1)}
! 122: } {s}
! 123: do_test func2-1.22 {
! 124: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 35, 1)}
! 125: } {{}}
! 126: do_test func2-1.23 {
! 127: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 36, 1)}
! 128: } {{}}
! 129:
! 130: # if p1<0, start from right, p2 length to return
! 131: do_test func2-1.24 {
! 132: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -0, 1)}
! 133: } {{}}
! 134: do_test func2-1.25.0 {
! 135: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -1, 0)}
! 136: } {{}}
! 137: do_test func2-1.25.1 {
! 138: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -1, 1)}
! 139: } {s}
! 140: do_test func2-1.25.2 {
! 141: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -1, 2)}
! 142: } {s}
! 143: do_test func2-1.26 {
! 144: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -2, 1)}
! 145: } {u}
! 146: do_test func2-1.27 {
! 147: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -30, 1)}
! 148: } {r}
! 149: do_test func2-1.28.0 {
! 150: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -34, 0)}
! 151: } {{}}
! 152: do_test func2-1.28.1 {
! 153: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -34, 1)}
! 154: } {S}
! 155: do_test func2-1.28.2 {
! 156: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -34, 2)}
! 157: } {Su}
! 158: do_test func2-1.29.1 {
! 159: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -35, 1)}
! 160: } {{}}
! 161: do_test func2-1.29.2 {
! 162: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -35, 2)}
! 163: } {S}
! 164: do_test func2-1.30.0 {
! 165: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -36, 0)}
! 166: } {{}}
! 167: do_test func2-1.30.1 {
! 168: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -36, 1)}
! 169: } {{}}
! 170: do_test func2-1.30.2 {
! 171: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -36, 2)}
! 172: } {{}}
! 173: do_test func2-1.30.3 {
! 174: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', -36, 3)}
! 175: } {S}
! 176:
! 177: # p1 is 1-indexed, p2 length to return, p2<0 return p2 chars before p1
! 178: do_test func2-1.31.0 {
! 179: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 0, 0)}
! 180: } {{}}
! 181: do_test func2-1.31.1 {
! 182: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 0, -1)}
! 183: } {{}}
! 184: do_test func2-1.31.2 {
! 185: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 0, -2)}
! 186: } {{}}
! 187: do_test func2-1.32.0 {
! 188: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 1, 0)}
! 189: } {{}}
! 190: do_test func2-1.32.1 {
! 191: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 1, -1)}
! 192: } {{}}
! 193: do_test func2-1.33.0 {
! 194: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 2, 0)}
! 195: } {{}}
! 196: do_test func2-1.33.1 {
! 197: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 2, -1)}
! 198: } {S}
! 199: do_test func2-1.33.2 {
! 200: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 2, -2)}
! 201: } {S}
! 202: do_test func2-1.34.0 {
! 203: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 3, 0)}
! 204: } {{}}
! 205: do_test func2-1.34.1 {
! 206: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 3, -1)}
! 207: } {u}
! 208: do_test func2-1.34.2 {
! 209: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 3, -2)}
! 210: } {Su}
! 211: do_test func2-1.35.1 {
! 212: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 30, -1)}
! 213: } {o}
! 214: do_test func2-1.35.2 {
! 215: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 30, -2)}
! 216: } {do}
! 217: do_test func2-1.36 {
! 218: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 34, -1)}
! 219: } {u}
! 220: do_test func2-1.37 {
! 221: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 35, -1)}
! 222: } {s}
! 223: do_test func2-1.38.0 {
! 224: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 36, 0)}
! 225: } {{}}
! 226: do_test func2-1.38.1 {
! 227: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 36, -1)}
! 228: } {{}}
! 229: do_test func2-1.38.2 {
! 230: execsql {SELECT SUBSTR('Supercalifragilisticexpialidocious', 36, -2)}
! 231: } {s}
! 232:
! 233:
! 234: #----------------------------------------------------------------------------
! 235: # Test cases func2-2.*: substr implementation (utf8)
! 236: #
! 237:
! 238: # Only do the following tests if TCL has UTF-8 capabilities
! 239: #
! 240: if {"\u1234"!="u1234"} {
! 241:
! 242: do_test func2-2.1.1 {
! 243: execsql "SELECT 'hi\u1234ho'"
! 244: } "hi\u1234ho"
! 245:
! 246: # substr(x,y), substr(x,y,z)
! 247: do_test func2-2.1.2 {
! 248: catchsql "SELECT SUBSTR()"
! 249: } {1 {wrong number of arguments to function SUBSTR()}}
! 250: do_test func2-2.1.3 {
! 251: catchsql "SELECT SUBSTR('hi\u1234ho')"
! 252: } {1 {wrong number of arguments to function SUBSTR()}}
! 253: do_test func2-2.1.4 {
! 254: catchsql "SELECT SUBSTR('hi\u1234ho', 1,1,1)"
! 255: } {1 {wrong number of arguments to function SUBSTR()}}
! 256:
! 257: do_test func2-2.2.0 {
! 258: execsql "SELECT SUBSTR('hi\u1234ho', 0, 0)"
! 259: } {{}}
! 260: do_test func2-2.2.1 {
! 261: execsql "SELECT SUBSTR('hi\u1234ho', 0, 1)"
! 262: } {{}}
! 263: do_test func2-2.2.2 {
! 264: execsql "SELECT SUBSTR('hi\u1234ho', 0, 2)"
! 265: } "h"
! 266: do_test func2-2.2.3 {
! 267: execsql "SELECT SUBSTR('hi\u1234ho', 0, 3)"
! 268: } "hi"
! 269: do_test func2-2.2.4 {
! 270: execsql "SELECT SUBSTR('hi\u1234ho', 0, 4)"
! 271: } "hi\u1234"
! 272: do_test func2-2.2.5 {
! 273: execsql "SELECT SUBSTR('hi\u1234ho', 0, 5)"
! 274: } "hi\u1234h"
! 275: do_test func2-2.2.6 {
! 276: execsql "SELECT SUBSTR('hi\u1234ho', 0, 6)"
! 277: } "hi\u1234ho"
! 278:
! 279: do_test func2-2.3.0 {
! 280: execsql "SELECT SUBSTR('hi\u1234ho', 1, 0)"
! 281: } {{}}
! 282: do_test func2-2.3.1 {
! 283: execsql "SELECT SUBSTR('hi\u1234ho', 1, 1)"
! 284: } "h"
! 285: do_test func2-2.3.2 {
! 286: execsql "SELECT SUBSTR('hi\u1234ho', 1, 2)"
! 287: } "hi"
! 288: do_test func2-2.3.3 {
! 289: execsql "SELECT SUBSTR('hi\u1234ho', 1, 3)"
! 290: } "hi\u1234"
! 291: do_test func2-2.3.4 {
! 292: execsql "SELECT SUBSTR('hi\u1234ho', 1, 4)"
! 293: } "hi\u1234h"
! 294: do_test func2-2.3.5 {
! 295: execsql "SELECT SUBSTR('hi\u1234ho', 1, 5)"
! 296: } "hi\u1234ho"
! 297: do_test func2-2.3.6 {
! 298: execsql "SELECT SUBSTR('hi\u1234ho', 1, 6)"
! 299: } "hi\u1234ho"
! 300:
! 301: do_test func2-2.4.0 {
! 302: execsql "SELECT SUBSTR('hi\u1234ho', 3, 0)"
! 303: } {{}}
! 304: do_test func2-2.4.1 {
! 305: execsql "SELECT SUBSTR('hi\u1234ho', 3, 1)"
! 306: } "\u1234"
! 307: do_test func2-2.4.2 {
! 308: execsql "SELECT SUBSTR('hi\u1234ho', 3, 2)"
! 309: } "\u1234h"
! 310:
! 311: do_test func2-2.5.0 {
! 312: execsql "SELECT SUBSTR('\u1234', 0, 0)"
! 313: } {{}}
! 314: do_test func2-2.5.1 {
! 315: execsql "SELECT SUBSTR('\u1234', 0, 1)"
! 316: } {{}}
! 317: do_test func2-2.5.2 {
! 318: execsql "SELECT SUBSTR('\u1234', 0, 2)"
! 319: } "\u1234"
! 320: do_test func2-2.5.3 {
! 321: execsql "SELECT SUBSTR('\u1234', 0, 3)"
! 322: } "\u1234"
! 323:
! 324: do_test func2-2.6.0 {
! 325: execsql "SELECT SUBSTR('\u1234', 1, 0)"
! 326: } {{}}
! 327: do_test func2-2.6.1 {
! 328: execsql "SELECT SUBSTR('\u1234', 1, 1)"
! 329: } "\u1234"
! 330: do_test func2-2.6.2 {
! 331: execsql "SELECT SUBSTR('\u1234', 1, 2)"
! 332: } "\u1234"
! 333: do_test func2-2.6.3 {
! 334: execsql "SELECT SUBSTR('\u1234', 1, 3)"
! 335: } "\u1234"
! 336:
! 337: do_test func2-2.7.0 {
! 338: execsql "SELECT SUBSTR('\u1234', 2, 0)"
! 339: } {{}}
! 340: do_test func2-2.7.1 {
! 341: execsql "SELECT SUBSTR('\u1234', 2, 1)"
! 342: } {{}}
! 343: do_test func2-2.7.2 {
! 344: execsql "SELECT SUBSTR('\u1234', 2, 2)"
! 345: } {{}}
! 346:
! 347: do_test func2-2.8.0 {
! 348: execsql "SELECT SUBSTR('\u1234', -1, 0)"
! 349: } {{}}
! 350: do_test func2-2.8.1 {
! 351: execsql "SELECT SUBSTR('\u1234', -1, 1)"
! 352: } "\u1234"
! 353: do_test func2-2.8.2 {
! 354: execsql "SELECT SUBSTR('\u1234', -1, 2)"
! 355: } "\u1234"
! 356: do_test func2-2.8.3 {
! 357: execsql "SELECT SUBSTR('\u1234', -1, 3)"
! 358: } "\u1234"
! 359:
! 360: } ;# End \u1234!=u1234
! 361:
! 362: #----------------------------------------------------------------------------
! 363: # Test cases func2-3.*: substr implementation (blob)
! 364: #
! 365:
! 366: ifcapable {!bloblit} {
! 367: finish_test
! 368: return
! 369: }
! 370:
! 371: do_test func2-3.1.1 {
! 372: set blob [execsql "SELECT x'1234'"]
! 373: bin_to_hex [lindex $blob 0]
! 374: } "1234"
! 375:
! 376: # substr(x,y), substr(x,y,z)
! 377: do_test func2-3.1.2 {
! 378: catchsql {SELECT SUBSTR()}
! 379: } {1 {wrong number of arguments to function SUBSTR()}}
! 380: do_test func2-3.1.3 {
! 381: catchsql {SELECT SUBSTR(x'1234')}
! 382: } {1 {wrong number of arguments to function SUBSTR()}}
! 383: do_test func2-3.1.4 {
! 384: catchsql {SELECT SUBSTR(x'1234', 1,1,1)}
! 385: } {1 {wrong number of arguments to function SUBSTR()}}
! 386:
! 387: do_test func2-3.2.0 {
! 388: set blob [execsql "SELECT SUBSTR(x'1234', 0, 0)"]
! 389: bin_to_hex [lindex $blob 0]
! 390: } {}
! 391: do_test func2-3.2.1 {
! 392: set blob [execsql "SELECT SUBSTR(x'1234', 0, 1)"]
! 393: bin_to_hex [lindex $blob 0]
! 394: } {}
! 395: do_test func2-3.2.2 {
! 396: set blob [execsql "SELECT SUBSTR(x'1234', 0, 2)"]
! 397: bin_to_hex [lindex $blob 0]
! 398: } "12"
! 399: do_test func2-3.2.3 {
! 400: set blob [execsql "SELECT SUBSTR(x'1234', 0, 3)"]
! 401: bin_to_hex [lindex $blob 0]
! 402: } "1234"
! 403:
! 404: do_test func2-3.3.0 {
! 405: set blob [execsql "SELECT SUBSTR(x'1234', 1, 0)"]
! 406: bin_to_hex [lindex $blob 0]
! 407: } {}
! 408: do_test func2-3.3.1 {
! 409: set blob [execsql "SELECT SUBSTR(x'1234', 1, 1)"]
! 410: bin_to_hex [lindex $blob 0]
! 411: } "12"
! 412: do_test func2-3.3.2 {
! 413: set blob [execsql "SELECT SUBSTR(x'1234', 1, 2)"]
! 414: bin_to_hex [lindex $blob 0]
! 415: } "1234"
! 416: do_test func2-3.3.3 {
! 417: set blob [execsql "SELECT SUBSTR(x'1234', 1, 3)"]
! 418: bin_to_hex [lindex $blob 0]
! 419: } "1234"
! 420:
! 421: do_test func2-3.4.0 {
! 422: set blob [execsql "SELECT SUBSTR(x'1234', -1, 0)"]
! 423: bin_to_hex [lindex $blob 0]
! 424: } {}
! 425: do_test func2-3.4.1 {
! 426: set blob [execsql "SELECT SUBSTR(x'1234', -1, 1)"]
! 427: bin_to_hex [lindex $blob 0]
! 428: } "34"
! 429: do_test func2-3.4.2 {
! 430: set blob [execsql "SELECT SUBSTR(x'1234', -1, 2)"]
! 431: bin_to_hex [lindex $blob 0]
! 432: } "34"
! 433: do_test func2-3.4.3 {
! 434: set blob [execsql "SELECT SUBSTR(x'1234', -1, 3)"]
! 435: bin_to_hex [lindex $blob 0]
! 436: } "34"
! 437:
! 438: do_test func2-3.5.0 {
! 439: set blob [execsql "SELECT SUBSTR(x'1234', -2, 0)"]
! 440: bin_to_hex [lindex $blob 0]
! 441: } {}
! 442: do_test func2-3.5.1 {
! 443: set blob [execsql "SELECT SUBSTR(x'1234', -2, 1)"]
! 444: bin_to_hex [lindex $blob 0]
! 445: } "12"
! 446: do_test func2-3.5.2 {
! 447: set blob [execsql "SELECT SUBSTR(x'1234', -2, 2)"]
! 448: bin_to_hex [lindex $blob 0]
! 449: } "1234"
! 450: do_test func2-3.5.3 {
! 451: set blob [execsql "SELECT SUBSTR(x'1234', -2, 3)"]
! 452: bin_to_hex [lindex $blob 0]
! 453: } "1234"
! 454:
! 455: do_test func2-3.6.0 {
! 456: set blob [execsql "SELECT SUBSTR(x'1234', -1, 0)"]
! 457: bin_to_hex [lindex $blob 0]
! 458: } {}
! 459: do_test func2-3.6.1 {
! 460: set blob [execsql "SELECT SUBSTR(x'1234', -1, -1)"]
! 461: bin_to_hex [lindex $blob 0]
! 462: } "12"
! 463: do_test func2-3.6.2 {
! 464: set blob [execsql "SELECT SUBSTR(x'1234', -1, -2)"]
! 465: bin_to_hex [lindex $blob 0]
! 466: } "12"
! 467: do_test func2-3.6.3 {
! 468: set blob [execsql "SELECT SUBSTR(x'1234', -1, -3)"]
! 469: bin_to_hex [lindex $blob 0]
! 470: } "12"
! 471:
! 472: do_test func2-3.7.0 {
! 473: set blob [execsql "SELECT SUBSTR(x'1234', -2, 0)"]
! 474: bin_to_hex [lindex $blob 0]
! 475: } {}
! 476: do_test func2-3.7.1 {
! 477: set blob [execsql "SELECT SUBSTR(x'1234', -2, -1)"]
! 478: bin_to_hex [lindex $blob 0]
! 479: } {}
! 480: do_test func2-3.7.2 {
! 481: set blob [execsql "SELECT SUBSTR(x'1234', -2, -2)"]
! 482: bin_to_hex [lindex $blob 0]
! 483: } {}
! 484:
! 485: do_test func2-3.8.0 {
! 486: set blob [execsql "SELECT SUBSTR(x'1234', 1, 0)"]
! 487: bin_to_hex [lindex $blob 0]
! 488: } {}
! 489: do_test func2-3.8.1 {
! 490: set blob [execsql "SELECT SUBSTR(x'1234', 1, -1)"]
! 491: bin_to_hex [lindex $blob 0]
! 492: } {}
! 493: do_test func2-3.8.2 {
! 494: set blob [execsql "SELECT SUBSTR(x'1234', 1, -2)"]
! 495: bin_to_hex [lindex $blob 0]
! 496: } {}
! 497:
! 498: do_test func2-3.9.0 {
! 499: set blob [execsql "SELECT SUBSTR(x'1234', 2, 0)"]
! 500: bin_to_hex [lindex $blob 0]
! 501: } {}
! 502: do_test func2-3.9.1 {
! 503: set blob [execsql "SELECT SUBSTR(x'1234', 2, -1)"]
! 504: bin_to_hex [lindex $blob 0]
! 505: } "12"
! 506: do_test func2-3.9.2 {
! 507: set blob [execsql "SELECT SUBSTR(x'1234', 2, -2)"]
! 508: bin_to_hex [lindex $blob 0]
! 509: } "12"
! 510:
! 511: finish_test
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>