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 |
}
|