stringObj.test
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:16k
- # Commands covered: none
- #
- # This file contains tests for the procedures in tclStringObj.c
- # that implement the Tcl type manager for the string type.
- #
- # Sourcing this file into Tcl runs the tests and generates output for
- # errors. No output means no errors were found.
- #
- # Copyright (c) 1995-1997 Sun Microsystems, Inc.
- # Copyright (c) 1998-1999 by Scriptics Corporation.
- #
- # See the file "license.terms" for information on usage and redistribution
- # of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- #
- # RCS: @(#) $Id: stringObj.test,v 1.15 2003/02/11 18:46:33 hobbs Exp $
- if {[lsearch [namespace children] ::tcltest] == -1} {
- package require tcltest
- namespace import -force ::tcltest::*
- }
- if {[info commands testobj] == {}} {
- puts "This application hasn't been compiled with the "testobj""
- puts "command, so I can't test the Tcl type and object support."
- ::tcltest::cleanupTests
- return
- }
- test stringObj-1.1 {string type registration} {
- set t [testobj types]
- set first [string first "string" $t]
- set result [expr {$first != -1}]
- } {1}
- test stringObj-2.1 {Tcl_NewStringObj} {
- set result ""
- lappend result [testobj freeallvars]
- lappend result [teststringobj set 1 abcd]
- lappend result [testobj type 1]
- lappend result [testobj refcount 1]
- } {{} abcd string 2}
- test stringObj-3.1 {Tcl_SetStringObj, existing "empty string" object} {
- set result ""
- lappend result [testobj freeallvars]
- lappend result [testobj newobj 1]
- lappend result [teststringobj set 1 xyz] ;# makes existing obj a string
- lappend result [testobj type 1]
- lappend result [testobj refcount 1]
- } {{} {} xyz string 2}
- test stringObj-3.2 {Tcl_SetStringObj, existing non-"empty string" object} {
- set result ""
- lappend result [testobj freeallvars]
- lappend result [testintobj set 1 512]
- lappend result [teststringobj set 1 foo] ;# makes existing obj a string
- lappend result [testobj type 1]
- lappend result [testobj refcount 1]
- } {{} 512 foo string 2}
- test stringObj-4.1 {Tcl_SetObjLength procedure, string gets shorter} {
- testobj freeallvars
- teststringobj set 1 test
- teststringobj setlength 1 3
- list [teststringobj length 1] [teststringobj length2 1]
- [teststringobj get 1]
- } {3 4 tes}
- test stringObj-4.2 {Tcl_SetObjLength procedure, string gets longer} {
- testobj freeallvars
- teststringobj set 1 abcdef
- teststringobj setlength 1 10
- list [teststringobj length 1] [teststringobj length2 1]
- } {10 10}
- test stringObj-4.3 {Tcl_SetObjLength procedure, string gets longer} {
- testobj freeallvars
- teststringobj set 1 abcdef
- teststringobj append 1 xyzq -1
- list [teststringobj length 1] [teststringobj length2 1]
- [teststringobj get 1]
- } {10 20 abcdefxyzq}
- test stringObj-4.4 {Tcl_SetObjLength procedure, "expty string", length 0} {
- testobj freeallvars
- testobj newobj 1
- teststringobj setlength 1 0
- list [teststringobj length2 1] [teststringobj get 1]
- } {0 {}}
- test stringObj-5.1 {Tcl_AppendToObj procedure, type conversion} {
- testobj freeallvars
- testintobj set2 1 43
- teststringobj append 1 xyz -1
- teststringobj get 1
- } {43xyz}
- test stringObj-5.2 {Tcl_AppendToObj procedure, length calculation} {
- testobj freeallvars
- teststringobj set 1 {x y }
- teststringobj append 1 bbCCddEE 4
- teststringobj append 1 123 -1
- teststringobj get 1
- } {x y bbCC123}
- test stringObj-5.3 {Tcl_AppendToObj procedure, reallocating space} {
- testobj freeallvars
- teststringobj set 1 xyz
- teststringobj setlength 1 15
- teststringobj setlength 1 2
- set result {}
- teststringobj append 1 1234567890123 -1
- lappend result [teststringobj length 1] [teststringobj length2 1]
- teststringobj setlength 1 10
- teststringobj append 1 abcdef -1
- lappend result [teststringobj length 1] [teststringobj length2 1]
- [teststringobj get 1]
- } {15 15 16 32 xy12345678abcdef}
- test stringObj-6.1 {Tcl_AppendStringsToObj procedure, type conversion} {
- testobj freeallvars
- teststringobj set2 1 [list a b]
- teststringobj appendstrings 1 xyz { 1234 } foo
- teststringobj get 1
- } {a bxyz 1234 foo}
- test stringObj-6.2 {Tcl_AppendStringsToObj procedure, counting space} {
- testobj freeallvars
- teststringobj set 1 abc
- teststringobj appendstrings 1
- list [teststringobj length 1] [teststringobj get 1]
- } {3 abc}
- test stringObj-6.3 {Tcl_AppendStringsToObj procedure, counting space} {
- testobj freeallvars
- teststringobj set 1 abc
- teststringobj appendstrings 1 {} {} {} {}
- list [teststringobj length 1] [teststringobj get 1]
- } {3 abc}
- test stringObj-6.4 {Tcl_AppendStringsToObj procedure, counting space} {
- testobj freeallvars
- teststringobj set 1 abc
- teststringobj appendstrings 1 { 123 } abcdefg
- list [teststringobj length 1] [teststringobj get 1]
- } {15 {abc 123 abcdefg}}
- test stringObj-6.5 {Tcl_AppendStringsToObj procedure, don't double space if initial string empty} {
- testobj freeallvars
- testobj newobj 1
- teststringobj appendstrings 1 123 abcdefg
- list [teststringobj length 1] [teststringobj length2 1] [teststringobj get 1]
- } {10 10 123abcdefg}
- test stringObj-6.6 {Tcl_AppendStringsToObj procedure, space reallocation} {
- testobj freeallvars
- teststringobj set 1 abc
- teststringobj setlength 1 10
- teststringobj setlength 1 2
- teststringobj appendstrings 1 34567890
- list [teststringobj length 1] [teststringobj length2 1]
- [teststringobj get 1]
- } {10 10 ab34567890}
- test stringObj-6.7 {Tcl_AppendStringsToObj procedure, space reallocation} {
- testobj freeallvars
- teststringobj set 1 abc
- teststringobj setlength 1 10
- teststringobj setlength 1 2
- teststringobj appendstrings 1 34567890x
- list [teststringobj length 1] [teststringobj length2 1]
- [teststringobj get 1]
- } {11 22 ab34567890x}
- test stringObj-6.8 {Tcl_AppendStringsToObj procedure, object totally empty} {
- testobj freeallvars
- testobj newobj 1
- teststringobj appendstrings 1 {}
- list [teststringobj length2 1] [teststringobj get 1]
- } {0 {}}
- test stringObj-7.1 {SetStringFromAny procedure} {
- testobj freeallvars
- teststringobj set2 1 [list a b]
- teststringobj append 1 x -1
- list [teststringobj length 1] [teststringobj length2 1]
- [teststringobj get 1]
- } {4 8 {a bx}}
- test stringObj-7.2 {SetStringFromAny procedure, null object} {
- testobj freeallvars
- testobj newobj 1
- teststringobj appendstrings 1 {}
- list [teststringobj length 1] [teststringobj length2 1]
- [teststringobj get 1]
- } {0 0 {}}
- test stringObj-7.3 {SetStringFromAny called with non-string obj} {
- set x 2345
- list [incr x] [testobj objtype $x] [string index $x end]
- [testobj objtype $x]
- } {2346 int 6 string}
- test stringObj-7.4 {SetStringFromAny called with string obj} {
- set x "abcdef"
- list [string length $x] [testobj objtype $x]
- [string length $x] [testobj objtype $x]
- } {6 string 6 string}
- test stringObj-8.1 {DupStringInternalRep procedure} {
- testobj freeallvars
- teststringobj set 1 {}
- teststringobj append 1 abcde -1
- testobj duplicate 1 2
- list [teststringobj length 1] [teststringobj length2 1]
- [teststringobj ualloc 1] [teststringobj get 1]
- [teststringobj length 2] [teststringobj length2 2]
- [teststringobj ualloc 2] [teststringobj get 2]
- } {5 10 0 abcde 5 5 0 abcde}
- test stringObj-8.2 {DupUnicodeInternalRep, mixed width chars} {
- set x abc锟甮hi
- string length $x
- set y $x
- list [testobj objtype $x] [testobj objtype $y] [append x "