# # clock.test # # Tests for deprecated TclX clock commands: getclock, fmtclock and # convertclock. #--------------------------------------------------------------------------- # Copyright 1992-1999 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: clock.test,v 1.1 2001/10/24 23:31:49 hobbs Exp $ #------------------------------------------------------------------------------ # # FIX: Currently strftime use of %Z (or any unknown format spec) causes core # dumps on MS VC++. Remove constraints when base Tcl works around the problem. if [cequal [info procs Test] {}] {source testlib.tcl} eval $SAVED_UNKNOWN # Try getclock, hard to test the result, make sure its a number Test clock-1.1 {getclock tests} { expr [getclock]+1 concat {} } 0 {} Test clock-1.2 {getclock tests} { getclock 1990 } 1 {called "getclock" with too many arguments} # Test fmtclock Test clock-2.1 {fmtclock tests} { set clockval 657687766 fmtclock $clockval {%a %b %d %I:%M:%S %p %Y} GMT } 0 {Sun Nov 04 03:02:46 AM 1990} Test clock-2.2 {fmtclock tests} { fmtclock } 1 {no value given for parameter "clockval" to "fmtclock"} set large [replicate XYZabc 500] Test clock-2.2 {fmtclock tests} { set clockval 657687766 fmtclock $clockval "%a %b %d %I:%M:%S %p %Y $large" GMT } 0 "Sun Nov 04 03:02:46 AM 1990 $large" unset large # Test convertclock Test clock-3.1 {convertclock tests} { convertclock } 1 {no value given for parameter "dateString" to "convertclock"} Test clock-3.2 {convertclock tests} { fmtclock [convertclock "14 Feb 92" GMT] {%m/%d/%y %I:%M:%S %p} GMT } 0 {02/14/92 12:00:00 AM} Test clock-3.3 {convertclock tests} { fmtclock [convertclock "Feb 14, 1992 12:20 PM" GMT] {%m/%d/%y %I:%M:%S %p} GMT } 0 {02/14/92 12:20:00 PM} Test clock-3.5 {convertclock tests} { fmtclock [convertclock "Feb 14, 1992 12:20 PM" {GMT} 319363200] {%m/%d/%y %I:%M:%S %p} GMT } 0 {02/14/92 12:20:00 PM} Test clock-3.6 {convertclock tests} { set clock [convertclock "Oct 23,1992 15:00"] fmtclock $clock {%b %d,%Y %H:%M} } 0 {Oct 23,1992 15:00} Test clock-3.7 {convertclock tests} { set clock [convertclock "Oct 23,1992 15:00 GMT"] fmtclock $clock {%b %d,%Y %H:%M GMT} GMT } 0 {Oct 23,1992 15:00 GMT} Test clock-3.8 {convertclock tests} { set clock [convertclock "Oct 23,1992 15:00" GMT] fmtclock $clock {%b %d,%Y %H:%M GMT} GMT } 0 {Oct 23,1992 15:00 GMT} # Test if local timezone works when not explicitly specified. Test clock-3.9 {convertclock tests} { # WARNING: This test might fail if your symbolic timezone name conflicts # with names use in other parts of the world or if the symbolic zone is # returns an incorrect value. # # o EST for Australian Eastern Summer Time. # o EST for Australian Eastern Standard Time. # o On some systems, a "TZ=GMT+2" results in strftime returning a # time zone of just "GMT". # # Don't worry about these failures. set clock [getclock] set ourzone [fmtclock $clock %Z] set intime [fmtclock $clock {%a %h %d %T %Y}] set cnv1 [convertclock $intime] set cnv2 [convertclock "$intime $ourzone"] if {$cnv1 == $cnv2} { concat OK } else { error "different resulting times: $cnv1, $cnv2" } } 0 OK {tempNotPc} set fmt {%m/%d/%y %I:%M:%S %p} foreach hour {01 02 03 04 05 06 07 08 09 10 11 12} { foreach min {00 01 59} { foreach med {AM PM} { Test clock-4.0 {convertclock tests} { fmtclock [convertclock "1/1/72 $hour:$min:00 $med"] $fmt } 0 "01/01/72 $hour:$min:00 $med" Test clock-4.1 {convertclock tests} { fmtclock [convertclock "1/1/72 $hour:$min:00 $med" GMT] $fmt GMT } 0 "01/01/72 $hour:$min:00 $med" {unixOnly} } } } rename unknown {}