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

通讯编程

开发平台:

Visual C++

  1. # This file is a Tcl script to test out the procedures in tkWinFont.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.  
  8. #
  9. # Copyright (c) 1996-1997 Sun Microsystems, Inc.
  10. # Copyright (c) 1998-1999 by Scriptics Corporation.
  11. # All rights reserved.
  12. #
  13. # RCS: @(#) $Id: winFont.test,v 1.8 2002/07/13 20:28:36 dgp Exp $
  14. package require tcltest 2.1
  15. namespace import -force tcltest::configure
  16. namespace import -force tcltest::testsDirectory
  17. configure -testdir [file join [pwd] [file dirname [info script]]]
  18. configure -loadfile [file join [testsDirectory] constraints.tcl]
  19. tcltest::loadTestedCommands
  20. catch {destroy .b}
  21. catch {font delete xyz}
  22. toplevel .b
  23. wm geometry .b +0+0
  24. update idletasks
  25. set courier {Courier 14}
  26. set cx [font measure $courier 0]
  27. label .b.l -padx 0 -pady 0 -bd 0 -highlightthickness 0 -justify left -text "0" -font systemfixed
  28. pack .b.l
  29. canvas .b.c -closeenough 0
  30. set t [.b.c create text 0 0 -anchor nw -just left -font $courier]
  31. pack .b.c
  32. update
  33. set ax [winfo reqwidth .b.l]
  34. set ay [winfo reqheight .b.l]
  35. proc getsize {} {
  36.     update
  37.     return "[winfo reqwidth .b.l] [winfo reqheight .b.l]"
  38. }
  39. test winfont-1.1 {TkpGetNativeFont procedure: not native} {pcOnly} {
  40.     list [catch {font measure {} xyz} msg] $msg
  41. } {1 {font "" doesn't exist}}
  42. test winfont-1.2 {TkpGetNativeFont procedure: native} {pcOnly} {
  43.     font measure ansifixed 0
  44.     font measure ansi 0
  45.     font measure device 0
  46.     font measure oemfixed 0
  47.     font measure systemfixed 0
  48.     font measure system 0
  49.     set x {}
  50. } {}
  51. test winfont-2.1 {TkpGetFontFromAttributes procedure: pointsize} {pcOnly} {
  52.     expr [font actual {-size -10} -size]>0
  53. } {1}
  54. test winfont-2.2 {TkpGetFontFromAttributes procedure: pointsize} {pcOnly} {
  55.     expr [font actual {-family Arial} -size]>0
  56. } {1}
  57. test winfont-2.3 {TkpGetFontFromAttributes procedure: normal weight} {pcOnly} {
  58.     font actual {-weight normal} -weight
  59. } {normal}
  60. test winfont-2.4 {TkpGetFontFromAttributes procedure: bold weight} {pcOnly} {
  61.     font actual {-weight bold} -weight
  62. } {bold}
  63. test winfont-2.5 {TkpGetFontFromAttributes procedure: no family} {pcOnly} {
  64.     catch {expr {[font actual {-size 10} -size]}}
  65. } 0
  66. test winfont-2.6 {TkpGetFontFromAttributes procedure: family} {pcOnly} {
  67.     font actual {-family Arial} -family
  68. } {Arial}
  69. test winfont-2.7 {TkpGetFontFromAttributes procedure: Times fonts} {pcOnly} {
  70.     set x {}
  71.     lappend x [font actual {-family "Times"} -family]
  72.     lappend x [font actual {-family "New York"} -family]
  73.     lappend x [font actual {-family "Times New Roman"} -family]
  74. } {{Times New Roman} {Times New Roman} {Times New Roman}}
  75. test winfont-2.8 {TkpGetFontFromAttributes procedure: Courier fonts} {pcOnly} {
  76.     set x {}
  77.     lappend x [font actual {-family "Courier"} -family]
  78.     lappend x [font actual {-family "Monaco"} -family]
  79.     lappend x [font actual {-family "Courier New"} -family]
  80. } {{Courier New} {Courier New} {Courier New}}
  81. test winfont-2.9 {TkpGetFontFromAttributes procedure: Helvetica fonts} {pcOnly} {
  82.     set x {}
  83.     lappend x [font actual {-family "Helvetica"} -family]
  84.     lappend x [font actual {-family "Geneva"} -family]
  85.     lappend x [font actual {-family "Arial"} -family]
  86. } {Arial Arial Arial}
  87. test winfont-2.10 {TkpGetFontFromAttributes procedure: fallback} {pcOnly} {
  88.     # No way to get it to fail! Any font name is acceptable.
  89. } {}
  90. test winfont-3.1 {TkpDeleteFont procedure} {pcOnly} {
  91.     font actual {-family xyz}
  92.     set x {}
  93. } {}
  94. test winfont-4.1 {TkpGetFontFamilies procedure} {pcOnly} {
  95.     font families
  96.     set x {}
  97. } {}
  98. test winfont-5.1 {Tk_MeasureChars procedure: unbounded right margin} {pcOnly} {
  99.     .b.l config -wrap 0 -text "000000"
  100.     getsize
  101. } "[expr $ax*6] $ay"
  102. test winfont-5.2 {Tk_MeasureChars procedure: static width buffer exceeded} {pcOnly} {
  103.     .b.l config -wrap 100000 -text "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
  104.     getsize
  105. } "[expr $ax*256] $ay"
  106. test winfont-5.3 {Tk_MeasureChars procedure: all chars did fit} {pcOnly} {
  107.     .b.l config -wrap [expr $ax*10] -text "00000000"
  108.     getsize
  109. } "[expr $ax*8] $ay"
  110. test winfont-5.4 {Tk_MeasureChars procedure: not all chars fit} {pcOnly} {
  111.     .b.l config -wrap [expr $ax*6] -text "00000000"
  112.     getsize
  113. } "[expr $ax*6] [expr $ay*2]"
  114. test winfont-5.5 {Tk_MeasureChars procedure: include last partial char} {pcOnly} {
  115.     .b.c dchars $t 0 end
  116.     .b.c insert $t 0 "0000"
  117.     .b.c index $t @[expr int($cx*2.5)],1
  118. } {2}
  119. test winfont-5.6 {Tk_MeasureChars procedure: at least one char on line} {pcOnly} { 
  120.     .b.l config -text "000000" -wrap 1
  121.     getsize
  122. } "$ax [expr $ay*6]"
  123. test winfont-5.7 {Tk_MeasureChars procedure: whole words} {pcOnly} {
  124.     .b.l config -wrap [expr $ax*8] -text "000000 0000"
  125.     getsize
  126. } "[expr $ax*6] [expr $ay*2]"
  127. test winfont-5.8 {Tk_MeasureChars procedure: already saw space in line} {pcOnly} {
  128.     .b.l config -wrap [expr $ax*12] -text "000000    0000000"
  129.     getsize
  130. } "[expr $ax*7] [expr $ay*2]"
  131. test winfont-5.9 {Tk_MeasureChars procedure: internal spaces significant} {pcOnly} {
  132.     .b.l config -wrap [expr $ax*12] -text "000  00   00000"
  133.     getsize
  134. } "[expr $ax*7] [expr $ay*2]"
  135. test winfont-5.10 {Tk_MeasureChars procedure: make first part of word fit} {pcOnly} {
  136.     .b.l config -wrap [expr $ax*12] -text "0000000000000000"
  137.     getsize
  138. } "[expr $ax*12] [expr $ay*2]"
  139. test winfont-5.10 {Tk_MeasureChars procedure: check for kerning} 
  140. {pcOnly nonPortable} {
  141.     set font [.b.l cget -font]
  142.     .b.l config -font {{MS Sans Serif} 8} -text "W"
  143.     set width [winfo reqwidth .b.l]
  144.     .b.l config -text "XaYoYaKaWx"
  145.     set x [lindex [getsize] 0]
  146.     .b.l config -font $font
  147.     expr $x < ($width*10)
  148. } 1
  149. test winfont-6.1 {Tk_DrawChars procedure: loop test} {pcOnly} {
  150.     .b.l config -text "a"
  151.     update
  152. } {}
  153. test winfont-7.1 {AllocFont procedure: use old font} {pcOnly} {
  154.     font create xyz
  155.     catch {destroy .c}
  156.     button .c -font xyz
  157.     font configure xyz -family times
  158.     update
  159.     destroy .c
  160.     font delete xyz
  161. } {}
  162. test winfont-7.2 {AllocFont procedure: extract info from logfont} {pcOnly} {
  163.     font actual {arial 10 bold italic underline overstrike}
  164. } {-family Arial -size 10 -weight bold -slant italic -underline 1 -overstrike 1}
  165. test winfont-7.3 {AllocFont procedure: extract info from textmetric} {pcOnly} {
  166.     font metric {arial 10 bold italic underline overstrike} -fixed
  167. } {0}
  168. test winfont-7.4 {AllocFont procedure: extract info from textmetric} {pcOnly} {
  169.     font metric systemfixed -fixed
  170. } {1}
  171. # cleanup
  172. destroy .b
  173. ::tcltest::cleanupTests
  174. return