source: trunk/optimizer/tests/aaa.test @ 903

Last change on this file since 903 was 903, checked in by mmc, 17 years ago

Final tweaks on the optimization package. The demo now works properly.
Just run "wish simple.tcl" to see it work.

Fixed the Tool class to work better with the optimizer. The "run"
method now returns the result directly as a Rappture::Library object,
and the Analyzer merely loads the object.

File size: 4.4 KB
RevLine 
[897]1# ----------------------------------------------------------------------
2#  TESTS FOR:  Rappture::optimizer
3#
4#  This file contains a collection of tests for Tcl commands driving
5#  the RapptureOptimizer package.
6#
7# ======================================================================
8#  AUTHOR:  Michael McLennan, Purdue University
9#  Copyright (c) 2008  Purdue Research Foundation
10#
11#  See the file "license.terms" for information on usage and
12#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
13# ======================================================================
14#
15# Load the tcltest package...
16if {[lsearch [namespace children] ::tcltest] < 0} {
17    package require tcltest 2
18    namespace import -force ::tcltest::*
19}
20
21test aaa-0.1 {RapptureOptimizer package can be loaded} {
22    set status [catch {package require RapptureOptimizer} result]
23    if {$status != 0} {
24        # must not be installed yet -- use build version
25        lappend auto_path ../src
26        set status [catch {package require RapptureOptimizer} result]
27    }
28    list $status $result
29} {0 1.0}
30
31test aaa-1.1 {create an optimizer object} {
32  list [catch {Rappture::optimizer} result] $result
33} {0 optimizer0}
34
35test aaa-1.2 {create an optimizer object with a given name} {
36  list [catch {Rappture::optimizer foo} result] $result
37} {0 foo}
38
39test aaa-1.3 {can't clobber a name that already exists} {
40  list [catch {Rappture::optimizer set} result] $result
41} {1 {command "set" already exists}}
42
43test aaa-1.4 {optimizer creation takes certain args} {
44  list [catch {Rappture::optimizer -foo} result] $result
[898]45} {1 {bad option "-foo": should be -tool, -using}}
[897]46
47test aaa-1.5 {optimizer creation: -using requires a value} {
48  list [catch {Rappture::optimizer -using} result] $result
49} {1 {missing value for option "-using"}}
50
51test aaa-1.6 {optimizer creation: -using requires particular values} {
52  list [catch {Rappture::optimizer -using foo} result] $result
53} {1 {bad plugin name "foo": should be pgapack}}
54
55test aaa-1.7 {optimizer creation: extra args are processed} {
56  list [catch {Rappture::optimizer -using pgapack -foo bar} result] $result
[898]57} {1 {bad option "-foo": should be -tool, -using}}
[897]58
59test aaa-1.8 {optimizer can be destroyed without dumping core} {
60  rename foo ""
61  rename optimizer0 ""
62} {}
63
64# ----------------------------------------------------------------------
65test aaa-2.1 {create an optimizer and add parameters to it} {
66  Rappture::optimizer ctxt
67  ctxt add number input.temperature -min 0 -max 1
68  ctxt get
[903]69} {input.temperature number -min 0.0 -max 1.0}
[897]70
71test aaa-2.2 {add a parameter with a bad type} {
72  list [catch {ctxt add foo input.wrong -bar test} result] $result
73} {1 {bad parameter type "foo": should be number, string}}
74
75test aaa-2.3 {add a number parameter with a missing option} {
76  list [catch {ctxt add number input.wrong -min} result] $result
77} {1 {missing value for option "-min"}}
78
79test aaa-2.4 {add a number parameter with a bad value} {
80  list [catch {ctxt add number input.wrong -min foo} result] $result
81} {1 {expected floating-point number but got "foo"}}
82
83test aaa-2.5 {add a number parameter with a bad option name} {
84  list [catch {ctxt add number input.wrong -min 0 -foo x} result] $result
85} {1 {bad option "-foo": should be -min, -max}}
86
87test aaa-2.6 {add doesn't add parameter when there's an error} {
88  ctxt get
[903]89} {input.temperature number -min 0.0 -max 1.0}
[897]90
91test aaa-2.7 {add a string parameter} {
92  ctxt add string input.choice -values {a b c}
93  ctxt get input.choice
[903]94} {string -values {a b c}}
[897]95
96test aaa-2.8 {add a string parameter with a missing option} {
97  list [catch {ctxt add string input.wrong -values} result] $result
98} {1 {missing value for option "-values"}}
99
100test aaa-2.9 {add a string parameter with a bad option name} {
101  list [catch {ctxt add string input.wrong -bad 0} result] $result
102} {1 {bad option "-bad": should be -values}}
103
104test aaa-2.10 {add doesn't add parameter when there's an error} {
105  ctxt get
[903]106} {{input.temperature number -min 0.0 -max 1.0} {input.choice string -values {a b c}}}
[897]107
[903]108test aaa-2.11 {add another number and return } {
109  ctxt add number input.temporary -min -5 -max 5
110  lsort [ctxt get input.temp*]
111} {{input.temperature number -min 0.0 -max 1.0} {input.temporary number -min -5.0 -max 5.0}}
112
113test aaa-2.12 {query -min values for multiple parameters} {
114  lsort [ctxt get input.temp* -min]
115} {{input.temperature 0.0} {input.temporary -5.0}}
116
[897]117# cleanup
118::tcltest::cleanupTests
119return
Note: See TracBrowser for help on using the repository browser.