// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
//
// Copyright 2016-2018 Pascal ECHEMANN.
//
// Licensed 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.
import {TestMethod} from "./TestMethod";
import {AnnotatedMethod} from "./AnnotatedMethod";
/**
* The RunableTestSuite interface provides the default API that you
* must implement to create a test class for proxifying JUTA test suite classes.
*/
export interface RunableTestSuite {
/**
* Returns the test suite class associated with this
* RunableTestSuite.
*
* @return {any} the reference to the test suite class associated with this
* RunableTestSuite.
*/
getTestSuite():any;
/**
* Sets the test suite class to associate with this
* RunableTestSuite.
*
* @param {any} testSuite the test suite class to associate with this
* RunableTestSuite.
*/
setTestSuite(testSuite:any):void;
/**
* Returns the collection of test methods associated with this
* RunableTestSuite.
*
* @return {Array} the collection of test methods associated with
* this RunableTestSuite.
*/
getTestMethods():TestMethod[];
/**
* Returns the description of the test suite class associated with this
* RunableTestSuite.
*
* @return {string} the description of the test suite class associated with
* this RunableTestSuite.
*/
getDescription():string;
/**
* Returns the collection of annotated methods associated with this
* RunableTestSuite.
*
* @return {Array} the collection of annotated methods
* associated with this
* RunableTestSuite.
*/
getAnnotatedMethods():AnnotatedMethod[];
/**
* Returns a boolean that indicates whether this RunableTestSuite
* has to be ignored by the test runner (true), or not
* (false).
*
* @return {boolean} true whether this
* RunableTestSuite has to be ignored by the
* test runner; false otherwhise.
*/
isDisabled():boolean;
/**
* Returns a value that indicates the test execution order for a test suite.
* Possible values are the constants of the TestSorters enum.
*
* @return {number} a constant of the TestSorters enum.
*/
getTestOrder():number;
/**
* Returns a value the policy used to create test class instances. Valid
* values are the constants of the InstantiationPolicy class.
*
* @return {string} a constant of the InstantiationPolicy class.
*/
getInstantiationPolicy():string;
}