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

通讯编程

开发平台:

Visual C++

  1. # This file tests the tclWinTime.c file.
  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) 1997 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: winTime.test,v 1.8.2.1 2003/04/12 20:11:34 kennykb Exp $
  14. if {[lsearch [namespace children] ::tcltest] == -1} {
  15.     package require tcltest
  16.     namespace import -force ::tcltest::*
  17. }
  18. testConstraint testwinclock [llength [info commands testwinclock]]
  19. # The next two tests will crash on Windows if the check for negative
  20. # clock values is not done properly.
  21. test winTime-1.1 {TclpGetDate} {pcOnly} {
  22.     set ::env(TZ) JST-9
  23.     set result [clock format -1 -format %Y]
  24.     unset ::env(TZ)
  25.     set result
  26. } {1970}
  27. test winTime-1.2 {TclpGetDate} {pcOnly} {
  28.     set ::env(TZ) PST8
  29.     set result [clock format 1 -format %Y]
  30.     unset ::env(TZ)
  31.     set result
  32. } {1969}
  33. # Next test tries to make sure that the Tcl clock stays in step
  34. # with the Windows clock.  30 sec really isn't enough,
  35. # but how much time does a tester have patience for?
  36. test winTime-2.1 {Synchronization of Tcl and Windows clocks} {testwinclock} {
  37.     # May fail due to OS/hardware discrepancies.  See:
  38.     # http://support.microsoft.com/default.aspx?scid=kb;en-us;274323
  39.     set failed {}
  40.     set ok 1
  41.     foreach start_sec [testwinclock] break
  42.     while { 1 } {
  43. foreach { sys_sec sys_usec tcl_sec tcl_usec } [testwinclock] break
  44. set diff [expr { $tcl_sec - $sys_sec
  45.  + 1.0e-6 * ( $tcl_usec - $sys_usec ) }]
  46.         if { abs($diff) > 0.06 } {
  47.     set failed "Tcl clock differs from system clock by $diff sec"
  48.     break
  49. } else {
  50.     testwinsleep 1
  51. }
  52. if { $sys_sec - $start_sec >= 30 } break
  53.     }
  54.     set failed
  55. } {}
  56. # cleanup
  57. ::tcltest::cleanupTests
  58. return