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.