# Command covered: geomap::place # # This script file tests the commands in the tclgeomap package. See the # tclgeomap man page for a description of the package. See the tcltest # man page for a description of Tcl's testing proc's. # # Copyright (c) 2004 Gordon D. Carrie. All rights reserved. # # Licensed under the Open Software License version 2.1 # # Please address questions and feedback to user0@tkgeomap.org # # @(#) $Id: tcl_geomap_place.test,v 1.4 2004/09/22 21:57:51 tkgeomap Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest namespace import ::tcltest::* } package require tclgeomap 2 test tcl_geomap_place-1.1 {::geomap::place new, wrong number of arguments} { catch {::geomap::place new p1} msg set msg } {wrong # args: should be "::geomap::place new placeName {lat lon}"} test tcl_geomap_place-1.2 {::geomap::place new, normal call} { ::geomap::place new p1 {0.0 10.0} list p1 [p1 set] } {p1 {0.0 10.0}} rename p1 {} test tcl_geomap_place-2.1 {place set, wrong number of arguments} { catch {::geomap::place set} msg set msg } {wrong # args: should be "::geomap::place set placeName ?{lat lon}?"} test tcl_geomap_place-2.2 {::geomap::place set, creating a place} { ::geomap::place set p1 {10.0 10.0} list p1 [p1 set] } {p1 {10.0 10.0}} rename p1 {} test tcl_geomap_place-2.3 {::geomap::place set, moving places} { ::geomap::place new p1 {10.0 10.0} ::geomap::place set p2 {20.0 20.0} set placeList [list p1 [p1 set] p2 [p2 set]] ::geomap::place set p1 {11.0 11.0} ::geomap::place set p2 {21.0 21.0} concat $placeList [list p1 [p1 set] p2 [p2 set]] } {p1 {10.0 10.0} p2 {20.0 20.0} p1 {11.0 11.0} p2 {21.0 21.0}} rename p1 {} rename p2 {} test tcl_geomap_place-2.4 {::geomap::place set, placeName set, moving places} { ::geomap::place set p1 {11.0 11.0} ::geomap::place set p2 {21.0 21.0} set placeList [list p1 [p1 set] p2 [p2 set]] p1 set {12.0 12.0} p2 set {22.0 22.0} concat $placeList [list p1 [p1 set] p2 [p2 set]] } {p1 {11.0 11.0} p2 {21.0 21.0} p1 {12.0 12.0} p2 {22.0 22.0}} rename p1 {} rename p2 {} test tcl_geomap_place-4.1 {::geomap::place distance, wrong number of arguments} { catch {::geomap::place distance} msg set msg } {wrong # args: should be "::geomap::place distance placeOR{lat lon} placeOR{lat lon} ?unit?"} test tcl_geomap_place-4.2 {::geomap::place distance, two places} { ::geomap::place new p1 {0.0 0.0} ::geomap::place new p2 {0.0 10.0} ::geomap::place distance p1 p2 } {10.0} rename p1 {} rename p2 {} test tcl_geomap_place-4.3 {::geomap::place distance, two coordinate pairs} { ::geomap::place distance {80.0 -10.0} {75.0 170.0} } {25.0} test tcl_geomap_place-4.4 {::geomap::place distance, place and coordinate pair} { ::geomap::place new p1 {0.0 170.0} ::geomap::place distance p1 {75.0 170.0} } {75.0} rename p1 {} test tcl_geomap_place-4.5 {::geomap::place distance, error with a place in namespace} { namespace eval n1 { ::geomap::place new [namespace current]::p1 {0.0 170.0} } catch {::geomap::place distance {75.0 170.0} p1} msg set msg } {p1 not a location} namespace delete n1 test tcl_geomap_place-4.6 {::geomap::place distance, with a place in namespace} { namespace eval n1 { ::geomap::place new [namespace current]::p1 {0.0 170.0} } namespace eval n1 { ::geomap::place distance {75.0 170.0} p1 } } {75.0} namespace delete n1 test tcl_geomap_place-4.7 {::geomap::place distance, two places, answer with unit} { ::geomap::place new p1 {0.0 0.0} ::geomap::place new p2 {0.0 10.0} ::geomap::place distance p1 p2 km } {1111.2} rename p1 {} rename p2 {} test tcl_geomap_place-4.8 {::geomap::place distance, two places, answer with unit} { ::geomap::place new p1 {0.0 0.0} ::geomap::place new p2 {0.0 10.0} ::geomap::place distance p1 p2 nmile } {600.0} rename p1 {} rename p2 {} test tcl_geomap_place-5.1 {::geomap::place azrng, wrong number of arguments} { catch {::geomap::place azrng} msg set msg } {wrong # args: should be "::geomap::place azrng placeOR{lat lon} placeOR{lat lon} ?unit?"} test tcl_geomap_place-5.2 {::geomap::place azrng} { ::geomap::place new p1 {-1.0 -1.0} ::geomap::place new p2 {1.0 1.0} eval format {%.1f\ %.1f} [::geomap::place azrng p1 p2] } {45.0 2.8} rename p1 {} rename p2 {} test tcl_geomap_place-6.1 {::geomap::place nearest, wrong number of arguments} { catch {::geomap::place nearest} msg set msg } {wrong # args: should be "::geomap::place nearest placeOR{lat lon} {place place ...}"} test tcl_geomap_place-6.2 {::geomap::place nearest} { ::geomap::place new p1 {0 0} ::geomap::place new p2 {1 1} ::geomap::place new p3 {2 2} ::geomap::place nearest p1 {p1 p2 p3} } {p2} rename p1 {} rename p2 {} rename p3 {} test tcl_geomap_place-6.3 {placeName nearest, bad place list} { ::geomap::place new p1 {0 0} catch {p1 nearest foo} msg set msg } {No place named foo in current namespace.} rename p1 {} test tcl_geomap_place-6.4 {::geomap::place nearest, placeName command} { ::geomap::place new p1 {0 0} ::geomap::place new p2 {1 1} ::geomap::place new p3 {2 2} p1 nearest {p1 p2 p3} } {p2} rename p1 {} rename p2 {} rename p3 {} test tcl_geomap_place-7.1 {::geomap::place step, wrong number of arguments} { catch {::geomap::place step} msg set msg } {wrong # args: should be "::geomap::place step placeName bearing range ?unit?"} test tcl_geomap_place-7.2 {::geomap::place step} { ::geomap::place new p1 {0 0} ::geomap::place step p1 0.0 10.0 } {10.0 0.0} rename p1 {} test tcl_geomap_place-7.3 {::geomap::place step with unit} { ::geomap::place new p1 {0 0} eval format {%.2f\ %.2f} [::geomap::place step p1 45.0 100.0 km] } {0.64 0.64} rename p1 {} test tcl_geomap_place-7.4 {::geomap::place step with unit error} { ::geomap::place new p1 {0 0} catch "::geomap::place step p1 45.0 100.0 leagues" msg set msg } {bad unit "leagues": must be nmiles, smiles, km, or gsdeg} rename p1 {} test tcl_geomap_place-7.5 {::geomap::place step with bearing word} { ::geomap::place new p1 {0 0} eval format {%.2f\ %.2f} [::geomap::place step p1 ne 100.0 km] } {0.64 0.64} rename p1 {} test tcl_geomap_place-7.6 {::geomap::place step with bad bearing word} { ::geomap::place new p1 {0 0} catch "::geomap::place step p1 thataway 100.0 km" msg set msg } {bad bearing "thataway": must be north, nneast, neast, eneast, east, eseast, seast, sseast, south, sswest, swest, wswest, west, wnwest, nwest, or nnwest, or a double value} rename p1 {} test tcl_geomap_place-7.7 {placeName step, wrong number of arguments} { ::geomap::place new p1 {0 0} catch {p1 step} msg set msg } {wrong # args: should be "p1 step bearing range ?unit?"} rename p1 {} test tcl_geomap_place-8.1 {::geomap::place inrange} { ::geomap::place new p1 {0 0} ::geomap::place new p2 {3 3} ::geomap::place new p3 {4 4} ::geomap::place new p4 {2 2} lsort [::geomap::place inrange p1 4.5 {p1 p2 p3 p4}] } {p2 p4} rename p1 {} rename p2 {} rename p3 {} rename p4 {} test tcl_geomap_place-8.2 {::geomap::place inrange, wrong number of arguments} { catch {::geomap::place inrange} msg set msg } {wrong # args: should be "::geomap::place inrange placeNameOR{lat lon} {range ?unit?} {place place ...}"} test tcl_geomap_place-8.3 {::geomap::place inrange, with placeName command} { ::geomap::place new p1 {0 0} ::geomap::place new p2 {1 1} ::geomap::place new p3 {4 4} ::geomap::place new p4 {1 1} lsort [p1 inrange 4.0 {p1 p2 p3 p4}] } {p2 p4} rename p1 {} rename p2 {} rename p3 {} rename p4 {} test tcl_geomap_place-8.5 {::geomap::place inrange, with unit} { ::geomap::place new p1 {0 0} ::geomap::place new p2 {1 1} ::geomap::place new p3 {4 4} ::geomap::place new p4 {1 1} lsort [p1 inrange {400.0 km} {p1 p2 p3 p4}] } {p2 p4} cleanupTests