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

通讯编程

开发平台:

Visual C++

  1. # Commands covered:  clock
  2. #
  3. # This file contains a collection of tests for one or more of the Tcl
  4. # built-in commands.  Sourcing this file into Tcl runs the tests and
  5. # generates output for errors.  No output means no errors were found.
  6. #
  7. # Copyright (c) 1995-1998 Sun Microsystems, Inc.
  8. # Copyright (c) 1998-1999 by Scriptics Corporation.
  9. #
  10. # See the file "license.terms" for information on usage and redistribution
  11. # of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  12. #
  13. # RCS: @(#) $Id: clock.test,v 1.22.2.7 2006/07/30 17:05:43 kennykb Exp $
  14. set env(LC_TIME) POSIX
  15. if {[lsearch [namespace children] ::tcltest] == -1} {
  16.     package require tcltest
  17.     namespace import -force ::tcltest::*
  18. }
  19. test clock-1.1 {clock tests} {
  20.     list [catch {clock} msg] $msg
  21. } {1 {wrong # args: should be "clock option ?arg ...?"}}
  22. test clock-1.2 {clock tests} {
  23.     list [catch {clock foo} msg] $msg
  24. } {1 {bad option "foo": must be clicks, format, scan, or seconds}}
  25. # clock clicks
  26. test clock-2.1 {clock clicks tests} {
  27.     expr [clock clicks]+1
  28.     concat {}
  29. } {}
  30. test clock-2.2 {clock clicks tests} {
  31.     set start [clock clicks]
  32.     after 10
  33.     set end [clock clicks]
  34.     expr "$end > $start"
  35. } {1}
  36. test clock-2.3 {clock clicks tests} {
  37.     list [catch {clock clicks foo} msg] $msg
  38. } {1 {bad switch "foo": must be -milliseconds}}
  39. test clock-2.4 {clock clicks tests} {
  40.     expr [clock clicks -milliseconds]+1
  41.     concat {}
  42. } {}
  43. test clock-2.5 {clock clicks tests, millisecond timing test} {
  44.     set start [clock clicks -milli]
  45.     after 10
  46.     set end [clock clicks -milli]
  47.     # 60 msecs seems to be the max time slice under Windows 95/98
  48.     expr {($end > $start) && (($end - $start) <= 60)}
  49. } {1}
  50. test clock-2.6 {clock clicks, milli with too much abbreviation} {
  51.     list [catch { clock clicks {} } msg] $msg
  52. } {1 {bad switch "": must be -milliseconds}}
  53. test clock-2.7 {clock clicks, milli with too much abbreviation} {
  54.     list [catch { clock clicks - } msg] $msg
  55. } {1 {bad switch "-": must be -milliseconds}}
  56. # clock format
  57. test clock-3.1 {clock format tests} {unixOnly} {
  58.     set clockval 657687766
  59.     clock format $clockval -format {%a %b %d %I:%M:%S %p %Y} -gmt true
  60. } {Sun Nov 04 03:02:46 AM 1990}
  61. test clock-3.2 {clock format tests} 
  62.     -body {
  63. # TCL_USE_TIMEZONE_VAR
  64. catch {set oldtz $env(TZ)}
  65. set env(TZ) PST
  66. set x {}
  67. append x [clock format 863800000 -format %Z -gmt 1]
  68. append x [set env(TZ)]
  69. catch {unset env(TZ); set env(TZ) $oldtz}
  70. set x
  71.     } 
  72.     -match regexp 
  73.     -result {(?:GMT|UTC)PST}
  74. test clock-3.3 {clock format tests} {
  75.     # tzset() under Borland doesn't seem to set up tzname[] for local 
  76.     # timezone, which caused "clock format" to think that %Z was an invalid
  77.     # string.  Don't care about answer, just that test runs w/o error.
  78.     clock format 863800000 -format %Z
  79.     set x {}
  80. } {}
  81. test clock-3.4 {clock format tests} 
  82.     -body {
  83. # tzset() under Borland doesn't seem to set up tzname[] for gmt 
  84. # timezone. tzset() under MSVC has the following weird observed
  85. # behavior:
  86. #   First time we call "clock format [clock seconds] -format %Z -gmt 1"
  87. #   we get "GMT", but on all subsequent calls we get the current time 
  88. #   zone string, even though env(TZ) is GMT and the variable _timezone 
  89. #   is 0.
  90. set x {}
  91. append x [clock format 863800000 -format %Z -gmt 1]
  92. append x [clock format 863800000 -format %Z -gmt 1]
  93.     } 
  94.     -match regexp 
  95.     -result {GMTGMT|UTCUTC}
  96. test clock-3.5 {clock format tests} {
  97.     list [catch {clock format} msg] $msg
  98. } {1 {wrong # args: should be "clock format clockval ?-format string? ?-gmt boolean?"}}
  99. test clock-3.6 {clock format tests} {
  100.     list [catch {clock format foo} msg] $msg
  101. } {1 {expected integer but got "foo"}}
  102. test clock-3.7 {clock format tests} {unixOrPc} {
  103.     set clockval 657687766
  104.     clock format $clockval -format "%a %b %d %I:%M:%S %p %Y" -gmt true
  105. } "Sun Nov 04 03:02:46 AM 1990"
  106. test clock-3.8 {clock format tests} {
  107.     list [catch {clock format a b c d e g} msg] $msg
  108. } {1 {wrong # args: should be "clock format clockval ?-format string? ?-gmt boolean?"}}
  109. test clock-3.9 {clock format tests} {unixOrPc nonPortable} {
  110.     set clockval -1
  111.     clock format $clockval -format "%a %b %d %I:%M:%S %p %Y" -gmt true
  112. } "Wed Dec 31 11:59:59 PM 1969"
  113. test clock-3.10 {clock format tests} {
  114.     list [catch {clock format 123 -bad arg} msg] $msg
  115. } {1 {bad switch "-bad": must be -format or -gmt}}
  116. test clock-3.11 {clock format tests} {
  117.     clock format 123 -format "x"
  118. } x
  119. test clock-3.12 {clock format tests} {
  120.     clock format 123 -format ""
  121. } ""
  122. test clock-3.13 {clock format with non-ASCII character in the format string} {
  123.     set oldenc [encoding system] 
  124.     encoding system iso8859-1
  125.     set res [clock format 0 -format u00c4]
  126.     encoding system $oldenc
  127.     unset oldenc
  128.     set res
  129. } "u00c4"
  130. # Bug 942078
  131. test clock-3.14 {change of time zone} -setup {
  132.     catch { unset oldTZ }
  133.     if { [info exists env(TZ)] } {
  134. set oldTZ $env(TZ)
  135.     }
  136. } -body {
  137.     set env(TZ) PST8PDT
  138.     set s [clock format 0 -format %H%M]
  139.     set env(TZ) GMT0
  140.     append s -[clock format 0 -format %H%M]
  141. } -cleanup {
  142.     if { [info exists oldTZ] } {
  143. set env(TZ) $oldTZ
  144. unset oldTZ
  145.     } else {
  146. unset env(TZ)
  147.     }
  148. } -result {1600-0000}
  149.     
  150. # clock scan
  151. test clock-4.1 {clock scan tests} {
  152.     list [catch {clock scan} msg] $msg
  153. } {1 {wrong # args: should be "clock scan dateString ?-base clockValue? ?-gmt boolean?"}}
  154. test clock-4.2 {clock scan tests} {
  155.     list [catch {clock scan "bad-string"} msg] $msg
  156. } {1 {unable to convert date-time string "bad-string"}}
  157. test clock-4.3 {clock scan tests} {
  158.     clock format [clock scan "14 Feb 92" -gmt true] 
  159.       -format {%m/%d/%y %I:%M:%S %p} -gmt true
  160. } {02/14/92 12:00:00 AM}
  161. test clock-4.4 {clock scan tests} {
  162.     clock format [clock scan "Feb 14, 1992 12:20 PM" -gmt true] 
  163.       -format {%m/%d/%y %I:%M:%S %p} -gmt true
  164. } {02/14/92 12:20:00 PM}
  165. test clock-4.5 {clock scan tests} {
  166.     clock format 
  167.       [clock scan "Feb 14, 1992 12:20 PM" -base 319363200 -gmt true] 
  168.       -format {%m/%d/%y %I:%M:%S %p} -gmt true
  169. } {02/14/92 12:20:00 PM}
  170. test clock-4.6 {clock scan tests} {
  171.     set time [clock scan "Oct 23,1992 15:00"]
  172.     clock format $time -format {%b %d,%Y %H:%M}
  173. } {Oct 23,1992 15:00}
  174. test clock-4.7 {clock scan tests} {
  175.     set time [clock scan "Oct 23,1992 15:00 GMT"]
  176.     clock format $time -format {%b %d,%Y %H:%M GMT} -gmt true
  177. } {Oct 23,1992 15:00 GMT}
  178. test clock-4.8 {clock scan tests} {
  179.     set time [clock scan "Oct 23,1992 15:00" -gmt true]
  180.     clock format $time -format {%b %d,%Y %H:%M GMT} -gmt true
  181. } {Oct 23,1992 15:00 GMT}
  182. test clock-4.9 {clock scan tests} {
  183.     list [catch {clock scan "Jan 12" -bad arg} msg] $msg
  184. } {1 {bad switch "-bad": must be -base or -gmt}}
  185. # The following two two tests test the two year date policy
  186. test clock-4.10 {clock scan tests} {
  187.     set time [clock scan "1/1/71" -gmt true]
  188.     clock format $time -format {%b %d,%Y %H:%M GMT} -gmt true
  189. } {Jan 01,1971 00:00 GMT}
  190. test clock-4.11 {clock scan tests} {
  191.     set time [clock scan "1/1/37" -gmt true]
  192.     clock format $time -format {%b %d,%Y %H:%M GMT} -gmt true
  193. } {Jan 01,2037 00:00 GMT}
  194. test clock-4.12 {clock scan, relative times} {
  195.     set time [clock scan "Oct 23, 1992 -1 day"]
  196.     clock format $time -format {%b %d, %Y}
  197. } "Oct 22, 1992"
  198. test clock-4.13 {clock scan, ISO 8601 base date format} {
  199.     set time [clock scan "19921023"]
  200.     clock format $time -format {%b %d, %Y}
  201. } "Oct 23, 1992"
  202. test clock-4.14 {clock scan, ISO 8601 expanded date format} {
  203.     set time [clock scan "1992-10-23"]
  204.     clock format $time -format {%b %d, %Y}
  205. } "Oct 23, 1992"
  206. test clock-4.15 {clock scan, DD-Mon-YYYY format} {
  207.     set time [clock scan "23-Oct-1992"]
  208.     clock format $time -format {%b %d, %Y}
  209. } "Oct 23, 1992"
  210. test clock-4.16 {clock scan, ISO 8601 point in time format} {
  211.     set time [clock scan "19921023T235959"]
  212.     clock format $time -format {%b %d, %Y %H:%M:%S}
  213. } "Oct 23, 1992 23:59:59"
  214. test clock-4.17 {clock scan, ISO 8601 point in time format} {
  215.     set time [clock scan "19921023 235959"]
  216.     clock format $time -format {%b %d, %Y %H:%M:%S}
  217. } "Oct 23, 1992 23:59:59"
  218. test clock-4.18 {clock scan, ISO 8601 point in time format} {
  219.     set time [clock scan "19921023T000000"]
  220.     clock format $time -format {%b %d, %Y %H:%M:%S}
  221. } "Oct 23, 1992 00:00:00"
  222. # CLOCK SCAN REAL TESTS
  223. # We use 5am PST, 31-12-1999 as the base for these scans because irrespective
  224. # of your local timezone it should always give us times on December 31, 1999
  225. set 5amPST 946645200
  226. test clock-4.19 {clock scan, number meridian} {
  227.     set t1 [clock scan "5 am" -base $5amPST -gmt true]
  228.     set t2 [clock scan "5 pm" -base $5amPST -gmt true]
  229.     set t3 [clock scan "5 a.m." -base $5amPST -gmt true]
  230.     set t4 [clock scan "5 p.m." -base $5amPST -gmt true]
  231.     list 
  232.     [clock format $t1 -format {%b %d, %Y %H:%M:%S} -gmt true] 
  233.     [clock format $t2 -format {%b %d, %Y %H:%M:%S} -gmt true] 
  234.     [clock format $t3 -format {%b %d, %Y %H:%M:%S} -gmt true] 
  235.     [clock format $t4 -format {%b %d, %Y %H:%M:%S} -gmt true]
  236. } [list "Dec 31, 1999 05:00:00" "Dec 31, 1999 17:00:00" 
  237. "Dec 31, 1999 05:00:00" "Dec 31, 1999 17:00:00"]
  238. test clock-4.20 {clock scan, number:number meridian} {
  239.     clock format [clock scan "5:30 pm" -base $5amPST -gmt true] 
  240.     -format {%b %d, %Y %H:%M:%S} -gmt true
  241. } "Dec 31, 1999 17:30:00"
  242. test clock-4.21 {clock scan, number:number-timezone} {
  243.     clock format [clock scan "00:00-0800" -gmt true -base $5amPST] 
  244.     -format {%b %d, %Y %H:%M:%S} -gmt true
  245. } "Dec 31, 1999 08:00:00"
  246. test clock-4.22 {clock scan, number:number:number o_merid} {
  247.     clock format [clock scan "8:00:00" -gmt true -base $5amPST] 
  248.     -format {%b %d, %Y %H:%M:%S} -gmt true
  249. } "Dec 31, 1999 08:00:00"
  250. test clock-4.23 {clock scan, number:number:number o_merid} {
  251.     clock format [clock scan "8:00:00 am" -gmt true -base $5amPST] 
  252.     -format {%b %d, %Y %H:%M:%S} -gmt true
  253. } "Dec 31, 1999 08:00:00"
  254. test clock-4.24 {clock scan, number:number:number o_merid} {
  255.     clock format [clock scan "8:00:00 pm" -gmt true -base $5amPST] 
  256.     -format {%b %d, %Y %H:%M:%S} -gmt true
  257. } "Dec 31, 1999 20:00:00"
  258. test clock-4.25 {clock scan, number:number:number-timezone} {
  259.     clock format [clock scan "00:00:30-0800" -gmt true -base $5amPST] 
  260.     -format {%b %d, %Y %H:%M:%S} -gmt true
  261. } "Dec 31, 1999 08:00:30"
  262. test clock-4.26 {clock scan, DST for days} {
  263.     clock scan "tomorrow" -base [clock scan "19991031 00:00:00"]
  264. } [clock scan "19991101 00:00:00"]
  265. test clock-4.27 {clock scan, DST for days} {
  266.     clock scan "yesterday" -base [clock scan "19991101 00:00:00"]
  267. } [clock scan "19991031 00:00:00"]
  268. test clock-4.28 {clock scan, day} knownBug {
  269.     clock format [clock scan "Monday" -gmt true -base 946627200] 
  270.     -format {%b %d, %Y %H:%M:%S} -gmt true
  271. } "Jan 03, 2000 00:00:00"
  272. test clock-4.29 {clock scan, number/number} {
  273.     clock format [clock scan "1/1" -gmt true -base 946627200] 
  274.     -format {%b %d, %Y %H:%M:%S} -gmt true
  275. } "Jan 01, 1999 00:00:00"
  276. test clock-4.30 {clock scan, number/number} {
  277.     clock format [clock scan "1/1/1999" -gmt true -base 946627200] 
  278.     -format {%b %d, %Y %H:%M:%S} -gmt true
  279. } "Jan 01, 1999 00:00:00"
  280. test clock-4.31 {clock scan, number/number} {
  281.     clock format [clock scan "19990101" -gmt true -base 946627200] 
  282.     -format {%b %d, %Y %H:%M:%S} -gmt true
  283. } "Jan 01, 1999 00:00:00"
  284. test clock-4.32 {clock scan, relative minutes} {
  285.     clock scan "now + 1 minute" -base 946627200
  286. } 946627260
  287. test clock-4.33 {clock scan, relative minutes} {
  288.     clock scan "now +1 minute" -base 946627200
  289. } 946627260
  290. test clock-4.34 {clock scan, relative minutes} {
  291.     clock scan "now 1 minute" -base 946627200
  292. } 946627260
  293. test clock-4.35 {clock scan, relative minutes} {
  294.     clock scan "now - 1 minute" -base 946627200
  295. } 946627140
  296. test clock-4.36 {clock scan, relative minutes} {
  297.     clock scan "now -1 minute" -base 946627200
  298. } 946627140
  299. test clock-4.37 {clock scan, day of week} {
  300.     clock format [clock scan "wednesday" -base [clock scan 20000112]] 
  301.     -format {%b %d, %Y}
  302. } "Jan 12, 2000"
  303. test clock-4.38 {clock scan, next day of week} {
  304.     clock format [clock scan "next wednesday" -base [clock scan 20000112]] 
  305.     -format {%b %d, %Y}
  306. } "Jan 19, 2000"
  307. test clock-4.39 {clock scan, day of week} {
  308.     clock format [clock scan "thursday" -base [clock scan 20000112]] 
  309.     -format {%b %d, %Y}
  310. } "Jan 13, 2000"
  311. test clock-4.40 {clock scan, next day of week} {
  312.     clock format [clock scan "next thursday" -base [clock scan 20000112]] 
  313.     -format {%b %d, %Y}
  314. } "Jan 20, 2000"
  315. # weekday specification and base.
  316. test clock-4.41 {2nd monday in november} {
  317.     set res {}
  318.     foreach i {91 92 93 94 95 96} {
  319.       set nov8th [clock scan 11/8/$i]
  320.       set monday [clock scan monday -base $nov8th]
  321.       lappend res [clock format $monday -format %Y-%m-%d]
  322.     }
  323.     set res
  324. } {1991-11-11 1992-11-09 1993-11-08 1994-11-14 1995-11-13 1996-11-11}
  325. test clock-4.42 {2nd monday in november (2nd try)} {
  326.     set res {}
  327.     foreach i {91 92 93 94 95 96} {
  328.       set nov1th [clock scan 11/1/$i]
  329.       set monday [clock scan "2 monday" -base $nov1th]
  330.       lappend res [clock format $monday -format %Y-%m-%d]
  331.     }
  332.     set res
  333. } {1991-11-11 1992-11-09 1993-11-08 1994-11-14 1995-11-13 1996-11-11}
  334. test clock-4.43 {last monday in november} {
  335.     set res {}
  336.     foreach i {91 92 93 94 95 96} {
  337.       set dec1th [clock scan 12/1/$i]
  338.       set monday [clock scan "monday 1 week ago" -base $dec1th]
  339.       lappend res [clock format $monday -format %Y-%m-%d]
  340.     }
  341.     set res
  342. } {1991-11-25 1992-11-30 1993-11-29 1994-11-28 1995-11-27 1996-11-25}
  343. test clock-4.44 {2nd monday in november} knownBug {
  344.     set res {}
  345.     foreach i {91 92 93 94 95 96} {
  346.       set nov8th [clock scan 11/8/$i -gmt 1]
  347.       set monday [clock scan monday -base $nov8th -gmt 1]
  348.       lappend res [clock format $monday -format %Y-%m-%d -gmt 1]
  349.     }
  350.     set res
  351. } {1991-11-11 1992-11-09 1993-11-08 1994-11-14 1995-11-13 1996-11-11}
  352. test clock-4.45 {2nd monday in november (2nd try)} knownBug {
  353.     set res {}
  354.     foreach i {91 92 93 94 95 96} {
  355.       set nov1th [clock scan 11/1/$i -gmt 1]
  356.       set monday [clock scan "2 monday" -base $nov1th -gmt 1]
  357.       lappend res [clock format $monday -format %Y-%m-%d -gmt 1]
  358.     }
  359.     set res
  360. } {1991-11-11 1992-11-09 1993-11-08 1994-11-14 1995-11-13 1996-11-11}
  361. test clock-4.46 {last monday in november} knownBug {
  362.     set res {}
  363.     foreach i {91 92 93 94 95 96} {
  364.       set dec1th [clock scan 12/1/$i -gmt 1]
  365.       set monday [clock scan "monday 1 week ago" -base $dec1th -gmt 1]
  366.       lappend res [clock format $monday -format %Y-%m-%d -gmt 1]
  367.     }
  368.     set res
  369. } {1991-11-25 1992-11-30 1993-11-29 1994-11-28 1995-11-27 1996-11-25}
  370. test clock-4.47 {ago with multiple relative units} {
  371.     set base [clock scan "12/31/1999 00:00:00"]
  372.     set res [clock scan "2 days 2 hours ago" -base $base]
  373.     expr {$base - $res}
  374. } 180000
  375. # clock seconds
  376. test clock-5.1 {clock seconds tests} {
  377.     expr [clock seconds]+1
  378.     concat {}
  379. } {}
  380. test clock-5.2 {clock seconds tests} {
  381.     list [catch {clock seconds foo} msg] $msg
  382. } {1 {wrong # args: should be "clock seconds"}}
  383. test clock-5.3 {clock seconds tests} {
  384.     set start [clock seconds]
  385.     after 2000
  386.     set end [clock seconds]
  387.     expr "$end > $start"
  388. } {1}
  389. # The following dates check certain roll over dates
  390. set day [expr 24 * 60 * 60]
  391. test clock-6.1 {clock roll over dates} {
  392.     set time [clock scan "12/31/1998" -gmt true]
  393.     clock format [expr $time + $day] -format {%b %d,%Y %H:%M GMT} -gmt true
  394. } {Jan 01,1999 00:00 GMT}
  395. test clock-6.2 {clock roll over dates} {
  396.     set time [clock scan "12/31/1999" -gmt true]
  397.     clock format [expr $time + $day] -format {%b %d,%Y %H:%M GMT} -gmt true
  398. } {Jan 01,2000 00:00 GMT}
  399. test clock-6.3 {clock roll over dates} {
  400.     set time [clock scan "2/28/2000" -gmt true]
  401.     clock format [expr $time + $day] -format {%b %d,%Y %H:%M GMT} -gmt true
  402. } {Feb 29,2000 00:00 GMT}
  403. test clock-6.4 {clock roll over dates} {
  404.     set time [clock scan "2/29/2000" -gmt true]
  405.     clock format [expr $time + $day] -format {%b %d,%Y %H:%M GMT} -gmt true
  406. } {Mar 01,2000 00:00 GMT}
  407. test clock-6.5 {clock roll over dates} {
  408.     set time [clock scan "January 1, 2000" -gmt true]
  409.     clock format $time -format %A -gmt true
  410. } {Saturday}
  411. test clock-6.6 {clock roll over dates} {
  412.     set time [clock scan "January 1, 2000" -gmt true]
  413.     clock format $time -format %j -gmt true
  414. } {001}
  415. test clock-6.7 {clock roll over dates} {
  416.     set time [clock scan "February 29, 2000" -gmt true]
  417.     clock format $time -format %A -gmt true
  418. } {Tuesday}
  419. test clock-6.8 {clock roll over dates} {
  420.     set time [clock scan "February 29, 2000" -gmt true]
  421.     clock format $time -format %j -gmt true
  422. } {060}
  423. test clock-6.9 {clock roll over dates} {
  424.     set time [clock scan "March 1, 2000" -gmt true]
  425.     clock format $time -format %A -gmt true
  426. } {Wednesday}
  427. test clock-6.10 {clock roll over dates} {
  428.     set time [clock scan "March 1, 2000" -gmt true]
  429.     clock format $time -format %j -gmt true
  430. } {061}
  431. test clock-6.11 {clock roll over dates} {
  432.     set time [clock scan "March 1, 2001" -gmt true]
  433.     clock format $time -format %j -gmt true
  434. } {060}
  435. test clock-7.1 {clock scan next monthname} {
  436.     clock format [clock scan "next june" -base [clock scan "june 1, 2000"]] 
  437.     -format %m.%Y
  438. } "06.2001"
  439. test clock-7.2 {clock scan next monthname} {
  440.     clock format [clock scan "next july" -base [clock scan "june 1, 2000"]] 
  441.     -format %m.%Y
  442. } "07.2000"
  443. test clock-7.3 {clock scan next monthname} {
  444.     clock format [clock scan "next may" -base [clock scan "june 1, 2000"]] 
  445.     -format %m.%Y
  446. } "05.2001"
  447. # We use 5am PST, 31-12-1999 as the base for these scans because irrespective
  448. # of your local timezone it should always give us times on December 31
  449. set 5amPST 946645200
  450. test clock-8.1 {clock scan midnight/gmt range bug 413397} {
  451.     set fmt "%m/%d"
  452.     list [clock format [clock scan year -base $5amPST -gmt 0] -format $fmt] 
  453.     [clock format [clock scan year -base $5amPST -gmt 1] -format $fmt]
  454. } {12/31 12/31}
  455. ::tcltest::testConstraint needPST [expr {
  456.     [regexp {^(Pacific.*|P[DS]T)$} [clock format 1 -format %Z]]
  457.     && ([clock format 1 -format %s] != "%s")
  458. }]
  459. test clock-9.1 {%s gmt testing} {needPST} {
  460.     # Note that this test will fail if the strftime on the underlying
  461.     # system doesn't support the %s format group.  Systems that are known
  462.     # to have trouble include the native C libraries on AIX and HP-UX
  463.     # We need PST to guarantee the difference value below, and %s isn't
  464.     # valid on all OSes (like Solaris).
  465.     set s 100000
  466.     set a [clock format $s -format %s -gmt 0]
  467.     set b [clock format $s -format %s -gmt 1]
  468.     # This should be the offset in seconds between current locale and GMT.
  469.     # This didn't seem to be correctly on Windows until the fix for
  470.     # Bug #559376, which fiddled with env(TZ) when -gmt 1 was used.
  471.     # It's hard-coded to check P[SD]T now. (8 hours)
  472.     set c [expr {$b-$a}]
  473. } {28800}
  474. ::tcltest::testConstraint percentG 
  475.     [expr { ![catch { clock format 0 -format %G -gmt true } y1970]
  476.     && $y1970 eq {1970} }]
  477. test clock-10.0 {Can strftime do %G?} {
  478.     clock format 0 -format %G -gmt true
  479. } 1970
  480. test clock-10.1 {ISO week-based calendar 2000-W52-1} {percentG} {
  481.     clock format 977702400 -format {%a %A %g %G %u %V %w} -gmt true; # 2000-12-25
  482. } {Mon Monday 00 2000 1 52 1}
  483. test clock-10.2 {ISO week-based calendar 2000-W52-7} {percentG} {
  484.     clock format 978220800 -format {%a %A %g %G %u %V %w} -gmt true; # 2000-12-31
  485. } {Sun Sunday 00 2000 7 52 0}
  486. test clock-10.3 {ISO week-based calendar 2001-W01-1} {percentG} {
  487.     clock format 978307200 -format {%a %A %g %G %u %V %w} -gmt true; # 2001-1-1
  488. } {Mon Monday 01 2001 1 01 1}
  489. test clock-10.4 {ISO week-based calendar 2001-W01-7} {percentG} {
  490.     clock format 978825600 -format {%a %A %g %G %u %V %w} -gmt true; # 2001-1-7
  491. } {Sun Sunday 01 2001 7 01 0}
  492. test clock-10.5 {ISO week-based calendar 2001-W02-1} {percentG} {
  493.     clock format 978912000 -format {%a %A %g %G %u %V %w} -gmt true; # 2001-1-8
  494. } {Mon Monday 01 2001 1 02 1}
  495. test clock-10.6 {ISO week-based calendar 2001-W52-1} {percentG} {
  496.     clock format 1009152000 -format {%a %A %g %G %u %V %w} -gmt true; # 2001-12-24
  497. } {Mon Monday 01 2001 1 52 1}
  498. test clock-10.7 {ISO week-based calendar 2001-W52-7} {percentG} {
  499.     clock format 1009670400 -format {%a %A %g %G %u %V %w} -gmt true; # 2001-12-30
  500. } {Sun Sunday 01 2001 7 52 0}
  501. test clock-10.8 {ISO week-based calendar 2002-W01-1} {percentG} {
  502.     clock format 1009756800 -format {%a %A %g %G %u %V %w} -gmt true; # 2001-12-31
  503. } {Mon Monday 02 2002 1 01 1}
  504. test clock-10.9 {ISO week-based calendar 2002-W01-2} {percentG} {
  505.     clock format 1009843200 -format {%a %A %g %G %u %V %w} -gmt true; # 2002-1-1
  506. } {Tue Tuesday 02 2002 2 01 2}
  507. test clock-10.10 {ISO week-based calendar 2002-W01-7} {percentG} {
  508.     clock format 1010275200 -format {%a %A %g %G %u %V %w} -gmt true; # 2002-1-6
  509. } {Sun Sunday 02 2002 7 01 0}
  510. test clock-10.11 {ISO week-based calendar 2002-W02-1} {percentG} {
  511.     clock format 1010361600 -format {%a %A %g %G %u %V %w} -gmt true; # 2002-1-7
  512. } {Mon Monday 02 2002 1 02 1}
  513. test clock-10.12 {ISO week-based calendar 2002-W52-1} {percentG} {
  514.     clock format 1040601600 -format {%a %A %g %G %u %V %w} -gmt true; # 2002-12-23
  515. } {Mon Monday 02 2002 1 52 1}
  516. test clock-10.13 {ISO week-based calendar 2002-W52-7} {percentG} {
  517.     clock format 1041120000 -format {%a %A %g %G %u %V %w} -gmt true; # 2002-12-29
  518. } {Sun Sunday 02 2002 7 52 0}
  519. test clock-10.14 {ISO week-based calendar 2003-W01-1} {percentG} {
  520.     clock format 1041206400 -format {%a %A %g %G %u %V %w} -gmt true; # 2002-12-30
  521. } {Mon Monday 03 2003 1 01 1}
  522. test clock-10.15 {ISO week-based calendar 2003-W01-2} {percentG} {
  523.     clock format 1041292800 -format {%a %A %g %G %u %V %w} -gmt true; # 2002-12-31
  524. } {Tue Tuesday 03 2003 2 01 2}
  525. test clock-10.16 {ISO week-based calendar 2003-W01-3} {percentG} {
  526.     clock format 1041379200 -format {%a %A %g %G %u %V %w} -gmt true; # 2003-1-1
  527. } {Wed Wednesday 03 2003 3 01 3}
  528. test clock-10.17 {ISO week-based calendar 2003-W01-7} {percentG} {
  529.     clock format 1041724800 -format {%a %A %g %G %u %V %w} -gmt true; # 2003-1-5
  530. } {Sun Sunday 03 2003 7 01 0}
  531. test clock-10.18 {ISO week-based calendar 2003-W02-1} {percentG} {
  532.     clock format 1041811200 -format {%a %A %g %G %u %V %w} -gmt true; # 2003-1-6
  533. } {Mon Monday 03 2003 1 02 1}
  534. test clock-10.19 {ISO week-based calendar 2003-W52-1} {percentG} {
  535.     clock format 1072051200 -format {%a %A %g %G %u %V %w} -gmt true; # 2003-12-22
  536. } {Mon Monday 03 2003 1 52 1}
  537. test clock-10.20 {ISO week-based calendar 2003-W52-7} {percentG} {
  538.     clock format 1072569600 -format {%a %A %g %G %u %V %w} -gmt true; # 2003-12-28
  539. } {Sun Sunday 03 2003 7 52 0}
  540. test clock-10.21 {ISO week-based calendar 2004-W01-1} {percentG} {
  541.     clock format 1072656000 -format {%a %A %g %G %u %V %w} -gmt true; # 2003-12-29
  542. } {Mon Monday 04 2004 1 01 1}
  543. test clock-10.22 {ISO week-based calendar 2004-W01-3} {percentG} {
  544.     clock format 1072828800 -format {%a %A %g %G %u %V %w} -gmt true; # 2003-12-31
  545. } {Wed Wednesday 04 2004 3 01 3}
  546. test clock-10.23 {ISO week-based calendar 2004-W01-4} {percentG} {
  547.     clock format 1072915200 -format {%a %A %g %G %u %V %w} -gmt true; # 2004-1-1
  548. } {Thu Thursday 04 2004 4 01 4}
  549. test clock-10.24 {ISO week-based calendar 2004-W01-7} {percentG} {
  550.     clock format 1073174400 -format {%a %A %g %G %u %V %w} -gmt true; # 2004-1-4
  551. } {Sun Sunday 04 2004 7 01 0}
  552. test clock-10.25 {ISO week-based calendar 2004-W02-1} {percentG} {
  553.     clock format 1073260800 -format {%a %A %g %G %u %V %w} -gmt true; # 2004-1-5
  554. } {Mon Monday 04 2004 1 02 1}
  555. test clock-10.26 {ISO week-based calendar 2004-W52-1} {percentG} {
  556.     clock format 1103500800 -format {%a %A %g %G %u %V %w} -gmt true; # 2004-12-20
  557. } {Mon Monday 04 2004 1 52 1}
  558. test clock-10.27 {ISO week-based calendar 2004-W52-7} {percentG} {
  559.     clock format 1104019200 -format {%a %A %g %G %u %V %w} -gmt true; # 2004-12-26
  560. } {Sun Sunday 04 2004 7 52 0}
  561. test clock-10.28 {ISO week-based calendar 2004-W53-1} {percentG} {
  562.     clock format 1104105600 -format {%a %A %g %G %u %V %w} -gmt true; # 2004-12-27
  563. } {Mon Monday 04 2004 1 53 1}
  564. test clock-10.29 {ISO week-based calendar 2004-W53-5} {percentG} {
  565.     clock format 1104451200 -format {%a %A %g %G %u %V %w} -gmt true; # 2004-12-31
  566. } {Fri Friday 04 2004 5 53 5}
  567. test clock-10.30 {ISO week-based calendar 2004-W53-6} {percentG} {
  568.     clock format 1104537600 -format {%a %A %g %G %u %V %w} -gmt true; # 2005-1-1
  569. } {Sat Saturday 04 2004 6 53 6}
  570. test clock-10.31 {ISO week-based calendar 2004-W53-7} {percentG} {
  571.     clock format 1104624000 -format {%a %A %g %G %u %V %w} -gmt true; # 2005-1-2
  572. } {Sun Sunday 04 2004 7 53 0}
  573. test clock-10.32 {ISO week-based calendar 2005-W01-1} {percentG} {
  574.     clock format 1104710400 -format {%a %A %g %G %u %V %w} -gmt true; # 2005-1-3
  575. } {Mon Monday 05 2005 1 01 1}
  576. test clock-10.33 {ISO week-based calendar 2005-W01-7} {percentG} {
  577.     clock format 1105228800 -format {%a %A %g %G %u %V %w} -gmt true; # 2005-1-9
  578. } {Sun Sunday 05 2005 7 01 0}
  579. test clock-10.34 {ISO week-based calendar 2005-W02-1} {percentG} {
  580.     clock format 1105315200 -format {%a %A %g %G %u %V %w} -gmt true; # 2005-1-10
  581. } {Mon Monday 05 2005 1 02 1}
  582. test clock-10.35 {ISO week-based calendar 2005-W52-1} {percentG} {
  583.     clock format 1135555200 -format {%a %A %g %G %u %V %w} -gmt true; # 2005-12-26
  584. } {Mon Monday 05 2005 1 52 1}
  585. test clock-10.36 {ISO week-based calendar 2005-W52-6} {percentG} {
  586.     clock format 1135987200 -format {%a %A %g %G %u %V %w} -gmt true; # 2005-12-31
  587. } {Sat Saturday 05 2005 6 52 6}
  588. test clock-10.37 {ISO week-based calendar 2005-W52-7} {percentG} {
  589.     clock format 1136073600 -format {%a %A %g %G %u %V %w} -gmt true; # 2006-1-1
  590. } {Sun Sunday 05 2005 7 52 0}
  591. test clock-10.38 {ISO week-based calendar 2006-W01-1} {percentG} {
  592.     clock format 1136160000 -format {%a %A %g %G %u %V %w} -gmt true; # 2006-1-2
  593. } {Mon Monday 06 2006 1 01 1}
  594. test clock-10.39 {ISO week-based calendar 2006-W01-7} {percentG} {
  595.     clock format 1136678400 -format {%a %A %g %G %u %V %w} -gmt true; # 2006-1-8
  596. } {Sun Sunday 06 2006 7 01 0}
  597. test clock-10.40 {ISO week-based calendar 2006-W02-1} {percentG} {
  598.     clock format 1136764800 -format {%a %A %g %G %u %V %w} -gmt true; # 2006-1-9
  599. } {Mon Monday 06 2006 1 02 1}
  600. test clock-10.41 {ISO week-based calendar 2009-W52-1} {percentG} {
  601.     clock format 1261353600 -format {%a %A %g %G %u %V %w} -gmt true; # 2009-12-21
  602. } {Mon Monday 09 2009 1 52 1}
  603. test clock-10.42 {ISO week-based calendar 2009-W52-7} {percentG} {
  604.     clock format 1261872000 -format {%a %A %g %G %u %V %w} -gmt true; # 2009-12-27
  605. } {Sun Sunday 09 2009 7 52 0}
  606. test clock-10.43 {ISO week-based calendar 2009-W53-1} {percentG} {
  607.     clock format 1261958400 -format {%a %A %g %G %u %V %w} -gmt true; # 2009-12-28
  608. } {Mon Monday 09 2009 1 53 1}
  609. test clock-10.44 {ISO week-based calendar 2009-W53-4} {percentG} {
  610.     clock format 1262217600 -format {%a %A %g %G %u %V %w} -gmt true; # 2009-12-31
  611. } {Thu Thursday 09 2009 4 53 4}
  612. test clock-10.45 {ISO week-based calendar 2009-W53-5} {percentG} {
  613.     clock format 1262304000 -format {%a %A %g %G %u %V %w} -gmt true; # 2010-1-1
  614. } {Fri Friday 09 2009 5 53 5}
  615. test clock-10.46 {ISO week-based calendar 2009-W53-7} {percentG} {
  616.     clock format 1262476800 -format {%a %A %g %G %u %V %w} -gmt true; # 2010-1-3
  617. } {Sun Sunday 09 2009 7 53 0}
  618. test clock-10.47 {ISO week-based calendar 2010-W01-1} {percentG} {
  619.     clock format 1262563200 -format {%a %A %g %G %u %V %w} -gmt true; # 2010-1-4
  620. } {Mon Monday 10 2010 1 01 1}
  621. test clock-10.48 {ISO week-based calendar 2010-W01-7} {percentG} {
  622.     clock format 1263081600 -format {%a %A %g %G %u %V %w} -gmt true; # 2010-1-10
  623. } {Sun Sunday 10 2010 7 01 0}
  624. test clock-10.49 {ISO week-based calendar 2010-W02-1} {percentG} {
  625.     clock format 1263168000 -format {%a %A %g %G %u %V %w} -gmt true; # 2010-1-11
  626. } {Mon Monday 10 2010 1 02 1}
  627. test clock-41.1 {regression test - format group %k when hour is 0 } {
  628.     clock format 0 -format %k -gmt true
  629. } { 0}
  630. # cleanup
  631. ::tcltest::cleanupTests
  632. return