unixFont.test
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:11k
源码类别:

通讯编程

开发平台:

Visual C++

  1. # This file is a Tcl script to test out the procedures in tkUnixFont.c. 
  2. # It is organized in the standard fashion for Tcl tests.
  3. #
  4. # Many of these tests are visually oriented and cannot be checked
  5. # programmatically (such as "does an underlined font appear to be
  6. # underlined?"); these tests attempt to exercise the code in question,
  7. # but there are no results that can be checked.  Some tests depend on the
  8. # fonts having or not having certain properties, which may not be valid
  9. # at all sites.  
  10. #
  11. # Copyright (c) 1996 Sun Microsystems, Inc.
  12. # Copyright (c) 1998-1999 by Scriptics Corporation.
  13. # All rights reserved.
  14. #
  15. # RCS: @(#) $Id: unixFont.test,v 1.7 2002/07/13 20:28:35 dgp Exp $
  16. package require tcltest 2.1
  17. namespace import -force tcltest::configure
  18. namespace import -force tcltest::testsDirectory
  19. configure -testdir [file join [pwd] [file dirname [info script]]]
  20. configure -loadfile [file join [testsDirectory] constraints.tcl]
  21. tcltest::loadTestedCommands
  22. testConstraint hasArial 1
  23. testConstraint hasCourierNew 1
  24. testConstraint hasTimesNew 1
  25. set xlsf [auto_execok xlsfonts]
  26. if {[llength $xlsf]} {
  27.     foreach {constraint font} {
  28. hasArial arial
  29. hasCourierNew "courier new"
  30. hasTimesNew "times new roman"
  31.     } {
  32. if {![catch {eval exec $xlsf [list *-$font-*]} res]
  33. && ![string match *unmatched* $res]} {
  34.     # Newer Unix systems have more default fonts installed, 
  35.     # so we can't rely on fallbacks for fonts to need to
  36.     # fall back on anything.
  37.     testConstraint $constraint 0
  38. }
  39.     }
  40. }
  41. catch {destroy .b}
  42. toplevel .b
  43. wm geom .b +0+0
  44. update idletasks
  45. # Font should be fixed width and have chars missing below char 32, so can
  46. # test control char expansion and missing character code.
  47. set courier {Courier -10}
  48. set cx [font measure $courier 0]
  49. label .b.l -padx 0 -pady 0 -bd 0 -highlightthickness 0 -justify left -text "0" -font fixed
  50. pack .b.l
  51. canvas .b.c -closeenough 0
  52. set t [.b.c create text 0 0 -anchor nw -just left -font $courier]
  53. pack .b.c
  54. update
  55. set ax [winfo reqwidth .b.l]
  56. set ay [winfo reqheight .b.l]
  57. proc getsize {} {
  58.     update
  59.     return "[winfo reqwidth .b.l] [winfo reqheight .b.l]"
  60. }
  61. test unixfont-1.1 {TkpGetNativeFont procedure: not native} {unix noExceed} {
  62.     list [catch {font measure {} xyz} msg] $msg
  63. } {1 {font "" doesn't exist}}
  64. test unixfont-1.2 {TkpGetNativeFont procedure: native} unix {
  65.     font measure fixed 0
  66. } {6}
  67. test unixfont-2.1 {TkpGetFontFromAttributes procedure: no family} unix {
  68.     font actual {-size 10}
  69.     set x {}
  70. } {}
  71. test unixfont-2.2 {TkpGetFontFromAttributes procedure: Times relatives} 
  72. {unix noExceed hasTimesNew} {
  73.     set x {}
  74.     lappend x [lindex [font actual {-family "Times New Roman"}] 1]
  75.     lappend x [lindex [font actual {-family "New York"}] 1]
  76.     lappend x [lindex [font actual {-family "Times"}] 1]
  77. } {times times times}
  78. test unixfont-2.3 {TkpGetFontFromAttributes procedure: Courier relatives} 
  79. {unix noExceed hasCourierNew} {
  80.     set x {}
  81.     lappend x [lindex [font actual {-family "Courier New"}] 1]
  82.     lappend x [lindex [font actual {-family "Monaco"}] 1]
  83.     lappend x [lindex [font actual {-family "Courier"}] 1]
  84. } {courier courier courier}
  85. test unixfont-2.4 {TkpGetFontFromAttributes procedure: Helvetica relatives} 
  86. {unix noExceed hasArial} {
  87.     set x {}
  88.     lappend x [lindex [font actual {-family "Arial"}] 1]
  89.     lappend x [lindex [font actual {-family "Geneva"}] 1]
  90.     lappend x [lindex [font actual {-family "Helvetica"}] 1]
  91. } {helvetica helvetica helvetica}
  92. test unixfont-2.5 {TkpGetFontFromAttributes procedure: fallback} unix {
  93.     font actual {-xyz-xyz-*-*-*-*-*-*-*-*-*-*-*-*}
  94.     set x {}
  95. } {}
  96. test unixfont-2.6 {TkpGetFontFromAttributes: fallback to fixed family} unix {
  97.     lindex [font actual {-family fixed -size 10}] 1
  98. } {fixed}
  99. test unixfont-2.7 {TkpGetFontFromAttributes: fixed family not available!} unix {
  100.     # no test available
  101. } {}
  102. test unixfont-2.8 {TkpGetFontFromAttributes: loop over returned font names} unix {
  103.     lindex [font actual {-family fixed -size 31}] 1
  104. } {fixed}
  105. test unixfont-2.9 {TkpGetFontFromAttributes: reject adobe courier if possible} {unix noExceed} {
  106.     lindex [font actual {-family courier}] 1
  107. } {courier}
  108. test unixfont-2.10 {TkpGetFontFromAttributes: scalable font found} unix {
  109.     lindex [font actual {-family courier -size 37}] 3
  110. } {37}
  111. test unixfont-2.11 {TkpGetFontFromAttributes: font cannot be loaded} unix {
  112.     # On Linux, XListFonts() was returning names for fonts that do not
  113.     # actually exist, causing the subsequent XLoadQueryFont() to fail
  114.     # unexpectedly.  Now falls back to another font if that happens.
  115.     font actual {-size 14}
  116.     set x {}
  117. } {}    
  118. test unixfont-3.1 {TkpDeleteFont procedure} unix {
  119.     font actual {-family xyz}
  120.     set x {}
  121. } {}
  122. test unixfont-4.1 {TkpGetFontFamilies procedure} unix {
  123.     font families
  124.     set x {}
  125. } {}
  126. test unixfont-5.1 {Tk_MeasureChars procedure: no chars to be measured} unix {
  127.     .b.l config -text "000000" -wrap [expr $ax*3]
  128.     .b.l config -wrap 0
  129. } {}
  130. test unixfont-5.2 {Tk_MeasureChars procedure: no right margin} unix {
  131.     .b.l config -text "000000"
  132. } {}
  133. test unixfont-5.3 {Tk_MeasureChars procedure: loop over chars} unix {
  134.     .b.l config -text "0"
  135.     .b.l config -text "377"
  136.     .b.l config -text "03770377"
  137.     .b.l config -text "000000000000000"
  138. } {}
  139. .b.l config -wrap [expr $ax*10]
  140. test unixfont-5.4 {Tk_MeasureChars procedure: reached right edge} unix {
  141.     .b.l config -text "0000000000000"
  142.     getsize
  143. } "[expr $ax*10] [expr $ay*2]"
  144. test unixfont-5.5 {Tk_MeasureChars procedure: ran out of chars} unix {
  145.     .b.l config -text "000000"
  146.     getsize
  147. } "[expr $ax*6] $ay"
  148. test unixfont-5.6 {Tk_MeasureChars procedure: find last word} unix {
  149.     .b.l config -text "000000 00000"
  150.     getsize
  151. } "[expr $ax*6] [expr $ay*2]"
  152. test unixfont-5.7 {Tk_MeasureChars procedure: already saw space in line} unix {
  153.     .b.l config -text "000000     00000"
  154.     getsize
  155. } "[expr $ax*6] [expr $ay*2]"
  156. test unixfont-5.8 {Tk_MeasureChars procedure: internal spaces significant} unix {
  157.     .b.l config -text "00  000     00000"
  158.     getsize
  159. } "[expr $ax*7] [expr $ay*2]"
  160. test unixfont-5.9 {Tk_MeasureChars procedure: TK_PARTIAL_OK} unix {
  161.     .b.c dchars $t 0 end
  162.     .b.c insert $t 0 "0000"
  163.     .b.c index $t @[expr int($ax*2.5)],1
  164. } {2}
  165. test unixfont-5.10 {Tk_MeasureChars procedure: TK_AT_LEAST_ONE} unix {
  166.     .b.l config -text "000000000000"
  167.     getsize
  168. } "[expr $ax*10] [expr $ay*2]"
  169. test unixfont-5.11 {Tk_MeasureChars: TK_AT_LEAST_ONE + not even one char fit!} unix {
  170.     set a [.b.l cget -wrap]
  171.     .b.l config -text "000000" -wrap 1
  172.     set x [getsize]
  173.     .b.l config -wrap $a
  174.     set x
  175. } "$ax [expr $ay*6]"
  176. test unixfont-5.12 {Tk_MeasureChars procedure: include eol spaces} unix {
  177.     .b.l config -text "000   n000"
  178.     getsize
  179. } "[expr $ax*6] [expr $ay*2]"
  180. test unixfont-6.1 {Tk_DrawChars procedure: loop test} unix {
  181.     .b.l config -text "a"
  182.     update
  183. } {}
  184. test unixfont-6.2 {Tk_DrawChars procedure: loop test} unix {
  185.     .b.l config -text "abcd"
  186.     update
  187. } {}
  188. test unixfont-6.3 {Tk_DrawChars procedure: special char} unix {
  189.     .b.l config -text "01"
  190.     update
  191. } {}
  192. test unixfont-6.4 {Tk_DrawChars procedure: normal then special} unix {
  193.     .b.l config -text "ab01"
  194.     update
  195. } {}
  196. test unixfont-6.5 {Tk_DrawChars procedure: ends with special} unix {
  197.     .b.l config -text "ab01"
  198.     update
  199. } {}
  200. test unixfont-6.6 {Tk_DrawChars procedure: more normal chars at end} unix {
  201.     .b.l config -text "ab01def"
  202.     update
  203. } {}
  204. test unixfont-7.1 {DrawChars procedure: no effects} unix {
  205.     .b.l config -text "abc"
  206.     update
  207. } {}
  208. test unixfont-7.2 {DrawChars procedure: underlining} unix {
  209.     set f [.b.l cget -font]
  210.     .b.l config -text "abc" -font "courier 10 underline"
  211.     update
  212.     .b.l config -font $f
  213. } {}
  214. test unixfont-7.3 {DrawChars procedure: overstrike} unix {
  215.     set f [.b.l cget -font]
  216.     .b.l config -text "abc" -font "courier 10 overstrike"
  217.     update
  218.     .b.l config -font $f
  219. } {}
  220. test unixfont-8.1 {AllocFont procedure: use old font} unix {
  221.     font create xyz
  222.     button .c -font xyz
  223.     font configure xyz -family times
  224.     update
  225.     destroy .c
  226.     font delete xyz
  227. } {}
  228. test unixfont-8.2 {AllocFont procedure: parse information from XLFD} unix {
  229.     expr {[lindex [font actual {-family times -size 0}] 3] == 0}
  230. } {0}
  231. test unixfont-8.3 {AllocFont procedure: can't parse info from name} unix {
  232.     catch {unset fontArray}
  233.     # check that font actual returns the correct attributes.
  234.     # the values of those attributes are system dependent.
  235.     array set fontArray [font actual a12biluc]
  236.     set result [lsort [array names fontArray]]
  237.     catch {unset fontArray}
  238.     set result
  239. } {-family -overstrike -size -slant -underline -weight}
  240. test unixfont-8.4 {AllocFont procedure: classify characters} unix {
  241.     set x 0
  242.     incr x [font measure $courier "u4000"]   ;# 6
  243.     incr x [font measure $courier "02"]   ;# 4
  244.     incr x [font measure $courier "12"]   ;# 2
  245.     incr x [font measure $courier "101"]   ;# 1
  246.     set x
  247. } [expr $cx*13]
  248. test unixfont-8.5 {AllocFont procedure: setup widths of normal chars} unix {
  249.     font metrics $courier -fixed
  250. } {1}
  251. test unixfont-8.6 {AllocFont procedure: setup widths of special chars} unix {
  252.     set x 0
  253.     incr x [font measure $courier "01"]   ;# 4
  254.     incr x [font measure $courier "02"]   ;# 4
  255.     incr x [font measure $courier "12"]   ;# 2
  256.     set x
  257. } [expr $cx*10]
  258. test unixfont-8.7 {AllocFont procedure: XA_UNDERLINE_POSITION} unix {
  259.     catch {font actual -adobe-courier-bold-i-normal--0-0-0-0-m-0-iso8859-1}
  260.     set x {}
  261. } {}
  262. test unixfont-8.8 {AllocFont procedure: no XA_UNDERLINE_POSITION} unix {
  263.     catch {font actual --symbol-medium-r-normal--0-0-0-0-p-0-sun-fontspecific}
  264.     set x {}
  265. } {}
  266. test unixfont-8.9 {AllocFont procedure: XA_UNDERLINE_THICKNESS} unix {
  267.     catch {font actual -adobe-courier-bold-i-normal--0-0-0-0-m-0-iso8859-1}
  268.     set x {}
  269. } {}
  270. test unixfont-8.10 {AllocFont procedure: no XA_UNDERLINE_THICKNESS} unix {
  271.     catch {font actual --symbol-medium-r-normal--0-0-0-0-p-0-sun-fontspecific}
  272.     set x {}
  273. } {}
  274. test unixfont-8.11 {AllocFont procedure: XA_UNDERLINE_POSITION was 0} unix {
  275.     catch {font actual -adobe-courier-bold-i-normal--0-0-0-0-m-0-iso8859-1}
  276.     set x {}
  277. } {}
  278. test unixfont-9.1 {GetControlCharSubst procedure: 2 chars subst} unix {
  279.     .b.c dchars $t 0 end
  280.     .b.c insert $t 0 "0a0"
  281.     set x {}
  282.     lappend x [.b.c index $t @[expr $ax*0],0]
  283.     lappend x [.b.c index $t @[expr $ax*1],0]
  284.     lappend x [.b.c index $t @[expr $ax*2],0]
  285.     lappend x [.b.c index $t @[expr $ax*3],0]
  286. } {0 1 1 2}
  287. test unixfont-9.2 {GetControlCharSubst procedure: 4 chars subst} unix {
  288.     .b.c dchars $t 0 end
  289.     .b.c insert $t 0 "0010"
  290.     set x {}
  291.     lappend x [.b.c index $t @[expr $ax*0],0]
  292.     lappend x [.b.c index $t @[expr $ax*1],0]
  293.     lappend x [.b.c index $t @[expr $ax*2],0]
  294.     lappend x [.b.c index $t @[expr $ax*3],0]
  295.     lappend x [.b.c index $t @[expr $ax*4],0]
  296.     lappend x [.b.c index $t @[expr $ax*5],0]
  297. } {0 1 1 1 1 2}
  298. # cleanup
  299. ::tcltest::cleanupTests
  300. return