Qore QUnit Module Reference  0.3
QUnit::Test Class Reference

Base class representing a simple test, implements an implicit main() function and all utility functions for testing. More...

Inheritance diagram for QUnit::Test:

Public Member Functions

 addTestCase (string name, code call, *softlist< auto > args)
 adds a test case to run More...
 
 addTestCase (QUnit::TestCase tc)
 adds a test case to run More...
 
 assertEq (auto expected, auto actual, *string name)
 Tests a value for equality to an expected value with hard comparisons (types and values must be identical) More...
 
 assertEqSoft (auto expected, auto actual, *string name)
 Tests a value for equality to an expected value with soft comparisons (types may differ) More...
 
 assertFalse (auto actual, *string name)
 Tests a boolean value. More...
 
 assertFloatEq (float expected, float actual, float epsilon=0.0000000001, *string name)
 Tests a float value for equality to an expected value with an allowed error. More...
 
 assertNumberEq (number expected, number actual, number epsilon=0.0000000001, *string name)
 Tests a number value for equality to an expected value with an allowed error. More...
 
 assertSkip (*string name)
 Skips assertion on purpose. More...
 
 assertThrows (string expectedErr, *string expectedDesc, code theCode, *softlist< auto > args, *string name)
 Tests that a piece of code throws an exception with given description. More...
 
 assertThrows (string expectedErr, code theCode, *softlist< auto > args, *string name)
 Tests that a piece of code throws an exception. More...
 
 assertTrue (auto actual, *string name)
 Tests a boolean value. More...
 
 constructor (string name, string version, *reference< list< string >> p_argv, *hash opts)
 creates the object and sets the name of the test
 
bool equals (auto a, auto b)
 Compare two values for equality. More...
 
bool equalsIterated (AbstractIterator a, AbstractIterator b)
 Compare two iterables, item by item, for equality of each index. More...
 
 fail (*string msg)
 Fails the test unconditionally. More...
 
*string getEnv (string key, *string def)
 facade for the system environment variables
 
TestCase getTestCase (string meth)
 returns the current test case
 
 globalSetUp ()
 global setup; will be called once before tests are run
 
 globalTearDown ()
 global tear down; will be called once after all tests are run
 
int main ()
 Run the whole suite, report results.
 
bool notEquals (auto a, auto b)
 Compare two values for inequality. More...
 
string printUnexpectedData (auto exp, auto act, *bool neg, *bool soft_comparisons)
 Helper function for printing out human-readable comparison of two values.
 
bool regexpMatches (string s, string regexp)
 Compare a string for match against a regexp. More...
 
 setUp ()
 Prototype function for setting up test environment. It will be called for each test individually.
 
 tearDown ()
 Prototype function for cleaning up test environemnt. It will be called after each test has executed.
 
auto testAssertion (string name, code condition, *softlist< auto > args, int expectedResultValue)
 Tests for a single assertion for a call returning an integer value and returns the value generated. More...
 
auto testAssertion (string name, code condition, *softlist< auto > args, float expectedResultValue)
 Tests for a single assertion for a call returning a floating-point value and returns the value generated. More...
 
auto testAssertion (string name, code condition, *softlist< auto > args, number expectedResultValue)
 Tests for a single assertion for a call returning an arbitrary-precision numeric value and returns the value generated. More...
 
auto testAssertion (string name, code condition, *softlist< auto > args, bool expectedResultValue)
 Tests for a single assertion for a call returning a boolean value and returns the value generated. More...
 
auto testAssertion (string name, code condition, *softlist< auto > args, string expectedResultValue)
 Tests for a single assertion for a call returning a string value and returns the value generated. More...
 
auto testAssertion (string name, code condition, *softlist< auto > args, date expectedResultValue)
 Tests for a single assertion for a call returning a date value and returns the value generated. More...
 
auto testAssertion (string name, code condition, *softlist< auto > args, binary expectedResultValue)
 Tests for a single assertion for a call returning a binary value and returns the value generated. More...
 
