diff options
author | William Joye <wjoye@cfa.harvard.edu> | 2016-12-21 22:56:22 (GMT) |
---|---|---|
committer | William Joye <wjoye@cfa.harvard.edu> | 2016-12-21 22:56:22 (GMT) |
commit | d1a6de55efc90f190dee42ab8c4fa9070834e77d (patch) | |
tree | ec633f5608ef498bee52a5f42c12c49493ec8bf8 /tcl8.6/tests/platform.test | |
parent | 5514e37335c012cc70f5b9aee3cedfe3d57f583f (diff) | |
parent | 98acd3f494b28ddd8c345a2bb9311e41e2d56ddd (diff) | |
download | blt-d1a6de55efc90f190dee42ab8c4fa9070834e77d.zip blt-d1a6de55efc90f190dee42ab8c4fa9070834e77d.tar.gz blt-d1a6de55efc90f190dee42ab8c4fa9070834e77d.tar.bz2 |
Merge commit '98acd3f494b28ddd8c345a2bb9311e41e2d56ddd' as 'tcl8.6'
Diffstat (limited to 'tcl8.6/tests/platform.test')
-rw-r--r-- | tcl8.6/tests/platform.test | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/tcl8.6/tests/platform.test b/tcl8.6/tests/platform.test new file mode 100644 index 0000000..c826444 --- /dev/null +++ b/tcl8.6/tests/platform.test @@ -0,0 +1,84 @@ +# The file tests the tcl_platform variable and platform package. +# +# This file contains a collection of tests for one or more of the Tcl +# built-in commands. Sourcing this file into Tcl runs the tests and +# generates output for errors. No output means no errors were found. +# +# Copyright (c) 1999 by Scriptics Corporation +# +# See the file "license.terms" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. + +package require tcltest 2 + +namespace eval ::tcl::test::platform { + namespace import ::tcltest::testConstraint + namespace import ::tcltest::test + namespace import ::tcltest::cleanupTests + + variable ::tcl_platform + +::tcltest::loadTestedCommands +catch [list package require -exact Tcltest [info patchlevel]] + +testConstraint testCPUID [llength [info commands testcpuid]] + +test platform-1.0 {tcl_platform(engine)} { + set tcl_platform(engine) +} {Tcl} + +test platform-1.1 {TclpSetVariables: tcl_platform} { + interp create i + i eval {catch {unset tcl_platform(debug)}} + i eval {catch {unset tcl_platform(threaded)}} + set result [i eval {lsort [array names tcl_platform]}] + interp delete i + set result +} {byteOrder engine machine os osVersion pathSeparator platform pointerSize user wordSize} + +# Test assumes twos-complement arithmetic, which is true of virtually +# everything these days. Note that this does *not* use wide(), and +# this is intentional since that could make Tcl's numbers wider than +# the machine-integer on some platforms... +test platform-2.1 {tcl_platform(wordSize) indicates size of native word} { + set result [expr {int(1 << (8 * $tcl_platform(wordSize) - 1))}] + # Result must be the largest bit in a machine word, which this checks + # without assuming how wide the word really is + list [expr {$result < 0}] [expr {$result ^ int($result - 1)}] +} {1 -1} + +# On Windows/UNIX, test that the CPU ID works + +test platform-3.1 {CPU ID on Windows/UNIX} \ + -constraints testCPUID \ + -body { + set cpudata [testcpuid 0] + binary format iii \ + [lindex $cpudata 1] \ + [lindex $cpudata 3] \ + [lindex $cpudata 2] + } \ + -match regexp \ + -result {^(?:AuthenticAMD|CentaurHauls|CyrixInstead|GenuineIntel)$} + +# The platform package makes very few promises, but does promise that the +# format of string it produces consists of two non-empty words separated by a +# hyphen. +package require platform +test platform-4.1 {format of platform::identify result} -match regexp -body { + platform::identify +} -result {^([^-]+-)+[^-]+$} +test platform-4.2 {format of platform::generic result} -match regexp -body { + platform::generic +} -result {^([^-]+-)+[^-]+$} + +# cleanup +cleanupTests + +} +namespace delete ::tcl::test::platform +return + +# Local Variables: +# mode: tcl +# End: |