Skip to content
TestML for Perl
Perl Perl6 Makefile
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
doc
ext
lib
note
share
test
.travis.yml
About
Changes
Meta
ReadMe.pod

ReadMe.pod

NAME

TestML - A Generic Software Testing Meta Language

testml-pm testml-pm

SYNOPSIS

    # file t/testml/encode.tml
    %TestML 0.1.0

    Title = 'Tests for AcmeEncode'
    Plan = 3

    *text.apply_rot13 == *rot13
    *text.apply_md5   == *md5

    === Encode some poetry
    --- text
    There once was a fellow named Ingy,
    Combining languages twas his Thingy.
    --- rot13
    Gurer bapr jnf n sryybj anzrq Vatl,
    Pbzovavat ynathntrf gjnf uvf Guvatl.
    --- md5: 7a1538ff9fc8edf8ea55d02d0b0658be

    === Encode a password
    --- text: soopersekrit
    --- md5: 64002c26dcc62c1d6d0f1cb908de1435

This TestML document defines 2 assertions, and defines 2 data blocks. The first block has 3 data points, but the second one has only 2. Therefore the rot13 assertion applies only to the first block, while the the md5 assertion applies to both. This results in a total of 3 tests, which is specified in the meta Plan statement in the document.

To run this test you would have a normal test file that looks like this:

    use TestML;
    use t::Bridge;

    TestML->new(
        testml => 'testml/encode.tml',
        bridge => 't::Bridge',
    )->run;

The apply_* functions are defined in the bridge class that is specified outside this test (t/Bridge.pm).

DESCRIPTION

TestML is a generic, programming language agnostic, meta language for writing unit tests. The idea is that you can use the same test files in multiple implementations of a given programming idea. Then you can be more certain that your application written in, say, Python matches your Perl implementation.

In a nutshell you write a bunch of data tests that have inputs and expected results. Using a simple syntax, you specify what functions the data must pass through to produce the expected results. You use a bridge class to write the data functions that pass the data through your application.

In Perl 5, TestML is the evolution of the Test::Base module. It has a superset of Test:Base's goals. The data markup syntax is currently exactly the same as Test::Base.

SEE ALSO

AUTHOR

Ingy döt Net <ingy@cpan.org>

COPYRIGHT AND LICENSE

Copyright 2009-2014. Ingy döt Net.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

See http://www.perl.com/perl/misc/Artistic.html

Something went wrong with that request. Please try again.