ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/Configuration/test/test_FeatureTool.pm
Revision: 1.4
Committed: Thu Mar 30 12:21:25 2000 UTC (25 years, 1 month ago) by williamc
Content type: text/plain
Branch: MAIN
CVS Tags: ProtoEnd
Changes since 1.3: +21 -2 lines
Log Message:
Tested autofeatures

File Contents

# Content
1 #
2 # Tool test suite
3 #
4
5 package Configuration::test::test_FeatureTool;
6 require 5.001;
7 use Configuration::FeatureTool;
8
9 @ISA = ("ActiveDoc::DocTester"); #methods both from the test class
10
11
12 sub init {
13 my $self=shift;
14 $self->initdoc();
15 $self->{testfile}=$self->datadir("")."/FeatureItemDoc";
16 }
17
18 sub test {
19 my $self=shift;
20 $self->newtest("Initiation test ");
21 $self->newobject($self->docstore());
22
23 $self->testinterface("name","testfeature");
24 $self->testinterface("version","V1");
25 $self->expect("testfeature");
26 $self->testinterface("name");
27 $self->clearexpect();
28
29 # -- a tool setup
30 $self->newtest("Add Feature");
31 $self->testinterface("addfeature","testfeature1","testvalue1" );
32 $self->expect("testvalue1");
33 $self->testinterface("getfeature","testfeature1" );
34 $self->clearexpect();
35
36
37 $self->newtest("Add requirement");
38 # -- create a little requirement object
39 $self->{reqobject1}=Configuration::FeatureTool->new($self->docstore());
40 $self->{reqobject1}->name("ReqObj1");
41 $self->{reqobject1}->version("test");
42 $self->{reqobject1}->url("test:1");
43 $self->{reqobject1}->addfeature("testfeature2","requiredvalue2");
44 $self->{reqobject1}->addfeature("testfeature1","requiredvalue1");
45 $self->{reqobject2}=Configuration::FeatureTool->new($self->docstore());
46 $self->{reqobject2}->name("ReqObj2");
47 $self->{reqobject2}->version("test");
48 $self->{reqobject2}->url("test:2");
49 $self->{reqobject2}->addfeature("testfeature2","requiredvalue2");
50 $self->{reqobject2}->addfeature("testfeature1","requiredvalue1");
51 $self->{reqobject4}=Configuration::FeatureTool->new($self->docstore());
52 $self->{reqobject4}->name("ReqObj1");
53 $self->{reqobject4}->version("test");
54 $self->{reqobject4}->url("test:1");
55 $self->{reqobject4}->addfeature("testfeature2","requiredvalue2");
56 $self->{reqobject4}->addfeature("testfeature1","requiredvalue1B");
57 $self->{reqobject3}=Configuration::FeatureTool->new($self->docstore());
58 $self->{reqobject3}->name("ReqObj1");
59 $self->{reqobject3}->version("test");
60 $self->{reqobject3}->url("test:1");
61 $self->{reqobject3}->addfeature("testfeature2","requiredvalue2");
62 $self->{reqobject3}->addfeature("testfeature1","requiredvalue1");
63 $self->testinterface("addrequirement",$self->{reqobject1});
64 $self->testinterface("addfeature", "testfeature2", "testvalue2" );
65 $self->testinterface("addfeature", "testfeature1", "testvalue3" );
66 # -- test the feature recovery
67 $self->_featurecheck();
68
69 $self->newtest("Feature listing");
70 $self->expect("testfeature1","testfeature2");
71 $self->testinterface("features");
72 $self->clearexpect();
73
74 $self->newtest("Persistency Testing");
75 $self->testinterface("save");
76 $self->{reqobject1}->save();
77 my @savekeys=$self->testinterface("_savekeys");
78 undef $self->{object};
79 print ">Restarting Object ....@savekeys \n";
80
81 ($self->{object})=$self->docstore()->find("ConfigItem",@savekeys);
82 print $self->{object}." restored from ".
83 $self->docstore()."\n";
84 $self->_toolcheck();
85 $self->_featurecheck();
86
87 # search for tools tests
88 $self->newtest("Tool Searching test - no searcher specified");
89 # no searcher - shouldnt crash
90 my @tools=$self->testinterface("_searchall","testfeature1","testvalue1");
91 use Configuration::test::DummySearcher;
92 $self->newtest("Tool Searching searcher specification");
93 my $searcher=Configuration::test::DummySearcher->new();
94 use Configuration::test::DummyConfigArea;
95 $self->{proj1}=Configuration::test::DummyConfigArea->new(
96 $self->temparea()."/".$self->newfilename());
97 $self->{proj1}->storeconfigobject($self->{reqobject1});
98 $self->{proj2}=Configuration::test::DummyConfigArea->new(
99 $self->temparea()."/".$self->newfilename());
100 $self->{proj2}->storeconfigobject($self->{reqobject3});
101 $self->{proj2}->storeconfigobject($self->{reqobject4});
102 $self->{proj2}->storeconfigobject($self->{reqobject2});
103 $searcher->tool(1, $self->{proj1});
104 $searcher->tool(2, $self->{proj2});
105
106 my $searchobj=$self->testinterface("searchobject",$searcher);
107 if ( $searchobj != $searcher ) {
108 $self->testfail("Failed to set searchobject $searchobject !="
109 .$searcher);
110 }
111 # quick test of dummy search object
112 my ($testdummy)=$searcher->get(1);
113 if ( $testdummy != $self->{proj1}) {
114 $self->testfail("DummySearchObject broken - ".
115 "failed to get set values");
116 }
117 ($testdummy)=$searcher->get(1);
118 if ( $testdummy != $self->{proj1}) {
119 $self->testfail("DummySearchObject broken - ".
120 "failed to get set values");
121 }
122
123 $self->newtest("Tool Searching test - searcher specified");
124 $self->expect("ConfigItem::");
125 $self->expect("ConfigItem::");
126 @tools=$self->testinterface("_searchall",$self->{reqobject1}->name(),
127 $self->{reqobject1}->version());
128
129 $self->clearexpect();
130
131 $self->newtest("Parameter extraction test - no checker specified");
132 @tools=$self->testinterface("_extractfeature","testfeature1",@tools);
133 if ( $#tools !=1 ) {
134 $self->testfail("Expecting 2 options, got ".($#tools+1)."\n");
135 }
136 if ( ($tools[0][0] eq "requiredvalue1") &&
137 ($tools[1][0] eq "requiredvalue1B") ) {
138 $self->testpass("Returned parameters as expected");
139 }
140 else {
141 $self->testfail("Returned - ".$tools[0][0]." ".$tools[1][0].
142 " expected requiredvalue1B requiredvalue1"); }
143
144 # -- feature attributes setting
145 $self->newtest("Setting feature attributes");
146 $self->testinterface("featurechecker","askedtestfeature",$self);
147 $self->testinterface("featuretext","askedtestfeature",
148 "Testing input for askedtestfeature");
149
150 $self->newtest("Ask feature attributes");
151 $self->testinterface("_askfeature","askedtestfeature");
152 my @ret=$self->testinterface("getfeature","askedtestfeature");
153 if ( ( $#ret !=0 ) || ($self->{considerstring} ne $ret[0]) ) {
154 $self->testfail("Feature not set as user requested".
155 " Got @ret ".$#ret." elements)");
156 }
157 else {
158 $self->testpass("Feature set as user input ( @ret )");
159 }
160
161 $self->newtest("Automated Feature Finding");
162 $self->testinterface("featurechecker","newfeature",$self);
163 $self->{proj2}->storeconfigobject($self->{object});
164 $self->testinterface("featuretext","testfeature1","If you are being asked".
165 " for this value then the test has FAILED");
166 $self->testinterface("_autoask","testfeature1","newfeature");
167 @ret=$self->testinterface("getfeature","testfeature1");
168 if ( $ret[0] ne "testvalue1" ) {
169 $self->testfail("Wrong value set for testvalue1");
170 }
171 else {
172 $self->testpass("Auto value detection OK with testvalue1");
173 }
174 @ret=$self->testinterface("getfeature","newfeature");
175 if ( ( $#ret !=0 ) || ($self->{considerstring} ne $ret[0]) ) {
176 $self->testfail("Feature not set as user requested".
177 " Got @ret ".$#ret." elements)");
178 }
179 else {
180 $self->testpass("Feature set as user input ( @ret )");
181 }
182 }
183
184 sub _featurecheck {
185 my $self=shift;
186
187 $self->expect("testvalue1", "requiredvalue1", "testvalue3");
188 $self->testinterface("getfeature","testfeature1" );
189 $self->clearexpect();
190 $self->expect("requiredvalue2","testvalue2");
191 $self->testinterface("getfeature","testfeature2" );
192 $self->clearexpect();
193 }
194
195 sub _toolcheck {
196 my $self=shift;
197
198 $self->expect("testfeature");
199 $self->testinterface("name");
200 $self->clearexpect();
201 $self->expect("V1");
202 $self->testinterface("version");
203 $self->clearexpect();
204 }
205
206 # Stub for checker object
207 sub consider {
208 my $self=shift;
209 my $string=shift;
210
211 $self->{considerstring}=$string;
212 return 0;
213 }