auto testAssertion (string name, code condition, *softlist< auto > args, hash expectedResultValue)
 Tests for a single assertion for a call returning a hash value and returns the value generated. More...
 
auto testAssertion (string name, code condition, *softlist< auto > args, list expectedResultValue)
 Tests for a single assertion for a call returning a list value and returns the value generated. More...
 
auto testAssertion (string name, code condition, *softlist< auto > args, QUnit::AbstractTestResult expectedResult=new QUnit::TestResultSuccess())
 Tests for a single assertion and returns the value generated. More...
 
auto testAssertionValue (*string name, auto actual, auto expected)
 Tests a value for equality to an expected value. More...
 
 testNullAssertion (string name, code condition, *softlist< auto > args)
 Tests for a single assertion for a call returning no value (for example, to ensure that the call does not throw an exception) More...
 
 testSkip (string reason)
 Skips a given test, eg. because it may be missing some dependencies. More...
 
- Public Member Functions inherited from QUnit::TestReporter
 constructor (string name, string version, *reference< list< string >> p_argv, hash opts=Opts)
 creates the object from the arguments More...
 

Static Public Member Functions

static string getAssertionName (*string name)
 returns the assertion name for display purposes
 

Private Member Functions

list< TestCasetestCases ()
 list of test cases
 

Additional Inherited Members

- Public Attributes inherited from QUnit::TestReporter
const Opts
 default options for Qore::GetOpt::constructor()
 

Detailed Description

Base class representing a simple test, implements an implicit main() function and all utility functions for testing.

Member Function Documentation

◆ addTestCase() [1/2]

QUnit::Test::addTestCase ( string  name,
code  call,
*softlist< auto >  args 
)

adds a test case to run

Example:
addTestCase("MyTest", \myTest());
Parameters
namethe name of the test case
callthe code to call that executes the test case
argsany optional arguments to the test case call

◆ addTestCase() [2/2]

QUnit::Test::addTestCase ( QUnit::TestCase  tc)

adds a test case to run

Example:
addTestCase(obj);
Parameters
tcthe test case object

◆ assertEq()

QUnit::Test::assertEq ( auto  expected,
auto  actual,
*string  name 
)

Tests a value for equality to an expected value with hard comparisons (types and values must be identical)

Example:
assertEq(5, functionThatShouldReturnFive());
Parameters
expectedthe expected value
actualthe value generated by the test
namethe name or description of the assertion

◆ assertEqSoft()

QUnit::Test::assertEqSoft ( auto  expected,
auto  actual,
*string  name 
)

Tests a value for equality to an expected value with soft comparisons (types may differ)

Example:
assertEqSoft("5", functionThatShouldReturnFive());
Parameters
expectedthe expected value
actualthe value generated by the test
namethe name or description of the assertion

◆ assertFalse()

QUnit::Test::assertFalse ( auto  actual,
*string  name 
)

Tests a boolean value.

Example:
assertFalse(functionThatShouldReturnFalse());
Parameters
actualthe value generated by the test
namethe name or description of the assertion

◆ assertFloatEq()

QUnit::Test::assertFloatEq ( float  expected,
float  actual,
float  epsilon = 0.0000000001,
*string  name 
)

Tests a float value for equality to an expected value with an allowed error.

Example:
assertFloatEq(2.5, 2.50001, 0.001);
Parameters
expectedthe expected value
actualthe value generated by the test
epsilonthe allowed error
namethe name or description of the assertion

◆ assertNumberEq()

QUnit::Test::assertNumberEq ( number  expected,
number  actual,
number  epsilon = 0.0000000001,
*string  name 
)

Tests a number value for equality to an expected value with an allowed error.

Example:
assertNumberEq(2.5n, 2.50001n, 0.001n);
Parameters
expectedthe expected value
actualthe value generated by the test
epsilonthe allowed error
namethe name or description of the assertion

◆ assertSkip()

QUnit::Test::assertSkip ( *string  name)

