(info) This AI is still in early stages of development.

Test API

A unit test framework for Warzone JS scripts...

Ā 

Overview

The Test API provides a unit testing framework for JS scripts in Warzone 2100. It's inspired by, and loosely based on, the excellent QUnit testing framework.

Step 1

Include the Test API in your script:

include("path/to/Test.js");

Step 2

Define aĀ Test() with a relevantĀ Test ModeĀ andĀ Unit Tests function:

Test("My first test", Test.ANY( ), function() {
	// assertions go here
});

Whenever you define a test, it gets added to a queue. Tests are run sequentially, one after the other with a small delay between each test (so the game doesn't freeze). You can also define asynchronous tests which are useful for testing events.

Step 3

A test is useless unless it tests stuff! Put someĀ Test Assertions in your unit test:

Test("My first test", Test.ANY( ), function() {
 
	ok( true, "This assertion will pass" );
	equal( false, true, "This assertion will fail" );
Ā 
});
Availability STABLE

Requires:

  • Warzone 3.1 or above

Will use Dependency Checking if Util API is loaded.

Test API

Topics:

  • Test() ā€” Define a unit test and it's configuration...
  • Test Modules ā€” A test module groups one or more unit tests and provides additional lifecycle settings for those tests...
  • Test Modes ā€” Defines the mode in which a unit test is run...
    • Test.ANY( ) ā€” The most basic unit test mode...
    • Test.EXPECT( ) ā€” Causes the test to fail if it does not generate the specified number of results...
    • Test.ASYNCH( ) ā€” Causes a test to keep running until it either passes, fails or times-out...
    • Test.APPEND( ) ā€” Appends results to a specific asynchronous test session...
  • Unit Tests ā€” The unit test function, responsible for performing one or more Test Assertions...
  • Test Assertions ā€” Assertions are used to perform various tests and annotations within a unit test...
    • comment( ) ā€” Adds a comment to the test results...
    • ok( ) ā€” A simple state checking assertion...
    • hasNative( ) ā€” Assert presence of a native property on the global object...
    • hasFunction( ) ā€” Check if a context has a function property, optionally with specified number of formal parameters...
    • equal( ) ā€” A basic equality checking assertion...
    • notEqual( ) ā€” A basic inequality checking assertion...
    • strictEqual( ) ā€” A strict equality checking assertion...
    • notStrictEqual( ) ā€” A strict inequality checking assertion...
    • deepEqual( ) ā€” A deep equality checking assertion...
    • notDeepEqual( ) ā€” A deep inequality checking assertion...
    • similarTo( ) ā€” A deep similarity checking assertion...
    • notSimilarTo( ) ā€” A deep dissimilarity spotting assertion...
  • Test Signals ā€” Signals are used to prematurely terminate Unit Tests...
    • REQUIRE( ) ā€” Check whether a test or group of tests have passed. If the requirement fails, a RequireSignal will be sent which terminates the current test and marks it as failed.
    • ABORT( ) ā€” Aborts the current test, marking it as failed in the process...
    • FINISH( ) ā€” Terminates the test as if it had finished normally...
  • Test Events ā€” Events defined by Test API...
  • Test Results ā€” After testing is finished, output results...
  • Test API - Dev Notes ā€” Developer notes for this API...

Ā