The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Image::Leptonica::Func::regutils

VERSION

version 0.04

regutils.c

regutils.c

     Regression test utilities
         l_int32    regTestSetup()
         l_int32    regTestCleanup()
         l_int32    regTestCompareValues()
         l_int32    regTestCompareStrings()
         l_int32    regTestComparePix()
         l_int32    regTestCompareSimilarPix()
         l_int32    regTestCheckFile()
         l_int32    regTestCompareFiles()
         l_int32    regTestWritePixAndCheck()

     Static function
         char      *getRootNameFromArgv0()

See regutils.h for how to use this.  Here is a minimal setup:

main(int argc, char **argv) {
...
L_REGPARAMS  *rp;

    if (regTestSetup(argc, argv, &rp))
        return 1;
    ...
    regTestWritePixAndCheck(rp, pix, IFF_PNG);  // 0
    ...
    return regTestCleanup(rp);
}

FUNCTIONS

regTestCheckFile

l_int32 regTestCheckFile ( L_REGPARAMS *rp, const char *localname )

regTestCheckFile()

    Input:  rp (regtest parameters)
            localname (name of output file from reg test)
    Return: 0 if OK, 1 on error (a failure in comparison is not an error)

Notes:
    (1) This function does one of three things, depending on the mode:
         * "generate": makes a "golden" file as a copy @localname.
         * "compare": compares @localname contents with the golden file
         * "display": makes the @localname file but does no comparison
    (2) The canonical format of the golden filenames is:
          /tmp/golden/<root of main name>_golden.<index>.<ext of localname>
        e.g.,
           /tmp/golden/maze_golden.0.png
        It is important to add an extension to the local name, because
        the extension is added to the name of the golden file.

regTestCleanup

l_int32 regTestCleanup ( L_REGPARAMS *rp )

regTestCleanup()

    Input:  rp (regression test parameters)
    Return: 0 if OK, 1 on error

Notes:
    (1) This copies anything written to the temporary file to the
        output file /tmp/reg_results.txt.

regTestCompareFiles

l_int32 regTestCompareFiles ( L_REGPARAMS *rp, l_int32 index1, l_int32 index2 )

regTestCompareFiles()

    Input:  rp (regtest parameters)
            index1 (of one output file from reg test)
            index2 (of another output file from reg test)
    Return: 0 if OK, 1 on error (a failure in comparison is not an error)

Notes:
    (1) This only does something in "compare" mode.
    (2) The canonical format of the golden filenames is:
          /tmp/golden/<root of main name>_golden.<index>.<ext of localname>
        e.g.,
          /tmp/golden/maze_golden.0.png

regTestComparePix

l_int32 regTestComparePix ( L_REGPARAMS *rp, PIX *pix1, PIX *pix2 )

regTestComparePix()

    Input:  rp (regtest parameters)
            pix1, pix2 (to be tested for equality)
    Return: 0 if OK, 1 on error (a failure in comparison is not an error)

Notes:
    (1) This function compares two pix for equality.  On failure,
        this writes to stderr.

regTestCompareSimilarPix

l_int32 regTestCompareSimilarPix ( L_REGPARAMS *rp, PIX *pix1, PIX *pix2, l_int32 mindiff, l_float32 maxfract, l_int32 printstats )

regTestCompareSimilarPix()

    Input:  rp (regtest parameters)
            pix1, pix2 (to be tested for near equality)
            mindiff (minimum pixel difference to be counted; > 0)
            maxfract (maximum fraction of pixels allowed to have
                      diff greater than or equal to mindiff)
            printstats (use 1 to print normalized histogram to stderr)
    Return: 0 if OK, 1 on error (a failure in similarity comparison
            is not an error)

Notes:
    (1) This function compares two pix for near equality.  On failure,
        this writes to stderr.
    (2) The pix are similar if the fraction of non-conforming pixels
        does not exceed @maxfract.  Pixels are non-conforming if
        the difference in pixel values equals or exceeds @mindiff.
        Typical values might be @mindiff = 15 and @maxfract = 0.01.
    (3) The input images must have the same size and depth.  The
        pixels for comparison are typically subsampled from the images.
    (4) Normally, use @printstats = 0.  In debugging mode, to see
        the relation between @mindiff and the minimum value of
        @maxfract for success, set this to 1.

regTestCompareStrings

l_int32 regTestCompareStrings ( L_REGPARAMS *rp, l_uint8 *string1, size_t bytes1, l_uint8 *string2, size_t bytes2 )

regTestCompareStrings()

    Input:  rp (regtest parameters)
            string1 (typ. the expected string)
            bytes1 (size of string1)
            string2 (typ. the computed string)
            bytes2 (size of string2)
    Return: 0 if OK, 1 on error (a failure in comparison is not an error)

regTestCompareValues

l_int32 regTestCompareValues ( L_REGPARAMS *rp, l_float32 val1, l_float32 val2, l_float32 delta )

regTestCompareValues()

    Input:  rp (regtest parameters)
            val1 (typ. the golden value)
            val2 (typ. the value computed)
            delta (allowed max absolute difference)
    Return: 0 if OK, 1 on error (a failure in comparison is not an error)

regTestWritePixAndCheck

l_int32 regTestWritePixAndCheck ( L_REGPARAMS *rp, PIX *pix, l_int32 format )

regTestWritePixAndCheck()

    Input:  rp (regtest parameters)
            pix (to be written)
            format (of output pix)
    Return: 0 if OK, 1 on error (a failure in comparison is not an error)

Notes:
    (1) This function makes it easy to write the pix in a numbered
        sequence of files, and either to:
           (a) write the golden file ("generate" arg to regression test)
           (b) make a local file and "compare" with the golden file
           (c) make a local file and "display" the results
    (3) The canonical format of the local filename is:
          /tmp/<root of main name>.<count>.<format extension string>
        e.g., for scale_reg,
          /tmp/scale.0.png

AUTHOR

Zakariyya Mughal <zmughal@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Zakariyya Mughal.

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