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

# User Rev Content
1 williamc 1.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 williamc 1.2 $self->testinterface("name","testfeature");
24     $self->testinterface("version","V1");
25 williamc 1.3 $self->expect("testfeature");
26     $self->testinterface("name");
27     $self->clearexpect();
28 williamc 1.2
29 williamc 1.1 # -- 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 williamc 1.2 $self->{reqobject1}=Configuration::FeatureTool->new($self->docstore());
40 williamc 1.3 $self->{reqobject1}->name("ReqObj1");
41     $self->{reqobject1}->version("test");
42     $self->{reqobject1}->url("test:1");
43 williamc 1.2 $self->{reqobject1}->addfeature("testfeature2","requiredvalue2");
44     $self->{reqobject1}->addfeature("testfeature1","requiredvalue1");
45 williamc 1.3 $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 williamc 1.2 $self->testinterface("addrequirement",$self->{reqobject1});
64 williamc 1.1 $self->testinterface("addfeature", "testfeature2", "testvalue2" );
65 williamc 1.2 $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 williamc 1.3 print ">Restarting Object ....@savekeys \n";
80 williamc 1.2
81     ($self->{object})=$self->docstore()->find("ConfigItem",@savekeys);
82 williamc 1.3 print $self->{object}." restored from ".
83     $self->docstore()."\n";
84 williamc 1.2 $self->_toolcheck();
85     $self->_featurecheck();
86 williamc 1.3
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 williamc 1.4 @tools=$self->testinterface("_extractfeature","testfeature1",@tools);
133 williamc 1.3 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 williamc 1.4 $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 williamc 1.2 }
183    
184     sub _featurecheck {
185     my $self=shift;
186    
187     $self->expect("testvalue1", "requiredvalue1", "testvalue3");
188 williamc 1.1 $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 williamc 1.2 $self->expect("testfeature");
199 williamc 1.1 $self->testinterface("name");
200     $self->clearexpect();
201 williamc 1.2 $self->expect("V1");
202 williamc 1.1 $self->testinterface("version");
203     $self->clearexpect();
204 williamc 1.3 }
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 williamc 1.1 }