Skips assertion on purpose.

Parameters
namethe name or description of the assertion
Example:
assertSkip("assertion name or reason to skip");

◆ assertThrows() [1/2]

QUnit::Test::assertThrows ( string  expectedErr,
*string  expectedDesc,
code  theCode,
*softlist< auto >  args,
*string  name 
)

Tests that a piece of code throws an exception with given description.

Example:
assertThrows("DIVISION-BY-ZERO", "division by zero found in integer expression", sub(int a) {print(5/a);}, 0);
Parameters
expectedErrthe expected exception type
expectedDescthe expected exception detail (desc field), ignored if NOTHING
theCodethe code to execute
argsoptional arguments to the code
namean optional label for the assertion

◆ assertThrows() [2/2]

QUnit::Test::assertThrows ( string  expectedErr,
code  theCode,
*softlist< auto >  args,
*string  name 
)

Tests that a piece of code throws an exception.

Example:
assertThrows("DIVISION-BY-ZERO", sub(int a) {print(5/a);}, 0);
Parameters
expectedErrthe expected exception type
theCodethe code to execute
argsoptional arguments to the code
namean optional label for the assertion

◆ assertTrue()

QUnit::Test::assertTrue ( auto  actual,
*string  name 
)

Tests a boolean value.

Example:
assertTrue(functionThatShouldReturnTrue());
Parameters
actualthe value generated by the test
namethe name or description of the assertion

◆ equals()

bool QUnit::Test::equals ( auto  a,
auto  b 
)

Compare two values for equality.

Parameters
aArgument 1
bArgument 2
Returns
a == b

◆ equalsIterated()

bool QUnit::Test::equalsIterated ( AbstractIterator  a,
AbstractIterator  b 
)

Compare two iterables, item by item, for equality of each index.

Parameters
aIterable 1
bIterable 2
Returns
a == b

◆ fail()

QUnit::Test::fail ( *string  msg)

Fails the test unconditionally.

Example:
fail("Unexpected code executed");
Parameters
msgthe failure message

◆ notEquals()

bool QUnit::Test::notEquals ( auto  a,
auto  b 
)

Compare two values for inequality.

Parameters
aArgument 1
bArgument 2
Returns
a != b

◆ regexpMatches()

bool QUnit::Test::regexpMatches ( string  s,
string  regexp 
)

Compare a string for match against a regexp.

Parameters
sString to match
regexpRegular expression to match against
Returns
a == b

◆ testAssertion() [1/10]

auto QUnit::Test::testAssertion ( string  name,
code  condition,
*softlist< auto >  args,
int  expectedResultValue 
)

Tests for a single assertion for a call returning an integer value and returns the value generated.

Parameters
namethe name or description of the assertion
conditionA test function whose result we are asserting
argsArguments passed to condition
expectedResultValuean integer value
Returns
the result of the condition call, if the immediate value has any further use

◆ testAssertion() [2/10]

auto QUnit::Test::testAssertion ( string  name,
code  condition,
*softlist< auto >  args,
float  expectedResultValue 
)

Tests for a single assertion for a call returning a floating-point value and returns the value generated.

Parameters
namethe name or description of the assertion
conditionA test function whose result we are asserting
argsArguments passed to condition
expectedResultValuea floating-point value
Returns
the result of the condition call, if the immediate value has any further use

◆ testAssertion() [3/10]

auto QUnit::Test::testAssertion ( string  name,
code  condition,
*softlist< auto >  args,
number  expectedResultValue 
)

Tests for a single assertion for a call returning an arbitrary-precision numeric value and returns the value generated.

Parameters
namethe name or description of the assertion
conditionA test function whose result we are asserting
argsArguments passed to condition
expectedResultValuean arbitrary-precision numeric value
Returns
the result of the condition call, if the immediate value has any further use

◆ testAssertion() [4/10]

auto QUnit::Test::testAssertion ( string  name,
code  condition,
*softlist< auto >  args,
bool  expectedResultValue 
)

