Annotation of embedaddon/sqlite3/test/func2.test, revision 1.1.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>