Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Use more lowercase hex in documentation and test-cases. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | unchained |
Files: | files | file ages | folders |
SHA3-256: |
d2202d97c8efe23799f78527cd9bf0f7 |
User & Date: | pooryorick 2024-06-29 22:49:20 |
Context
2024-06-29
| ||
23:42 | Bug [5be203d6ca] - io-7.3 failure. check-in: 2906d33993 user: pooryorick tags: unchained | |
22:49 | Use more lowercase hex in documentation and test-cases. check-in: d2202d97c8 user: pooryorick tags: unchained | |
21:39 | Adapt tcltest::Asciify, so it's usable for Tcl 8.5 and 8.6 too check-in: ba84bf2806 user: pooryorick tags: unchained | |
2023-07-04
| ||
15:13 | Merge 8.7 check-in: 5945f7349d user: jan.nijtmans tags: trunk, main | |
Changes
Changes to doc/chan.n.
︙ | ︙ | |||
241 242 243 244 245 246 247 | the number of characters copied. Leverages internal buffers to avoid extra copies and to avoid buffering too much data in main memory when copying large files to slow destinations like network sockets. .RS .PP \fB\-size\fR limits the number of characters copied. .PP | | | | 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 | the number of characters copied. Leverages internal buffers to avoid extra copies and to avoid buffering too much data in main memory when copying large files to slow destinations like network sockets. .RS .PP \fB\-size\fR limits the number of characters copied. .PP If \fB\-command\fR is given, \fBchan copy\fR returns immediately, works in the background, and calls \fIcallback\fR when the copy completes, providing as an additional argument the number of characters written to \fIoutputChan\fR. If an error occurs during the background copy, another argument provides message for the error. \fIinputChan\fR and \fIoutputChan\fR are automatically configured for non-blocking mode if needed. Background copying only works correctly if events are being processed, e.g. via \fBvwait\fR or Tk. .PP During a background copy no other read operation may be performed on \fIinputChan\fR, and no write operation may be performed on \fIoutputChan\fR. However, write operations may by performed on |
︙ | ︙ |
Changes to tests/cmdAH.test.
︙ | ︙ | |||
203 204 205 206 207 208 209 | } if {$enc eq "utf-16$endian" || $enc eq "utf-32$endian"} { return [string range $enc 0 5] } return "" } | < < < < < < < < < < < < < < < < < < | 203 204 205 206 207 208 209 210 211 212 213 214 215 216 | } if {$enc eq "utf-16$endian" || $enc eq "utf-32$endian"} { return [string range $enc 0 5] } return "" } # # Check errors for invalid number of arguments proc badnumargs {id cmd cmdargs} { variable numargErrors test $id.a "Syntax error: $cmd $cmdargs" \ -body [list {*}$cmd {*}$cmdargs] \ -result $numargErrors($cmd) \ |
︙ | ︙ | |||
349 350 351 352 353 354 355 | unknownencodingtest cmdAH-4.3.6 {convertfrom -failindex ABC} unknownencodingtest cmdAH-4.3.7 {convertfrom -profile ABC} unknownencodingtest cmdAH-4.3.8 {convertfrom nosuchencoding ABC} unknownencodingtest cmdAH-4.3.9 {convertfrom -failindex VAR -profile ABC} unknownencodingtest cmdAH-4.3.10 {convertfrom -profile strict -failindex ABC} testconvert cmdAH-4.3.11 { encoding convertfrom jis0208 \x38\x43 | | | | 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 | unknownencodingtest cmdAH-4.3.6 {convertfrom -failindex ABC} unknownencodingtest cmdAH-4.3.7 {convertfrom -profile ABC} unknownencodingtest cmdAH-4.3.8 {convertfrom nosuchencoding ABC} unknownencodingtest cmdAH-4.3.9 {convertfrom -failindex VAR -profile ABC} unknownencodingtest cmdAH-4.3.10 {convertfrom -profile strict -failindex ABC} testconvert cmdAH-4.3.11 { encoding convertfrom jis0208 \x38\x43 } 乎 -setup { set system [encoding system] encoding system iso8859-1 } -cleanup { encoding system $system } # Verify single arg defaults to system encoding testconvert cmdAH-4.3.12 { encoding convertfrom \x38\x43 } 乎 -setup { set system [encoding system] encoding system jis0208 } -cleanup { encoding system $system } # convertfrom ?-profile? : valid byte sequences |
︙ | ︙ | |||
511 512 513 514 515 516 517 | # Test that last two args always treated as ENCODING DATA unknownencodingtest cmdAH-4.4.6 {convertto -failindex ABC} unknownencodingtest cmdAH-4.4.7 {convertto -profile ABC} unknownencodingtest cmdAH-4.4.8 {convertto nosuchencoding ABC} unknownencodingtest cmdAH-4.4.9 {convertto -failindex VAR -profile ABC} unknownencodingtest cmdAH-4.4.10 {convertto -profile strict -failindex ABC} testconvert cmdAH-4.4.11 { | | | | | | 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 | # Test that last two args always treated as ENCODING DATA unknownencodingtest cmdAH-4.4.6 {convertto -failindex ABC} unknownencodingtest cmdAH-4.4.7 {convertto -profile ABC} unknownencodingtest cmdAH-4.4.8 {convertto nosuchencoding ABC} unknownencodingtest cmdAH-4.4.9 {convertto -failindex VAR -profile ABC} unknownencodingtest cmdAH-4.4.10 {convertto -profile strict -failindex ABC} testconvert cmdAH-4.4.11 { encoding convertto jis0208 乎 } \x38\x43 -setup { set system [encoding system] encoding system iso8859-1 } -cleanup { encoding system $system } # Verify single arg defaults to system encoding testconvert cmdAH-4.4.12 { encoding convertto 乎 } \x38\x43 -setup { set system [encoding system] encoding system jis0208 } -cleanup { encoding system $system } # convertto ?-profile? : valid byte sequences foreach {enc str hex ctrl comment} $encValidStrings { if {"knownBug" in $ctrl} continue set bytes [binary decode hex $hex] set printable [tcltest::Asciify $str] set prefix A set suffix B set prefix_bytes [encoding convertto $enc A] set suffix_bytes [encoding convertto $enc B] foreach profile $encProfiles { testprofile cmdAH-4.4.13.$printable.solo convertto $enc $profile $str $bytes testprofile cmdAH-4.4.13.$printable.lead convertto $enc $profile $str$suffix $bytes$suffix_bytes testprofile cmdAH-4.4.13.$printable.tail convertto $enc $profile $prefix$str $prefix_bytes$bytes testprofile cmdAH-4.4.13.$printable.middle convertto $enc $profile $prefix$str$suffix $prefix_bytes$bytes$suffix_bytes } } # convertto ?-profile? : invalid byte sequences foreach {enc str profile hex failidx ctrl comment} $encUnencodableStrings { if {"knownBug" in $ctrl} continue set bytes [binary decode hex $hex] set printable [tcltest::Asciify $str] set prefix A set suffix B set prefix_bytes [encoding convertto $enc $prefix] set suffix_bytes [encoding convertto $enc $suffix] set prefixLen [string length $prefix_bytes] set result [list $bytes] # TODO - if the bad byte is unprintable, tcltest errors out when printing a mismatch |
︙ | ︙ | |||
600 601 602 603 604 605 606 | } } # convertto -failindex ?-profile? - valid data foreach {enc str hex ctrl comment} $encValidStrings { if {"knownBug" in $ctrl} continue set bytes [binary decode hex $hex] | | | | 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 | } } # convertto -failindex ?-profile? - valid data foreach {enc str hex ctrl comment} $encValidStrings { if {"knownBug" in $ctrl} continue set bytes [binary decode hex $hex] set printable [tcltest::Asciify $str] set prefix A set suffix B set prefix_bytes [encoding convertto $enc A] set suffix_bytes [encoding convertto $enc B] foreach profile $encProfiles { testfailindex cmdAH-4.4.14.$enc.$printable.solo convertto $enc $str $bytes -1 $profile testfailindex cmdAH-4.4.14.$enc.$printable.lead convertto $enc $str$suffix $bytes$suffix_bytes -1 $profile testfailindex cmdAH-4.4.14.$enc.$printable.tail convertto $enc $prefix$str $prefix_bytes$bytes -1 $profile testfailindex cmdAH-4.4.14.$enc.$printable.middle convertto $enc $prefix$str$suffix $prefix_bytes$bytes$suffix_bytes -1 $profile } } # convertto -failindex ?-profile? - invalid data foreach {enc str profile hex failidx ctrl comment} $encUnencodableStrings { if {"knownBug" in $ctrl} continue set bytes [binary decode hex $hex] set printable [tcltest::Asciify $str] set prefix A set suffix B set prefixLen [string length [encoding convertto $enc $prefix]] if {$ctrl eq {} || "solo" in $ctrl} { testfailindex cmdAH-4.4.14.$printable.solo convertto $enc $str $bytes $failidx $profile } if {$ctrl eq {} || "lead" in $ctrl} { |
︙ | ︙ |
Changes to tests/encoding.test.
︙ | ︙ | |||
36 37 38 39 40 41 42 | # Some tests require the testencoding command testConstraint testencoding [llength [info commands testencoding]] testConstraint testbytestring [llength [info commands testbytestring]] testConstraint teststringbytes [llength [info commands teststringbytes]] testConstraint exec [llength [info commands exec]] testConstraint testgetencpath [llength [info commands testgetencpath]] | | | 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | # Some tests require the testencoding command testConstraint testencoding [llength [info commands testencoding]] testConstraint testbytestring [llength [info commands testbytestring]] testConstraint teststringbytes [llength [info commands teststringbytes]] testConstraint exec [llength [info commands exec]] testConstraint testgetencpath [llength [info commands testgetencpath]] testConstraint fullutf [expr {[format %c 0x010000] ne "\ufffd"}] testConstraint utf32 [expr {[testConstraint fullutf] && [string length [format %c 0x10000]] == 1}] # TclInitEncodingSubsystem is tested by the rest of this file # TclFinalizeEncodingSubsystem is not currently tested test encoding-1.1 {Tcl_GetEncoding: system encoding} -setup { |
︙ | ︙ | |||
84 85 86 87 88 89 90 | encoding system iso8859-1 llength shiftjis ;# Shimmer away any cache of Tcl_Encoding lappend x [catch {encoding convertto shiftjis 乎} msg] $msg } -cleanup { encoding system iso8859-1 encoding dirs $path encoding system $system | | | 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | encoding system iso8859-1 llength shiftjis ;# Shimmer away any cache of Tcl_Encoding lappend x [catch {encoding convertto shiftjis 乎} msg] $msg } -cleanup { encoding system iso8859-1 encoding dirs $path encoding system $system } -result "\x8c\xc1 1 {unknown encoding \"shiftjis\"}" test encoding-3.1 {Tcl_GetEncodingName, NULL} -setup { set old [encoding system] } -body { encoding system shiftjis encoding system } -cleanup { |
︙ | ︙ | |||
190 191 192 193 194 195 196 | set x [encoding convertfrom jis0208 $a] list [string length $x] [string index $x 0] } "512 乎" test encoding-8.1 {Tcl_ExternalToUtf} { set f [open [file join [temporaryDirectory] dummy] w] fconfigure $f -translation binary -encoding iso8859-1 | | | 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 | set x [encoding convertfrom jis0208 $a] list [string length $x] [string index $x 0] } "512 乎" test encoding-8.1 {Tcl_ExternalToUtf} { set f [open [file join [temporaryDirectory] dummy] w] fconfigure $f -translation binary -encoding iso8859-1 puts -nonewline $f "ab\x8c\xc1g" close $f set f [open [file join [temporaryDirectory] dummy] r] fconfigure $f -translation binary -encoding shiftjis set x [read $f] close $f file delete [file join [temporaryDirectory] dummy] return $x |
︙ | ︙ | |||
226 227 228 229 230 231 232 | close $f set f [open [file join [temporaryDirectory] dummy] r] fconfigure $f -translation binary -encoding iso8859-1 set x [read $f] close $f file delete [file join [temporaryDirectory] dummy] return $x | | < < < < < < < < < < < < | | | | | | | 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 | close $f set f [open [file join [temporaryDirectory] dummy] r] fconfigure $f -translation binary -encoding iso8859-1 set x [read $f] close $f file delete [file join [temporaryDirectory] dummy] return $x } "ab\x8c\xc1g" test encoding-11.1 {LoadEncodingFile: unknown encoding} {testencoding} { set system [encoding system] set path [encoding dirs] encoding system iso8859-1 encoding dirs {} llength jis0208 ;# Shimmer any cached Tcl_Encoding in shared literal set x [list [catch {encoding convertto jis0208 乎} msg] $msg] encoding dirs $path encoding system $system lappend x [encoding convertto jis0208 乎] } {1 {unknown encoding "jis0208"} 8C} test encoding-11.2 {LoadEncodingFile: single-byte} { encoding convertfrom jis0201 \xa1 } 。 test encoding-11.3 {LoadEncodingFile: double-byte} { encoding convertfrom jis0208 8C } 乎 test encoding-11.4 {LoadEncodingFile: multi-byte} { encoding convertfrom shiftjis \x8c\xc1 } 乎 test encoding-11.5 {LoadEncodingFile: escape file} { encoding convertto iso2022 乎 } \x1b\$B8C\x1b(B test encoding-11.5.1 {LoadEncodingFile: escape file} { encoding convertto iso2022-jp 乎 } \x1b\$B8C\x1b(B test encoding-11.6 {LoadEncodingFile: invalid file} -constraints {testencoding} -setup { set system [encoding system] set path [encoding dirs] encoding system iso8859-1 } -body { cd [temporaryDirectory] encoding dirs [file join tmp encoding] |
︙ | ︙ | |||
289 290 291 292 293 294 295 | removeDirectory [file join tmp encoding] removeDirectory tmp cd [workingDirectory] encoding dirs $path encoding system $system } -result {invalid encoding file "splat"} test encoding-11.8 {encoding: extended Unicode UTF-16} { | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 | removeDirectory [file join tmp encoding] removeDirectory tmp cd [workingDirectory] encoding dirs $path encoding system $system } -result {invalid encoding file "splat"} test encoding-11.8 {encoding: extended Unicode UTF-16} { encoding convertto utf-16le 😹 } =Ø9Þ test encoding-11.9 {encoding: extended Unicode UTF-16} { encoding convertto utf-16be 😹 } Ø=Þ9 test encoding-11.10 {encoding: extended Unicode UTF-32} { encoding convertto utf-32le 😹 } 9\xf6\x01\x00 test encoding-11.11 {encoding: extended Unicode UTF-32} { encoding convertto utf-32be 😹 } \x00\x01\xf69 # OpenEncodingFile is fully tested by the rest of the tests in this file. test encoding-12.1 {LoadTableEncoding: normal encoding} { set x [encoding convertto iso8859-3 Ġ] append x [encoding convertto -profile tcl8 iso8859-3 Õ] append x [encoding convertfrom iso8859-3 Õ] } "Õ?Ġ" test encoding-12.2 {LoadTableEncoding: single-byte encoding} { set x [encoding convertto iso8859-3 abĠg] append x [encoding convertfrom iso8859-3 abÕg] } "abÕgabĠg" test encoding-12.3 {LoadTableEncoding: multi-byte encoding} { set x [encoding convertto shiftjis ab乎g] append x [encoding convertfrom shiftjis ab\x8c\xc1g] } "ab\x8c\xc1gab乎g" test encoding-12.4 {LoadTableEncoding: double-byte encoding} { set x [encoding convertto jis0208 乎α] append x [encoding convertfrom jis0208 8C&A] } "8C&A乎α" test encoding-12.5 {LoadTableEncoding: symbol encoding} { set x [encoding convertto symbol γ] append x [encoding convertto symbol g] append x [encoding convertfrom symbol g] } "ggγ" test encoding-13.1 {LoadEscapeTable} { encoding convertto iso2022 ab乎棙g } ab\x1b\$B8C\x1b\$\(DD%\x1b(Bg test encoding-15.1 {UtfToUtfProc} { encoding convertto utf-8 £ } "\xc2\xa3" test encoding-15.2 {UtfToUtfProc null character output} testbytestring { binary scan [testbytestring [encoding convertto utf-8 \x00]] H* z set z } 00 test encoding-15.3 {UtfToUtfProc null character input} teststringbytes { set y [encoding convertfrom utf-8 [encoding convertto utf-8 \x00]] binary scan [teststringbytes $y] H* z set z } c080 test encoding-15.4 {UtfToUtfProc emoji character input} -body { set x \xed\xa0\xbd\xed\xb8\x82 set y [encoding convertfrom -profile tcl8 utf-8 \xed\xa0\xbd\xed\xb8\x82] list [string length $x] $y } -result "6 \ud83d\ude02" test encoding-15.5 {UtfToUtfProc emoji character input} { set x \xf0\x9f\x98\x82 set y [encoding convertfrom utf-8 \xf0\x9f\x98\x82] list [string length $x] $y } "4 😂" test encoding-15.6 {UtfToUtfProc emoji character output} utf32 { set x \ude02\ud83d\ude02\ud83d set y [encoding convertto -profile tcl8 utf-8 \ude02\ud83d\ude02\ud83d] binary scan $y H* z list [string length $y] $z } {12 edb882eda0bdedb882eda0bd} test encoding-15.7 {UtfToUtfProc emoji character output} { set x \ude02\ud83d\ud83d set y [encoding convertto -profile tcl8 utf-8 \ude02\ud83d\ud83d] binary scan $y H* z list [string length $x] [string length $y] $z } {3 9 edb882eda0bdeda0bd} test encoding-15.8 {UtfToUtfProc emoji character output} { set x \ude02\ud83dé set y [encoding convertto -profile tcl8 utf-8 \ude02\ud83dé] binary scan $y H* z list [string length $x] [string length $y] $z } {3 8 edb882eda0bdc3a9} test encoding-15.9 {UtfToUtfProc emoji character output} { set x \ude02\ud83dx set y [encoding convertto -profile tcl8 utf-8 \ude02\ud83dX] binary scan $y H* z list [string length $x] [string length $y] $z } {3 7 edb882eda0bd58} test encoding-15.10 {UtfToUtfProc high surrogate character output} { set x \ude02é set y [encoding convertto -profile tcl8 utf-8 \ude02é] binary scan $y H* z list [string length $x] [string length $y] $z } {2 5 edb882c3a9} test encoding-15.11 {UtfToUtfProc low surrogate character output} { set x \uda02é set y [encoding convertto -profile tcl8 utf-8 \uDA02é] binary scan $y H* z list [string length $x] [string length $y] $z } {2 5 eda882c3a9} test encoding-15.12 {UtfToUtfProc high surrogate character output} { set x \ude02Y set y [encoding convertto -profile tcl8 utf-8 \ude02Y] binary scan $y H* z list [string length $x] [string length $y] $z } {2 4 edb88259} test encoding-15.13 {UtfToUtfProc low surrogate character output} { set x \uda02Y set y [encoding convertto -profile tcl8 utf-8 \uda02Y] binary scan $y H* z list [string length $x] [string length $y] $z } {2 4 eda88259} test encoding-15.14 {UtfToUtfProc high surrogate character output} { set x \ude02 set y [encoding convertto -profile tcl8 utf-8 \ude02] binary scan $y H* z list [string length $x] [string length $y] $z } {1 3 edb882} test encoding-15.15 {UtfToUtfProc low surrogate character output} { set x \uda02 set y [encoding convertto -profile tcl8 utf-8 \uda02] binary scan $y H* z list [string length $x] [string length $y] $z } {1 3 eda882} test encoding-15.16 {UtfToUtfProc: Invalid 4-byte UTF-8, see [ed29806ba]} { set x \xf0\xa0\xa1\xc2 set y [encoding convertfrom -profile tcl8 utf-8 \xf0\xa0\xa1\xc2] list [string length $x] $y } "4 \xf0\xa0\xa1\xc2" test encoding-15.17 {UtfToUtfProc emoji character output} { set x 😂 set y [encoding convertto utf-8 😂] binary scan $y H* z list [string length $y] $z } {4 f09f9882} test encoding-15.18 {UtfToUtfProc CESU-8 6-byte sequence} { set y [encoding convertto cesu-8 \U10000] binary scan $y H* z list [string length $y] $z } {6 eda080edb080} test encoding-15.19 {UtfToUtfProc CESU-8 upper surrogate} { set y [encoding convertto cesu-8 \ud800] binary scan $y H* z list [string length $y] $z } {3 eda080} test encoding-15.20 {UtfToUtfProc CESU-8 lower surrogate} { set y [encoding convertto cesu-8 \udc00] binary scan $y H* z list [string length $y] $z } {3 edb080} test encoding-15.21 {UtfToUtfProc CESU-8 noncharacter} { set y [encoding convertto cesu-8 \uffff] binary scan $y H* z list [string length $y] $z } {3 efbfbf} test encoding-15.22 {UtfToUtfProc CESU-8 bug [048dd20b4171c8da]} { set y [encoding convertto cesu-8 \x80] binary scan $y H* z list [string length $y] $z } {2 c280} test encoding-15.23 {UtfToUtfProc CESU-8 bug [048dd20b4171c8da]} { set y [encoding convertto cesu-8 \u100] binary scan $y H* z list [string length $y] $z } {2 c480} test encoding-15.24 {UtfToUtfProc CESU-8 bug [048dd20b4171c8da]} { set y [encoding convertto cesu-8 \u3ff] binary scan $y H* z list [string length $y] $z } {2 cfbf} test encoding-15.25 {UtfToUtfProc CESU-8} { encoding convertfrom cesu-8 \x00 } \x00 test {encoding-15.26 cesu-8 tclnull default} {UtfToUtfProc CESU-8} -body { encoding convertfrom cesu-8 \xc0\x80 } -returnCodes 1 -result {unexpected byte sequence starting at index 0: '\xC0'} test {encoding-15.26 cesu-8 tclnull strict} {UtfToUtfProc CESU-8} -body { encoding convertfrom -profile strict cesu-8 \xc0\x80 } -returnCodes 1 -result {unexpected byte sequence starting at index 0: '\xC0'} test {encoding-15.26 cesu-8 tclnull tcl8} {UtfToUtfProc CESU-8} { encoding convertfrom -profile tcl8 cesu-8 \xc0\x80 } \x00 test encoding-15.27 {UtfToUtfProc -profile strict CESU-8} { encoding convertfrom -profile strict cesu-8 \x00 } \x00 test encoding-15.28 {UtfToUtfProc -profile strict CESU-8} -body { encoding convertfrom -profile strict cesu-8 \xc0\x80 } -returnCodes 1 -result {unexpected byte sequence starting at index 0: '\xC0'} test encoding-15.29 {UtfToUtfProc CESU-8} { encoding convertto cesu-8 \x00 } \x00 test encoding-15.30 {UtfToUtfProc -profile strict CESU-8} { encoding convertto -profile strict cesu-8 \x00 } \x00 test encoding-15.31 {UtfToUtfProc -profile strict CESU-8 (bytes F0-F4 are invalid)} -body { encoding convertfrom -profile strict cesu-8 \xf1\x86\x83\x9c } -returnCodes 1 -result {unexpected byte sequence starting at index 0: '\xF1'} test encoding-16.1 {Utf16ToUtfProc} -body { set val [encoding convertfrom utf-16 NN] list $val [format %x [scan $val %c]] } -result "乎 4e4e" test encoding-16.2 {Utf16ToUtfProc} -body { set val [encoding convertfrom utf-16 "\xd8\xd8\xdc\xdc"] list $val [format %x [scan $val %c]] } -result "\U460dc 460dc" test encoding-16.3 {Utf16ToUtfProc} -body { set val [encoding convertfrom -profile tcl8 utf-16 "\xdc\xdc"] list $val [format %x [scan $val %c]] } -result "\udcdc dcdc" test encoding-16.4 {Ucs2ToUtfProc} -body { set val [encoding convertfrom ucs-2 NN] list $val [format %x [scan $val %c]] } -result "乎 4e4e" test encoding-16.5 {Ucs2ToUtfProc} -body { set val [encoding convertfrom ucs-2 "\xd8\xd8\xdc\xdc"] list $val [format %x [scan $val %c]] } -result "\U460dc 460dc" test encoding-16.6 {Utf32ToUtfProc} -body { set val [encoding convertfrom -profile strict utf-32le NN\0\0] list $val [format %x [scan $val %c]] } -result "乎 4e4e" test encoding-16.7 {Utf32ToUtfProc} -body { set val [encoding convertfrom -profile strict utf-32be \0\0NN] list $val [format %x [scan $val %c]] } -result "乎 4e4e" test encoding-16.8 {Utf32ToUtfProc} -body { set val [encoding convertfrom -profile tcl8 utf-32 \x41\x00\x00\x41] list $val [format %x [scan $val %c]] } -result "\ufffd fffd" test encoding-16.9 {Utf32ToUtfProc} -constraints utf32 -body { encoding convertfrom -profile tcl8 utf-32le \x00\xd8\x00\x00 } -result \ud800 test encoding-16.10 {Utf32ToUtfProc} -body { encoding convertfrom -profile tcl8 utf-32le \x00\xdc\x00\x00 } -result \udc00 test encoding-16.11 {Utf32ToUtfProc} -body { encoding convertfrom -profile tcl8 utf-32le \x00\xd8\x00\x00\x00\xdc\x00\x00 } -result \ud800\udc00 test encoding-16.12 {Utf32ToUtfProc} -constraints utf32 -body { encoding convertfrom -profile tcl8 utf-32le \x00\xdc\x00\x00\x00\xd8\x00\x00 } -result \udc00\ud800 test encoding-16.13 {Utf16ToUtfProc} -body { encoding convertfrom -profile tcl8 utf-16le \x00\xd8 } -result \ud800 test encoding-16.14 {Utf16ToUtfProc} -body { encoding convertfrom -profile tcl8 utf-16le \x00\xdc } -result \udc00 test encoding-16.15 {Utf16ToUtfProc} -body { encoding convertfrom utf-16le \x00\xd8\x00\xdc } -result \U010000 test encoding-16.16 {Utf16ToUtfProc} -body { encoding convertfrom -profile tcl8 utf-16le \x00\xdc\x00\xd8 } -result \udc00\ud800 test encoding-16.17 {Utf32ToUtfProc} -body { list [encoding convertfrom -profile strict -failindex idx utf-32le \x41\x00\x00\x00\x00\xd8\x00\x00\x42\x00\x00\x00] [set idx] } -result {A 4} test encoding-16.18 { Utf16ToUtfProc, Tcl_UniCharToUtf, surrogate pairs in utf-16 } -body { apply [list {} { for {set i 0xD800} {$i < 0xdbff} {incr i} { for {set j 0xDC00} {$j < 0xdfff} {incr j} { set string [binary format S2 [list $i $j]] set status [catch { set decoded [encoding convertfrom utf-16be $string] set encoded [encoding convertto utf-16be $decoded] }] if {$status || ( $encoded ne $string )} { return [list [format %x $i] [format %x $j]] |
︙ | ︙ | |||
572 573 574 575 576 577 578 | encoding convertfrom -profile strict utf-16 "\x41\x41\x41" } -returnCodes 1 -result {unexpected byte sequence starting at index 2: '\x41'} test {encoding-16.19 tcl8} {Utf16ToUtfProc, bug [d19fe0a5b]} -body { encoding convertfrom -profile strict utf-16 "\x41\x41\x41" } -returnCodes 1 -result {unexpected byte sequence starting at index 2: '\x41'} test encoding-16.19.tcl8 {Utf16ToUtfProc, bug [d19fe0a5b]} -body { encoding convertfrom -profile tcl8 utf-16 "\x41\x41\x41" | | | | | | | | | | | | | | | | | | | | | | | | | | | | 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 | encoding convertfrom -profile strict utf-16 "\x41\x41\x41" } -returnCodes 1 -result {unexpected byte sequence starting at index 2: '\x41'} test {encoding-16.19 tcl8} {Utf16ToUtfProc, bug [d19fe0a5b]} -body { encoding convertfrom -profile strict utf-16 "\x41\x41\x41" } -returnCodes 1 -result {unexpected byte sequence starting at index 2: '\x41'} test encoding-16.19.tcl8 {Utf16ToUtfProc, bug [d19fe0a5b]} -body { encoding convertfrom -profile tcl8 utf-16 "\x41\x41\x41" } -result \u4141\ufffd test encoding-16.19.strict {Utf16ToUtfProc, bug [d19fe0a5b]} -body { encoding convertfrom -profile strict utf-16 "\x41\x41\x41" } -returnCodes 1 -result {unexpected byte sequence starting at index 2: '\x41'} test encoding-16.20 {utf16ToUtfProc, bug [d19fe0a5b]} -body { encoding convertfrom utf-16 "\xd8\xd8" } -returnCodes 1 -result {unexpected byte sequence starting at index 0: '\xD8'} test encoding-16.21.tcl8 {Utf32ToUtfProc, bug [d19fe0a5b]} -body { encoding convertfrom -profile tcl8 utf-32 "\x00\x00\x00\x00\x41\x41" } -result \x00\ufffd test encoding-16.21.strict {Utf32ToUtfProc, bug [d19fe0a5b]} -body { encoding convertfrom -profile strict utf-32 "\x00\x00\x00\x00\x41\x41" } -returnCodes 1 -result {unexpected byte sequence starting at index 4: '\x41'} test encoding-16.22 {Utf16ToUtfProc, strict, bug [db7a085bd9]} -body { encoding convertfrom -profile strict utf-16le \x00\xd8 } -returnCodes 1 -result {unexpected byte sequence starting at index 0: '\x00'} test encoding-16.23 {Utf16ToUtfProc, strict, bug [db7a085bd9]} -body { encoding convertfrom -profile strict utf-16le \x00\xdc } -returnCodes 1 -result {unexpected byte sequence starting at index 0: '\x00'} test {encoding-16.4 utf-8 invalid default} {Parse invalid utf-8, strict} -body { string length [encoding convertfrom utf-8 "\xC0\x80"] } -returnCodes 1 -result {unexpected byte sequence starting at index 0: '\xC0'} test {encoding-16.4 utf-8 invalid strict} {Parse invalid utf-8, strict} -body { string length [encoding convertfrom -profile strict utf-8 "\xc0\x80"] } -returnCodes 1 -result {unexpected byte sequence starting at index 0: '\xC0'} test {encoding-16.4 utf-8 invalid tcl8} {UtfToUtfProc utf-8} { encoding convertfrom -profile tcl8 utf-8 \xc0\x80 } \x00 test {encoding-16.25 default} {Utf32ToUtfProc} -body { encoding convertfrom utf-32 "\x01\x00\x00\x01" } -returnCodes 1 -result {unexpected byte sequence starting at index 0: '\x01'} test {encoding-16.25 strict} {Utf32ToUtfProc} -body { encoding convertfrom -profile strict utf-32 "\x01\x00\x00\x01" } -returnCodes 1 -result {unexpected byte sequence starting at index 0: '\x01'} test {encoding-16.25 tcl8} {Utf32ToUtfProc} -body { encoding convertfrom -profile tcl8 utf-32 "\x01\x00\x00\x01" } -result \ufffd test encoding-17.1 {UtfToUtf16Proc} -body { encoding convertto utf-16 "\U460dc" } -result "\xd8\xd8\xdc\xdc" test encoding-17.2 {UtfToUcs2Proc} -body { encoding convertfrom utf-16 \xd8\xd8\xdc\xdc } -result "\U460dc" test encoding-17.3 {UtfToUtf16Proc} -body { encoding convertto -profile tcl8 utf-16be "\udcdc" } -result "\xdc\xdc" test encoding-17.4 {UtfToUtf16Proc} -body { encoding convertto -profile tcl8 utf-16le "\ud8d8" } -result "\xd8\xd8" test encoding-17.5 {UtfToUtf32Proc} -body { encoding convertto utf-32le "\U460dc" } -result "\xdc\x60\x04\x00" test encoding-17.6 {UtfToUtf32Proc} -body { encoding convertto utf-32be "\U460dc" } -result "\x00\x04\x60\xDC" test encoding-17.7 {UtfToUtf16Proc} -body { encoding convertto -profile strict utf-16be "\udcdc" } -returnCodes error -result {unexpected character at index 0: 'U+00DCDC'} test encoding-17.8 {UtfToUtf16Proc} -body { encoding convertto -profile strict utf-16le "\ud8d8" } -returnCodes error -result {unexpected character at index 0: 'U+00D8D8'} test encoding-17.9 {Utf32ToUtfProc} -body { encoding convertfrom -profile strict utf-32 "\xff\xff\xff\xff" } -returnCodes error -result {unexpected byte sequence starting at index 0: '\xFF'} test encoding-17.10 {Utf32ToUtfProc} -body { encoding convertfrom -profile tcl8 utf-32 "\xff\xff\xff\xff" } -result \ufffd test encoding-17.11 {Utf32ToUtfProc} -body { encoding convertfrom -profile strict utf-32le "\x00\xd8\x00\x00" } -returnCodes error -result {unexpected byte sequence starting at index 0: '\x00'} test encoding-17.12 {Utf32ToUtfProc} -body { encoding convertfrom -profile strict utf-32le "\x00\xdc\x00\x00" } -returnCodes error -result {unexpected byte sequence starting at index 0: '\x00'} test encoding-18.1 {TableToUtfProc on invalid input} -body { list [catch {encoding convertto -profile tcl8 jis0208 \\} res] $res } -result {0 !)} test encoding-18.2 {TableToUtfProc on invalid input with -profile strict} -body { list [catch {encoding convertto -profile strict jis0208 \\} res] $res |
︙ | ︙ | |||
697 698 699 700 701 702 703 | test encoding-21.1 {EscapeToUtfProc} { } {} test encoding-22.1 {EscapeFromUtfProc} { } {} set iso2022encData "\x1B\$B;d\$I\$b\$G\$O!\"%A%C%W\$49XF~;~\$K\$4EPO?\$\$\$?\$@\$\$\$?\$4=;=j\$r%-%c%C%7%e%\"%&%H\$N:]\$N\x1B(B | | | | | | 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 | test encoding-21.1 {EscapeToUtfProc} { } {} test encoding-22.1 {EscapeFromUtfProc} { } {} set iso2022encData "\x1B\$B;d\$I\$b\$G\$O!\"%A%C%W\$49XF~;~\$K\$4EPO?\$\$\$?\$@\$\$\$?\$4=;=j\$r%-%c%C%7%e%\"%&%H\$N:]\$N\x1B(B \x1b\$B>.@Z<jAwIU@h\$H\$7\$F;HMQ\$7\$F\$*\$j\$^\$9!#62\$lF~\$j\$^\$9\$,!\"@5\$7\$\$=;=j\$r\$4EPO?\$7\$J\$*\x1b(B \x1b\$B\$*4j\$\$\$\$\$?\$7\$^\$9!#\$^\$?!\"BgJQ62=L\$G\$9\$,!\"=;=jJQ99\$N\$\"\$H!\"F|K\\8l%5!<%S%9It!J\x1b(B casino_japanese@___.com \x1b\$B!K\$^\$G\$4=;=jJQ99:Q\$NO\"Mm\$r\$\$\$?\$@\$1\$J\$\$\$G\x1b(B \x1b\$B\$7\$g\$&\$+!)\x1b(B" set iso2022uniData [encoding convertfrom iso2022-jp $iso2022encData] set iso2022uniData2 "私どもでは、チップご購入時にご登録いただいたご住所をキャッシュアウトの際の 小切手送付先として使用しております。恐れ入りますが、正しい住所をご登録しなお お願いいたします。また、大変恐縮ですが、住所変更のあと、日本語サービス部( casino_japanese@___.com )までご住所変更済の連絡をいただけないで しょうか?" |
︙ | ︙ | |||
769 770 771 772 773 774 775 | set f [open [file join [file dirname [info script]] iso2022.txt]] fconfigure $f -encoding iso2022-jp gets $f } } {} test encoding-24.2 {EscapeFreeProc on open channels} {exec} { # Bug #524674 output | | < > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 | set f [open [file join [file dirname [info script]] iso2022.txt]] fconfigure $f -encoding iso2022-jp gets $f } } {} test encoding-24.2 {EscapeFreeProc on open channels} {exec} { # Bug #524674 output runInSubprocess { encoding system cp1252; # Bug #2891556 crash revelator fconfigure stdout -encoding iso2022-jp puts ab乎棙g set env(TCL_FINALIZE_ON_EXIT) 1 exit } } "ab\x1b\$B8C\x1b\$(DD%\x1b(Bg" test encoding-24.3 {EscapeFreeProc on open channels} {stdio} { # Bug #219314 - if we don't free escape encodings correctly on channel # closure, we go boom set file [makeFile { encoding system iso2022-jp set a "乎乞也"; # 3 Japanese Kanji letters puts $a } iso2022.tcl] set f [open "|[list [interpreter] $file]"] fconfigure $f -encoding iso2022-jp set count [gets $f line] close $f removeFile iso2022.tcl list $count $line } [list 3 乎乞也] test {encoding-24.4 utf-8 invalid strict} {Parse invalid utf-8, strict} -body { encoding convertfrom -profile strict utf-8 "\xc0\x80" } -returnCodes 1 -result {unexpected byte sequence starting at index 0: '\xC0'} test {encoding-24.4 utf-8 invalid tcl8} {UtfToUtfProc utf-8} { encoding convertfrom -profile tcl8 utf-8 \xc0\x80 } \x00 test encoding-24.5 {Parse valid or invalid utf-8} { string length [encoding convertfrom -profile tcl8 utf-8 "\xc0\x81"] } 2 test encoding-24.6 {Parse valid or invalid utf-8} { string length [encoding convertfrom -profile tcl8 utf-8 "\xc1\xBF"] } 2 test encoding-24.7 {Parse valid or invalid utf-8} { string length [encoding convertfrom utf-8 "\xc2\x80"] } 1 test encoding-24.8 {Parse valid or invalid utf-8} { string length [encoding convertfrom -profile tcl8 utf-8 "\xe0\x80\x80"] } 3 test encoding-24.9 {Parse valid or invalid utf-8} { string length [encoding convertfrom -profile tcl8 utf-8 "\xe0\x9f\xbf"] } 3 test encoding-24.10 {Parse valid or invalid utf-8} { string length [encoding convertfrom utf-8 "\xe0\xa0\x80"] } 1 test encoding-24.11 {Parse valid or invalid utf-8} { string length [encoding convertfrom -profile tcl8 utf-8 "\xef\xbf\xbf"] } 1 test encoding-24.12 {Parse invalid utf-8} -body { encoding convertfrom -profile strict utf-8 "\xc0\x81" } -returnCodes 1 -result {unexpected byte sequence starting at index 0: '\xC0'} test encoding-24.13 {Parse invalid utf-8} -body { encoding convertfrom -profile strict utf-8 "\xc1\xbf" } -returnCodes 1 -result {unexpected byte sequence starting at index 0: '\xC1'} test encoding-24.14 {Parse valid utf-8} { expr {[encoding convertfrom utf-8 "\xc2\x80"] eq "\u80"} } 1 test encoding-24.15.default {Parse invalid utf-8, default} -body { encoding convertfrom -profile strict utf-8 "Z\xe0\x80" } -returnCodes 1 -result "unexpected byte sequence starting at index 1: '\\xE0'" test encoding-24.15.strict {Parse invalid utf-8, -profile strict} -body { encoding convertfrom -profile strict utf-8 "Z\xe0\x80" } -returnCodes 1 -result "unexpected byte sequence starting at index 1: '\\xE0'" test encoding-24.15.tcl8 {Parse invalid utf-8, -profile tcl8} -body { encoding convertfrom -profile tcl8 utf-8 "Z\xe0\x80" } -result Z\xe0\u20ac test encoding-24.16 {Parse valid or invalid utf-8} -constraints testbytestring -body { encoding convertto utf-8 [testbytestring "Z\u4343\x80"] } -returnCodes 1 -result {expected byte sequence but character 1 was '䍃' (U+004343)} test encoding-24.17 {Parse valid or invalid utf-8} -constraints testbytestring -body { encoding convertto utf-8 [testbytestring "Z\xe0\x80"] } -result "Z\xC3\xa0\xe2\x82\xac" test encoding-24.18 {Parse valid or invalid utf-8} -constraints testbytestring -body { encoding convertto utf-8 [testbytestring "Z\xe0\x80xxxxxx"] } -result "Z\xc3\xa0\xe2\x82\xacxxxxxx" test encoding-24.19.1 {Parse valid or invalid utf-8} -body { encoding convertto -profile tcl8 utf-8 "ZX\ud800" } -result ZX\xed\xa0\x80 test encoding-24.19.2 {Parse valid or invalid utf-8} -body { encoding convertto -profile strict utf-8 "ZX\ud800" } -returnCodes 1 -match glob -result "unexpected character at index 2: 'U+00D800'" test encoding-24.19.3 {Parse valid or invalid utf-8} -body { encoding convertto utf-8 "ZX\ud800" } -returnCodes 1 -match glob -result "unexpected character at index 2: 'U+00D800'" test encoding-24.20 {Parse with -profile tcl8 but without providing encoding} -body { encoding convertfrom -profile tcl8 "\x20" } -result {wrong # args: should be "::tcl::encoding::convertfrom ?-profile profile? ?-failindex var? encoding data" or "::tcl::encoding::convertfrom data"} -returnCodes error test encoding-24.21 {Parse with -profile tcl8 but without providing encoding} -body { string length [encoding convertto -profile tcl8 "\x20"] } -result {wrong # args: should be "::tcl::encoding::convertto ?-profile profile? ?-failindex var? encoding data" or "::tcl::encoding::convertto data"} -returnCodes error test encoding-24.22 {Syntax error, two encodings} -body { encoding convertfrom iso8859-1 utf-8 "ZX\ud800" } -result {bad option "iso8859-1": must be -profile or -failindex} -returnCodes error test encoding-24.23 {Syntax error, two encodings} -body { encoding convertto iso8859-1 utf-8 "ZX\ud800" } -result {bad option "iso8859-1": must be -profile or -failindex} -returnCodes error test encoding-24.24 {Parse invalid utf-8 with -profile strict} -body { encoding convertfrom -profile strict utf-8 "\xc0\x80\x00\x00" } -returnCodes 1 -result {unexpected byte sequence starting at index 0: '\xC0'} test encoding-24.25 {Parse invalid utf-8 with -profile strict} -body { encoding convertfrom -profile strict utf-8 "\x40\x80\x00\x00" } -returnCodes 1 -result {unexpected byte sequence starting at index 1: '\x80'} test encoding-24.26 {Parse valid utf-8 with -profile strict} -body { encoding convertfrom -profile strict utf-8 "\xf1\x80\x80\x80" } -result \U40000 test encoding-24.27 {Parse invalid utf-8 with -profile strict} -body { encoding convertfrom -profile strict utf-8 "\xf0\x80\x80\x80" } -returnCodes 1 -result {unexpected byte sequence starting at index 0: '\xF0'} test encoding-24.28 {Parse invalid utf-8 with -profile strict} -body { encoding convertfrom -profile strict utf-8 "\xff\x00\x00" } -returnCodes 1 -result {unexpected byte sequence starting at index 0: '\xFF'} test encoding-24.29 {Parse invalid utf-8} -body { encoding convertfrom utf-8 \xef\xbf\xbf } -result \uffff test encoding-24.30 {Parse noncharacter with -profile strict} -body { encoding convertfrom -profile strict utf-8 \xef\xbf\xbf } -result \uffff test encoding-24.31 {Parse invalid utf-8 with -profile tcl8} -body { encoding convertfrom -profile tcl8 utf-8 \xef\xbf\xbf } -result \uffff test encoding-24.33 {Try to generate invalid utf-8} -body { encoding convertto utf-8 \uffff } -result \xef\xbf\xbf test encoding-24.33 {Try to generate invalid utf-8} -body { encoding convertto -profile strict utf-8 \uffff } -result \xef\xbf\xbf test encoding-24.34 {Try to generate invalid utf-8 with -profile tcl8} -body { encoding convertto -profile tcl8 utf-8 \uffff } -result \xef\xbf\xbf test encoding-24.35 {Parse invalid utf-8} -constraints utf32 -body { encoding convertfrom -profile tcl8 utf-8 \xed\xa0\x80 } -result \ud800 test encoding-24.36 {Parse invalid utf-8 with -profile strict} -body { encoding convertfrom -profile strict utf-8 \xed\xa0\x80 } -returnCodes 1 -result {unexpected byte sequence starting at index 0: '\xED'} test encoding-24.37 {Parse invalid utf-8 with -profile tcl8} -body { encoding convertfrom -profile tcl8 utf-8 \xed\xa0\x80 } -result \ud800 test encoding-24.38.1 {Try to generate invalid utf-8} -body { encoding convertto -profile tcl8 utf-8 \ud800 } -result \xed\xa0\x80 test encoding-24.38.2 {Try to generate invalid utf-8} -body { encoding convertto -profile strict utf-8 \ud800 } -returnCodes 1 -result {unexpected character at index 0: 'U+00D800'} test encoding-24.39 {Try to generate invalid utf-8 with -profile strict} -body { encoding convertto -profile strict utf-8 \ud800 } -returnCodes 1 -result {unexpected character at index 0: 'U+00D800'} test encoding-24.40 {Try to generate invalid utf-8 with -profile tcl8} -body { encoding convertto -profile tcl8 utf-8 \ud800 } -result \xed\xa0\x80 test encoding-24.41 {Parse invalid utf-8 with -profile strict} -body { encoding convertfrom -profile strict utf-8 \xed\xa0\x80\xed\xb0\x80 } -returnCodes 1 -result {unexpected byte sequence starting at index 0: '\xED'} test encoding-24.42 {Parse invalid utf-8, fallback to cp1252 [885c86a9a0]} -body { encoding convertfrom -profile tcl8 utf-8 \xf0\x80\x80\x80 } -result \xf0\u20ac\u20ac\u20ac test encoding-24.43 {Parse invalid utf-8, fallback to cp1252 [885c86a9a0]} -body { encoding convertfrom -profile tcl8 utf-8 \x80 } -result \u20ac test encoding-24.44 {Try to generate invalid ucs-2 with -profile strict} -body { encoding convertto -profile strict ucs-2 \ud800 } -returnCodes 1 -result {unexpected character at index 0: 'U+00D800'} test encoding-24.45 {Try to generate invalid ucs-2 with -profile strict} -body { encoding convertto -profile strict ucs-2 \U10000 } -returnCodes 1 -result {unexpected character at index 0: 'U+010000'} file delete [file join [temporaryDirectory] iso2022.txt] |
︙ | ︙ | |||
993 994 995 996 997 998 999 | } proc gen-jisx0208-euc-jp {code} { binary format cc \ [expr {($code >> 8) | 0x80}] [expr {($code & 0xFF) | 0x80}] } proc gen-jisx0208-iso2022-jp {code} { binary format a3cca3 \ | | | 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 | } proc gen-jisx0208-euc-jp {code} { binary format cc \ [expr {($code >> 8) | 0x80}] [expr {($code & 0xFF) | 0x80}] } proc gen-jisx0208-iso2022-jp {code} { binary format a3cca3 \ "\x1b\$B" [expr {$code >> 8}] [expr {$code & 0xFF}] "\x1b(B" } proc gen-jisx0208-cp932 {code} { set c1 [expr {($code >> 8) | 0x80}] set c2 [expr {($code & 0xff)| 0x80}] if {$c1 % 2} { set c1 [expr {($c1 >> 1) + ($c1 < 0xDF ? 0x31 : 0x71)}] incr c2 [expr {- (0x60 + ($c2 < 0xE0))}] |
︙ | ︙ | |||
1110 1111 1112 1113 1114 1115 1116 | runtests test encoding-bug-183a1adcc0-1 {Bug [183a1adcc0] Buffer overflow Tcl_UtfToExternal} -constraints { testencoding } -body { # Note - buffers are initialized to \xff list [catch {testencoding Tcl_UtfToExternal utf-16 A {start end} {} 1} result] $result | | | 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 | runtests test encoding-bug-183a1adcc0-1 {Bug [183a1adcc0] Buffer overflow Tcl_UtfToExternal} -constraints { testencoding } -body { # Note - buffers are initialized to \xff list [catch {testencoding Tcl_UtfToExternal utf-16 A {start end} {} 1} result] $result } -result [list 0 [list nospace {} \xFF]] test encoding-bug-183a1adcc0-2 {Bug [183a1adcc0] Buffer overflow Tcl_UtfToExternal} -constraints { testencoding } -body { # Note - buffers are initialized to \xff list [catch {testencoding Tcl_UtfToExternal utf-16 A {start end} {} 0} result] $result } -result [list 0 [list nospace {} {}]] |
︙ | ︙ | |||
1160 1161 1162 1163 1164 1165 1166 | [testencoding nullength ksc5601] } -result {1 2 4 2 2} test encoding-30.0 {encoding convertto large strings UINT_MAX} -constraints { perf } -body { # Test to ensure not misinterpreted as -1 | | | | | | | | | 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 | [testencoding nullength ksc5601] } -result {1 2 4 2 2} test encoding-30.0 {encoding convertto large strings UINT_MAX} -constraints { perf } -body { # Test to ensure not misinterpreted as -1 list [string length [set s [string repeat A 0xffffffff]]] [string equal $s [encoding convertto ascii $s]] } -result {4294967295 1} test encoding-30.1 {encoding convertto large strings > 4GB} -constraints { perf } -body { list [string length [set s [string repeat A 0x100000000]]] [string equal $s [encoding convertto ascii $s]] } -result {4294967296 1} test encoding-30.2 {encoding convertfrom large strings UINT_MAX} -constraints { perf } -body { # Test to ensure not misinterpreted as -1 list [string length [set s [string repeat A 0xffffffff]]] [string equal $s [encoding convertfrom ascii $s]] } -result {4294967295 1} test encoding-30.3 {encoding convertfrom large strings > 4GB} -constraints { perf } -body { list [string length [set s [string repeat A 0x100000000]]] [string equal $s [encoding convertfrom ascii $s]] } -result {4294967296 1} test encoding-bug-6a3e2cb0f0-1 {Bug [6a3e2cb0f0] - invalid bytes in escape encodings} -body { encoding convertfrom -profile tcl8 iso2022-jp x\x1B\x7aaby } -result x\ufffdy test encoding-bug-6a3e2cb0f0-2 {Bug [6a3e2cb0f0] - invalid bytes in escape encodings} -body { encoding convertfrom -profile strict iso2022-jp x\x1b\x7aaby } -returnCodes error -result {unexpected byte sequence starting at index 1: '\x1B'} test encoding-bug-6a3e2cb0f0-3 {Bug [6a3e2cb0f0] - invalid bytes in escape encodings} -body { encoding convertfrom -profile replace iso2022-jp x\x1b\x7aaby } -result x\ufffdy test encoding-bug-66ffafd309-1-tcl8 {Bug [66ffafd309] - truncated DBCS} -body { encoding convertfrom -profile tcl8 gb12345 x } -result x test encoding-bug-66ffafd309-1-strict {Bug [66ffafd309] - truncated DBCS} -body { encoding convertfrom -profile strict gb12345 x } -result {unexpected byte sequence starting at index 0: '\x78'} -returnCodes error test encoding-bug-66ffafd309-1-replace {Bug [66ffafd309] - truncated DBCS} -body { encoding convertfrom -profile replace gb12345 x } -result \ufffd test encoding-bug-66ffafd309-2-tcl8 {Bug [66ffafd309] - invalid DBCS} -body { # Not truncated but invalid encoding convertfrom -profile tcl8 jis0208 \x78\x79 } -result \x78\x79 test encoding-bug-66ffafd309-2-strict {Bug [66ffafd309] - invalid DBCS} -body { # Not truncated but invalid encoding convertfrom -profile strict jis0208 \x78\x79 } -result {unexpected byte sequence starting at index 1: '\x79'} -returnCodes error test encoding-bug-66ffafd309-2-replace {Bug [66ffafd309] - invalid DBCS} -body { # Not truncated but invalid encoding convertfrom -profile replace jis0208 \x78\x79 } -result \ufffd\ufffd # cleanup namespace delete ::tcl::test::encoding ::tcltest::cleanupTests return # Local Variables: # mode: tcl # End: |
Changes to tests/encodingVectors.tcl.
︙ | ︙ | |||
28 29 30 31 32 33 34 | # # utf-16, utf-32 missing because they are automatically # generated based on le/be versions. set encValidStrings {}; # Reset the table lappend encValidStrings {*}{ ascii \u0000 00 {} {Lowest ASCII} | | | 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | # # utf-16, utf-32 missing because they are automatically # generated based on le/be versions. set encValidStrings {}; # Reset the table lappend encValidStrings {*}{ ascii \u0000 00 {} {Lowest ASCII} ascii \u007F 7F {} {Highest ASCII} ascii \u007D 7D {} {Brace - just to verify test scripts are escaped correctly} ascii \u007B 7B {} {Terminating brace - just to verify test scripts are escaped correctly} utf-8 \u0000 00 {} {Unicode Table 3.7 Row 1} utf-8 \u007F 7F {} {Unicode Table 3.7 Row 1} utf-8 \u0080 C280 {} {Unicode Table 3.7 Row 2} utf-8 \u07FF DFBF {} {Unicode Table 3.7 Row 2} |
︙ | ︙ | |||
589 590 591 592 593 594 595 | utf-32le 00D80000 strict {} 0 {} {High-surrogate} utf-32le 00DC0000 tcl8 \uDC00 -1 {} {Low-surrogate} utf-32le 00DC0000 replace \uFFFD -1 {} {Low-surrogate} utf-32le 00DC0000 strict {} 0 {} {Low-surrogate} utf-32le 00D8000000DC0000 tcl8 \uD800\uDC00 -1 {} {High-low-surrogate-pair} utf-32le 00D8000000DC0000 replace \uFFFD\uFFFD -1 {} {High-low-surrogate-pair} utf-32le 00D8000000DC0000 strict {} 0 {} {High-low-surrogate-pair} | | | | | | | | | | 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 | utf-32le 00D80000 strict {} 0 {} {High-surrogate} utf-32le 00DC0000 tcl8 \uDC00 -1 {} {Low-surrogate} utf-32le 00DC0000 replace \uFFFD -1 {} {Low-surrogate} utf-32le 00DC0000 strict {} 0 {} {Low-surrogate} utf-32le 00D8000000DC0000 tcl8 \uD800\uDC00 -1 {} {High-low-surrogate-pair} utf-32le 00D8000000DC0000 replace \uFFFD\uFFFD -1 {} {High-low-surrogate-pair} utf-32le 00D8000000DC0000 strict {} 0 {} {High-low-surrogate-pair} utf-32le 00001100 tcl8 \uFFFD -1 {} {Out of range} utf-32le 00001100 replace \uFFFD -1 {} {Out of range} utf-32le 00001100 strict {} 0 {} {Out of range} utf-32le FFFFFFFF tcl8 \uFFFD -1 {} {Out of range} utf-32le FFFFFFFF replace \uFFFD -1 {} {Out of range} utf-32le FFFFFFFF strict {} 0 {} {Out of range} utf-32be 41 tcl8 \uFFFD -1 {solo tail} {Truncated} utf-32be 41 replace \uFFFD -1 {solo tail} {Truncated} utf-32be 41 strict {} 0 {solo tail} {Truncated} utf-32be 0041 tcl8 \uFFFD -1 {solo tail} {Truncated} utf-32be 0041 replace \uFFFD -1 {solo} {Truncated} utf-32be 0041 strict {} 0 {solo tail} {Truncated} utf-32be 000041 tcl8 \uFFFD -1 {solo tail} {Truncated} utf-32be 000041 replace \uFFFD -1 {solo} {Truncated} utf-32be 000041 strict {} 0 {solo tail} {Truncated} utf-32be 0000D800 tcl8 \uD800 -1 {} {High-surrogate} utf-32be 0000D800 replace \uFFFD -1 {} {High-surrogate} utf-32be 0000D800 strict {} 0 {} {High-surrogate} utf-32be 0000DC00 tcl8 \uDC00 -1 {} {Low-surrogate} utf-32be 0000DC00 replace \uFFFD -1 {} {Low-surrogate} utf-32be 0000DC00 strict {} 0 {} {Low-surrogate} utf-32be 0000D8000000DC00 tcl8 \uD800\uDC00 -1 {} {High-low-surrogate-pair} utf-32be 0000D8000000DC00 replace \uFFFD\uFFFD -1 {} {High-low-surrogate-pair} utf-32be 0000D8000000DC00 strict {} 0 {} {High-low-surrogate-pair} utf-32be 00110000 tcl8 \uFFFD -1 {} {Out of range} utf-32be 00110000 replace \uFFFD -1 {} {Out of range} utf-32be 00110000 strict {} 0 {} {Out of range} utf-32be FFFFFFFF tcl8 \uFFFD -1 {} {Out of range} utf-32be FFFFFFFF replace \uFFFD -1 {} {Out of range} utf-32be FFFFFFFF strict {} 0 {} {Out of range} } # Strings that cannot be encoded for specific encoding / profiles # <ENCODING STRING PROFILE EXPECTEDRESULT EXPECTEDFAILINDEX CTRL COMMENT> # <ENCODING,STRING,PROFILE> should be unique for test ids to be unique. # See earlier comments about CTRL field. |
︙ | ︙ |
Changes to tests/utfext.test.
︙ | ︙ | |||
20 21 22 23 24 25 26 | # Maps encoded bytes string to utf-8 equivalents, both in hex # encoding utf-8 encdata lappend utfExtMap {*}{ ascii 414243 414243 } | < < < < < < < < < < < < < < < < < < < | 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | # Maps encoded bytes string to utf-8 equivalents, both in hex # encoding utf-8 encdata lappend utfExtMap {*}{ ascii 414243 414243 } # Simple test with basic flags proc testbasic {direction enc hexin hexout {flags {start end}}} { if {$direction eq "toutf"} { set cmd Tcl_ExternalToUtf } else { set cmd Tcl_UtfToExternal } |
︙ | ︙ |
Changes to tests/winConsole.test.
︙ | ︙ | |||
214 215 216 217 218 219 220 | fconfigure stdin $opt } -result $result } test console-fconfigure-get-1.[incr testnum] { Console get stdin option -eofchar } -constraints {win interactive} -body { fconfigure stdin -eofchar | | | 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 | fconfigure stdin $opt } -result $result } test console-fconfigure-get-1.[incr testnum] { Console get stdin option -eofchar } -constraints {win interactive} -body { fconfigure stdin -eofchar } -result \x1A test console-fconfigure-get-1.[incr testnum] { fconfigure -winsize } -constraints {win interactive} -body { fconfigure stdin -winsize } -result {bad option "-winsize": should be one of -blocking, -buffering, -buffersize, -encoding, -eofchar, -profile, -translation, or -inputmode} -returnCodes error |
︙ | ︙ |
Changes to tests/winDde.test.
︙ | ︙ | |||
126 127 128 129 130 131 132 | -constraints dde -body { expr {[llength [dde services {} self]] >= 1} } -result 1 # ------------------------------------------------------------------------- test winDde-3.1 {DDE execute locally} -constraints dde -body { | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 | -constraints dde -body { expr {[llength [dde services {} self]] >= 1} } -result 1 # ------------------------------------------------------------------------- test winDde-3.1 {DDE execute locally} -constraints dde -body { set \xE1 "" dde execute TclEval self [list set \xE1 foo] set \xE1 } -result foo test winDde-3.2 {DDE execute -async locally} -constraints dde -body { set \xE1 "" dde execute -async TclEval self [list set \xE1 foo] update set \xE1 } -result foo test winDde-3.3 {DDE request locally} -constraints dde -body { set \xE1 "" dde execute TclEval self [list set \xE1 foo] dde request TclEval self \xE1 } -result foo test winDde-3.4 {DDE eval locally} -constraints dde -body { set \xE1 "" dde eval self set \xE1 foo } -result foo test winDde-3.5 {DDE request locally} -constraints dde -body { set \xE1 "" dde execute TclEval self [list set \xE1 foo] dde request -binary TclEval self \xE1 } -result "foo\x00" # Set variable a to A with diaeresis (Unicode C4) by relying on the fact # that utf-8 is sent (e.g. "c3 84" on the wire) test winDde-3.6 {DDE request utf-8} -constraints dde -body { set \xE1 "not set" dde execute TclEval self "set \xE1 \xC4" scan [set \xE1] %c } -result 196 # Set variable a to A with diaeresis (Unicode C4) using binary execute # and compose utf-8 (e.g. "c3 84" ) manually test winDde-3.7 {DDE request binary} -constraints {dde notWine} -body { set \xE1 "not set" dde execute -binary TclEval self [list set \xC3\xA1 \xC3\x84\x00] scan [set \xE1] %c } -result 196 test winDde-3.8 {DDE poke locally} -constraints {dde debug} -body { set \xE1 "" dde poke TclEval self \xE1 \xC4 dde request TclEval self \xE1 } -result \xC4 test winDde-3.9 {DDE poke -binary locally} -constraints {dde debug} -body { set \xE1 "" dde poke -binary TclEval self \xE1 \xC3\x84\x00 dde request TclEval self \xE1 } -result \xC4 # ------------------------------------------------------------------------- test winDde-4.1 {DDE execute remotely} -constraints {dde stdio} -body { set \xE1 "" set name ch\xEDld-4.1 set child [createChildProcess $name] dde execute TclEval $name [list set \xE1 foo] dde execute TclEval $name {set done 1} update set \xE1 } -result "" test winDde-4.2 {DDE execute async remotely} -constraints {dde stdio} -body { set \xE1 "" set name ch\xEDld-4.2 set child [createChildProcess $name] dde execute -async TclEval $name [list set \xE1 foo] update dde execute TclEval $name {set done 1} update set \xE1 } -result "" test winDde-4.3 {DDE request remotely} -constraints {dde stdio} -body { set \xE1 "" set name ch\xEDld-4.3 set child [createChildProcess $name] dde execute TclEval $name [list set \xE1 foo] set \xE1 [dde request TclEval $name \xE1] dde execute TclEval $name {set done 1} update set \xE1 } -result foo test winDde-4.4 {DDE eval remotely} -constraints {dde stdio} -body { set \xE1 "" set name ch\xEDld-4.4 set child [createChildProcess $name] set \xE1 [dde eval $name set \xE1 foo] dde execute TclEval $name {set done 1} update set \xE1 } -result foo test winDde-4.5 {DDE poke remotely} -constraints {dde debug stdio} -body { set \xE1 "" set name ch\xEDld-4.5 set child [createChildProcess $name] dde poke TclEval $name \xE1 foo set \xE1 [dde request TclEval $name \xE1] dde execute TclEval $name {set done 1} update set \xE1 } -result foo # ------------------------------------------------------------------------- test winDde-5.1 {check for bad arguments} -constraints dde -body { dde execute "" "" "" "" } -returnCodes error -result {wrong # args: should be "dde execute ?-async? ?-binary? serviceName topicName value"} |
︙ | ︙ | |||
398 399 400 401 402 403 404 | } -cleanup {interp delete child} -result 1 test winDde-8.9 {Safe DDE check command evaluation} -constraints dde -setup { interp create -safe child child invokehidden load $::ddelib Dde child eval {proc DDEACCEPT {cmd} {set ::DDECMD [uplevel \#0 $cmd]}} child invokehidden dde servername -handler DDEACCEPT child } -body { | | | | 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 | } -cleanup {interp delete child} -result 1 test winDde-8.9 {Safe DDE check command evaluation} -constraints dde -setup { interp create -safe child child invokehidden load $::ddelib Dde child eval {proc DDEACCEPT {cmd} {set ::DDECMD [uplevel \#0 $cmd]}} child invokehidden dde servername -handler DDEACCEPT child } -body { dde eval child set \xE1 1 child eval set \xE1 } -cleanup {interp delete child} -result 1 test winDde-8.10 {Safe DDE check command evaluation (2)} -constraints dde -setup { interp create -safe child child invokehidden load $::ddelib Dde child eval {proc DDEACCEPT {cmd} {set ::DDECMD [uplevel \#0 $cmd]}} child invokehidden dde servername -handler DDEACCEPT child } -body { |
︙ | ︙ |