blob: 80ce1c99c75b54cc6474b4d0c1308edff06d47c1 [file] [log] [blame]
//###############################################################
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
//###############################################################
/*
Class: svunit_testsuite
Base class for the unit test suite
*/
class svunit_testsuite extends svunit_base;
/*
Array: list_of_testcases
Queue list of Unit Testcases to include for this Test Suite
*/
local svunit_testcase list_of_testcases[$];
/*
Interface
*/
extern function new(string name);
extern function void add_testcase(svunit_testcase svunit);
extern task run();
extern function void report();
endclass
/*
Constructor: new
Initializes the test suite
Parameters:
name - instance name of the unit test suite
*/
function svunit_testsuite::new(string name);
super.new(name);
endfunction
/*
Method: add_testcase
Adds a testcase to list of tests
Parameters:
svunit - unit test to add to the list of unit tests
*/
function void svunit_testsuite::add_testcase(svunit_testcase svunit);
`INFO($sformatf("Registering Unit Test Case %s", svunit.get_name()));
list_of_testcases.push_back(svunit);
endfunction
/*
Method: run
Main Run Task of the Test Suite
*/
task svunit_testsuite::run();
`INFO("RUNNING");
endtask
/*
Method: report
This task reports the results for the unit tests
*/
function void svunit_testsuite::report();
int pass_cnt;
string success_str;
foreach(list_of_testcases[i])
list_of_testcases[i].report();
begin
svunit_testcase match[$] = list_of_testcases.find() with (item.get_results() == PASS);
pass_cnt = match.size();
end
if (pass_cnt == list_of_testcases.size()) begin
success_str = "PASSED";
success = PASS;
end else begin
success_str = "FAILED";
success = FAIL;
end
`LF;
`INFO($sformatf("%0s (%0d of %0d testcases passing)",
success_str,
pass_cnt,
list_of_testcases.size()));
endfunction