Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

README.md

Tests for vt6/core

parse-sexp.txt

This file contains testcases for parsing and serializing S-expressions and messages as defined in https://vt6.io/std/core/1.0/#section-2. It is generated by parse-sexp.txt.pl.

Empty lines and comment lines starting with # are to be ignored. Each other line has one of the following formats:

  • test <arg> starts a new testcase. The <arg> is the message to parse. It may contain 2-digit hexadecimal escape sequences to encode arbitrary bytes, esp. ASCII control characters, e.g. \x0A for NL.
  • ok <arg> indicates that the current testcase is a valid message. The test MUST fail if the implementation produces an error while parsing this message The <arg> is a pretty-printed representation of an equivalent message with no superfluous whitespace, except for one space between each element of an S-expression. Implementations MUST check that parsing this string succeeds and produces a message that is semantically equivalent to the one that was parsed in this testcase. Implementations that can serialize messages SHOULD check whether they produce the same string when serializing the message that was parsed in this testcase.
  • error <offset> <msg> indicates that the current testcase is an invalid message. The test MUST fail if the implementation produces no error while parsing this message. The first argument <offset> indicates at which byte offset the parse error occurred. The test SHOULD check whether it reports the same error location. The <argument> is a human-readable error message indicating the reason while this testcase fails to parse or validate. The test SHOULD check whether it produces the same (or an equivalent) error message.

negotiation.txt

This file contains testcases for capability negotiation using the want and have messages as defined in https://vt6.io/std/core/1.0/#section-4. This testcase only applies to server implementations.

Empty lines and comment lines starting with # are to be ignored. Each other line has one of the following formats:

  • A line containing a string representation of a want message means that, as part of the current testcase, this message shall be sent to the server being tested.
  • A line containing a string representation of any other message means that the test MUST fail if the server being tested does not send this message at this point. As a special rule, the letter X in the string core1.X occurring anywhere in the message is a placeholder for the minor version of core1 supported by the server.
  • --- ends the current testcase and starts a new one. Each testcase shall behave as if it is happening on a separate fresh server connection.

The test MUST also fail if the server sends any messages that are not mentioned in the testcase.

As also indicated in the comments in the file, the testcases reference certain modules and capabilities that are only defined inside the testcases:

  • The server SHALL always agree to using the conftest1 module with minor version 3.
  • The server SHALL always agree to using the conftest1.acceptable capability.
  • The server SHALL NOT agree to using the conftest1.unacceptable capability.
  • The server SHALL NOT agree to using the conftest2 module.