AliceLR 513428cba5 Update testworlds test naming scheme | 5 years ago | |
---|---|---|
.. | ||
2.51 | 5 years ago | |
2.60 | 5 years ago | |
2.65 | 5 years ago | |
2.69c | 5 years ago | |
2.70 | 5 years ago | |
2.80 | 5 years ago | |
2.81 | 5 years ago | |
2.83 | 5 years ago | |
2.84 | 5 years ago | |
2.90 | 5 years ago | |
2.91 | 5 years ago | |
data | 6 years ago | |
temp | 6 years ago | |
README.md | 5 years ago | |
run.sh | 5 years ago | |
tests.mzx | 5 years ago |
This folder contains a set of worlds that test various aspects of MZX and
particularly Robotic that can be determined to be correct or incorrect from
within MegaZeux itself. Run the full sequence of tests with run.sh
, or
use the make test
rule.
This system currently requires an mzxrun
executable in the parent directory,
and may not work correctly for all platforms.
Test worlds are named in the format
VVV/XXX [short description].mzx
where VVV
is the MegaZeux version associated with the world (e.g. 2.51
)
and XXX is the test number (e.g. 123
).
Example version strings:
2.02
for 2.022.07
for 2.072.51
for 2.512.51s1
for 2.51s12.51s2
for 2.51s22.51s3
for 2.51s32.51s3.1
for 2.51s3.12.51s3.2
for 2.51s3.22.60
for 2.62.61
for 2.612.62
for 2.622.62b
for 2.62bLetter versions starting from 2.80 onward belong in the folder of their
non-lettered counterpart. Change the first digit of the test number to the
version letter to signify it is a test for a change in that particular
lettered version. Example: a 2.80d test called "Big Test" could be located
at the path 2.80/d01 Big Test.mzx
).
External files used as dependencies by a test world should be located in the
folder data
. Test worlds are copied to the testworlds base folder before they
are executed, so they should have access to this folder when running as part
of a test.
Additionally, test worlds must conform to the following conventions:
1) The world must not be encrypted, and must have a properly configured starting board. A title is helpful but not necessary.
2) The world will perform exactly one test or a group of closely related tests (e.g. testing various COPY BLOCK uses) and will be created and versioned for the earliest possible MegaZeux version it is applicable for. If versioned compatibility behavior exists, create a version of the test for each behavior with similar filenames and titles using the earliest applicable MZX versions for each.
3) The test must assume it will be operating at MZX_SPEED 1 and with unbounded COMMANDS, unless the purpose of the test requires a different MZX_SPEED or COMMANDS value. Setting these defaults explicitly is not necessary.
4) The robot driving the tests must be clearly visible.
5) The first line(s) of the testing robot must be setting the $title
string
to the title of the test, the $author
string to your identifier, and the
$desc
string to a description of the test. This must be wrapped to fit the
robot editor window with inc "$desc" "[more description]"
as-needed.
6) Upon completion or failure, the counter result
must be set to one of the
following counters: PASS
, FAIL
, BADF
, or SKIP
.
7) Extra testing notes may be included in the $result
string.
8) Counter and string names beginning with two underscores (e.g. __abc
,
$__def
) are reserved and should not be used.
9) When the test is finished running, the following snippet of code MUST be executed:
: "exit"
if "__continue" = 1 then "__swap"
end
: "__swap"
swap world "next"
The following counters have special meaning:
PASS
: Set result
to this to indicate that the test passed.FAIL
: Set result
to this to indicate that the test failed.BADF
: Set result
to this to indicate that the test failed due to a file loading error.SKIP
: Set result
to this to indicate that the test was skipped.result
: indicates the result of the test. Defaults to BADF
.$result
: indicates more details about the result of a test.$world
: the filename of the current world. NOTE: This is not necessarily the original filename of the world.$title
: the title of the test.$author
: the author of the test.$desc
: a description of the test.Worlds from MZX versions 2.62 to 2.70 should use the following compatible strings:
$string0
: the filename of the current world. NOTE: This is not necessarily the original filename of the world.$string1
: the title of the test.$string2
: the author of the test.$string3
: a description of the test.$string4
: indicates more details about the result of a test.To skip a test, set result
to SKIP
. The following counters indicate when a
certain test should be skipped:
__skip_audio
: all audio in MZX is disabled. All audio tests should check this.__skip_mod
: no module player for the audio system has been enabled.__skip_vorbis
: ogg/vorbis support has been disabled.1) DOS worlds are not capable of the string operations described above. Strings were introduced in MegaZeux 2.62 in a very limited form. In versions 2.62, 2.62b, and 2.65, strings can be ONLY 15 CHARACTERS LONG. In versions 2.68 through 2.70, strings can be up to 63 characters long. While it may be possible to set longer strings in old worlds using newer versions, it's recommended to stay within the original bounds and use the compatibility strings listed above.
Worlds from MZX versions before 2.62 don't have access to any strings and need to provide title, author, and description info in both comment form in the main robot (for reference) and in a separate text file (to be added to the test output). The text file must have the exact same file name as the test world but a .txt extension instead of a .mzx extension (ex: "mytest.mzx" → "mytest.txt").
Comment form:
. "Title: A text"
. "Author: You"
. "Desc: This is a long description of the test."
Text file format (the space after "Title:", etc. is required):
Title: A test
Author: You
Desc: This is a long description of the test.
It is not possible to provide a $result
equivalent for these worlds currently,
but this functionality may be added in the future.