Tests for a single assertion for a call returning a boolean value and returns the value generated.

Parameters
namethe name or description of the assertion
conditionA test function whose result we are asserting
argsArguments passed to condition
expectedResultValuea boolean value
Returns
the result of the condition call, if the immediate value has any further use

◆ testAssertion() [5/10]

auto QUnit::Test::testAssertion ( string  name,
code  condition,
*softlist< auto >  args,
string  expectedResultValue 
)

Tests for a single assertion for a call returning a string value and returns the value generated.

Parameters
namethe name or description of the assertion
conditionA test function whose result we are asserting
argsArguments passed to condition
expectedResultValuea string value
Returns
the result of the condition call, if the immediate value has any further use

◆ testAssertion() [6/10]

auto QUnit::Test::testAssertion ( string  name,
code  condition,
*softlist< auto >  args,
date  expectedResultValue 
)

Tests for a single assertion for a call returning a date value and returns the value generated.

Parameters
namethe name or description of the assertion
conditionA test function whose result we are asserting
argsArguments passed to condition
expectedResultValuea date value
Returns
the result of the condition call, if the immediate value has any further use

◆ testAssertion() [7/10]

auto QUnit::Test::testAssertion ( string  name,
code  condition,
*softlist< auto >  args,
binary  expectedResultValue 
)

Tests for a single assertion for a call returning a binary value and returns the value generated.

Parameters
namethe name or description of the assertion
conditionA test function whose result we are asserting
argsArguments passed to condition
expectedResultValuea binary value
Returns
the result of the condition call, if the immediate value has any further use

◆ testAssertion() [8/10]

auto QUnit::Test::testAssertion ( string  name,
code  condition,
*softlist< auto >  args,
hash  expectedResultValue 
)

Tests for a single assertion for a call returning a hash value and returns the value generated.

Parameters
namethe name or description of the assertion
conditionA test function whose result we are asserting
argsArguments passed to condition
expectedResultValuea hash value
Returns
the result of the condition call, if the immediate value has any further use

◆ testAssertion() [9/10]

auto QUnit::Test::testAssertion ( string  name,
code  condition,
*softlist< auto >  args,
list  expectedResultValue 
)

Tests for a single assertion for a call returning a list value and returns the value generated.

Parameters
namethe name or description of the assertion
conditionA test function whose result we are asserting
argsArguments passed to condition
expectedResultValuea list value
Returns
the result of the condition call, if the immediate value has any further use

◆ testAssertion() [10/10]

auto QUnit::Test::testAssertion ( string  name,
code  condition,
*softlist< auto >  args,
QUnit::AbstractTestResult  expectedResult = new QUnit::TestResultSuccess() 
)

Tests for a single assertion and returns the value generated.

Parameters
namethe name or description of the assertion
conditionA test function whose result we are asserting
argsArguments passed to condition
expectedResultA class describing the expected result of condition; the default is QUnit::TestResultSuccess
Returns
the result of the condition call, if the immediate value has any further use

◆ testAssertionValue()

auto QUnit::Test::testAssertionValue ( *string  name,
auto  actual,
auto  expected 
)

Tests a value for equality to an expected value.

Example:
testAssertionValue("date > operator", now() > (now() - 1D), True);
Parameters
namethe name or description of the assertion
actualthe value generated by the test
expectedthe expected value
Returns
the value argument
Note
make sure and use testAssertion() for any calls that could throw an exception

◆ testNullAssertion()

QUnit::Test::testNullAssertion ( string  name,
code  condition,
*softlist< auto >  args 
)

Tests for a single assertion for a call returning no value (for example, to ensure that the call does not throw an exception)

Parameters
namethe name or description of the assertion
conditionA test function whose result we are asserting
argsArguments passed to condition
Returns
the result of the condition call, if the immediate value has any further use

◆ testSkip()

QUnit::Test::testSkip ( string  reason)

Skips a given test, eg. because it may be missing some dependencies.

Parameters
reasonThe reason for the test skip