2019-09-01 21:09:47 +01:00
/*
libzint - the open source barcode library
2021-03-21 21:20:16 +00:00
Copyright ( C ) 2019 - 2021 Robin Stuart < rstuart114 @ gmail . com >
2019-09-01 21:09:47 +01:00
Redistribution and use in source and binary forms , with or without
modification , are permitted provided that the following conditions
are met :
1. Redistributions of source code must retain the above copyright
notice , this list of conditions and the following disclaimer .
2. Redistributions in binary form must reproduce the above copyright
notice , this list of conditions and the following disclaimer in the
documentation and / or other materials provided with the distribution .
3. Neither the name of the project nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission .
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS " AS IS " AND
ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED TO , THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT , INDIRECT , INCIDENTAL , SPECIAL , EXEMPLARY , OR CONSEQUENTIAL
DAMAGES ( INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES ; LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS INTERRUPTION )
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY , WHETHER IN CONTRACT , STRICT
LIABILITY , OR TORT ( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE .
*/
2019-10-17 10:06:21 +01:00
/* vim: set ts=4 sw=4 et : */
2019-09-01 21:09:47 +01:00
/*
* Adapted from qrencode / tests / common . h
* Copyright ( C ) 2006 - 2017 Kentaro Fukuchi < kentaro @ fukuchi . org >
*/
# ifndef TESTCOMMON_H
# define TESTCOMMON_H
2021-05-25 20:42:26 +01:00
# define ZINT_DEBUG_TEST_PRINT 16
# define ZINT_DEBUG_TEST_LESS_NOISY 32
# define ZINT_DEBUG_TEST_KEEP_OUTFILE 64
# define ZINT_DEBUG_TEST_BWIPP 128
# define ZINT_DEBUG_TEST_PERFORMANCE 256
2021-06-10 11:15:39 +01:00
# ifdef _MSC_VER
# define testutil_popen(command, mode) _popen(command, mode)
# define testutil_pclose(stream) _pclose(stream)
2021-03-30 20:18:40 +09:00
# else
# include <unistd.h>
2021-06-10 11:15:39 +01:00
# define testutil_popen(command, mode) popen(command, mode)
# define testutil_pclose(stream) pclose(stream)
# endif
2019-09-01 21:09:47 +01:00
# include <stdio.h>
2021-06-10 11:15:39 +01:00
# include <errno.h>
2019-09-01 21:09:47 +01:00
# include "../common.h"
2021-06-10 11:15:39 +01:00
# if defined(__clang__)
# pragma clang diagnostic ignored "-Wpedantic"
# pragma clang diagnostic ignored "-Woverlength-strings"
# elif defined(__GNUC__)
# pragma GCC diagnostic ignored "-Wpedantic"
# pragma GCC diagnostic ignored "-Woverlength-strings"
# elif defined(_MSC_VER)
# pragma warning(disable: 4305) /* truncation from 'double' to 'float' */
# endif
2020-12-21 19:30:07 +00:00
# ifdef __cplusplus
extern " C " {
# endif
2020-05-05 22:28:25 +01:00
# ifndef ARRAY_SIZE
2021-06-27 11:47:55 +01:00
# define ARRAY_SIZE(x) ((int) (sizeof(x) / sizeof((x)[0])))
2020-05-05 22:28:25 +01:00
# endif
2019-09-01 21:09:47 +01:00
extern int assertionFailed ;
extern int assertionNum ;
2021-06-27 11:47:55 +01:00
extern const char * assertionFilename ;
2019-09-01 21:09:47 +01:00
2021-06-30 11:57:21 +01:00
# if _MSC_VER < 1900 /* MSVC 2015 */
2021-06-23 15:00:49 +01:00
# define testStart(__arg__) (testStartReal("", __arg__))
# else
2019-09-01 21:09:47 +01:00
# define testStart(__arg__) (testStartReal(__func__, __arg__))
2021-06-23 15:00:49 +01:00
# endif
2019-09-01 21:09:47 +01:00
void testStartReal ( const char * func , const char * name ) ;
void testFinish ( void ) ;
2020-05-05 22:28:25 +01:00
void testSkip ( const char * msg ) ;
2019-09-01 21:09:47 +01:00
void testReport ( ) ;
2021-06-10 11:15:39 +01:00
typedef struct s_testFunction {
const char * name ; void * func ; int has_index ; int has_generate ; int has_debug ;
} testFunction ;
2020-05-05 22:28:25 +01:00
void testRun ( int argc , char * argv [ ] , testFunction funcs [ ] , int funcs_size ) ;
2021-06-23 15:00:49 +01:00
# if _MSC_VER == 1200 /* VC6 */
# include "../ms_stdint.h"
void assert_zero ( int exp , const char * fmt , . . . ) ;
void assert_nonzero ( int exp , const char * fmt , . . . ) ;
2021-10-20 23:05:30 +01:00
void assert_null ( const void * exp , const char * fmt , . . . ) ;
void assert_nonnull ( const void * exp , const char * fmt , . . . ) ;
2021-06-23 15:00:49 +01:00
void assert_equal ( int e1 , int e2 , const char * fmt , . . . ) ;
void assert_equalu64 ( uint64_t e1 , uint64_t e2 , const char * fmt , . . . ) ;
void assert_notequal ( int e1 , int e2 , . . . ) ;
# else
2019-09-01 21:09:47 +01:00
# define assert_exp(__exp__, ...) \
2021-06-27 11:47:55 +01:00
{ assertionNum + + ; if ( ! ( __exp__ ) ) { assertionFailed + + ; printf ( " %s:%d " , assertionFilename , __LINE__ ) ; \
printf ( __VA_ARGS__ ) ; testFinish ( ) ; return ; } }
2019-09-01 21:09:47 +01:00
# define assert_zero(__exp__, ...) assert_exp((__exp__) == 0, __VA_ARGS__)
# define assert_nonzero(__exp__, ...) assert_exp((__exp__) != 0, __VA_ARGS__)
# define assert_null(__ptr__, ...) assert_exp((__ptr__) == NULL, __VA_ARGS__)
# define assert_nonnull(__ptr__, ...) assert_exp((__ptr__) != NULL, __VA_ARGS__)
# define assert_equal(__e1__, __e2__, ...) assert_exp((__e1__) == (__e2__), __VA_ARGS__)
2021-06-23 15:00:49 +01:00
# define assert_equalu64 assert_equal
2019-09-01 21:09:47 +01:00
# define assert_notequal(__e1__, __e2__, ...) assert_exp((__e1__) != (__e2__), __VA_ARGS__)
2021-06-23 15:00:49 +01:00
# endif
2019-09-01 21:09:47 +01:00
2020-12-21 19:30:07 +00:00
INTERNAL void vector_free ( struct zint_symbol * symbol ) ; /* Free vector structures */
2019-09-01 21:09:47 +01:00
2021-06-10 11:15:39 +01:00
int testUtilSetSymbol ( struct zint_symbol * symbol , int symbology , int input_mode , int eci ,
int option_1 , int option_2 , int option_3 , int output_options , char * data , int length , int debug ) ;
2021-06-27 11:47:55 +01:00
2020-09-30 12:19:12 +01:00
const char * testUtilBarcodeName ( int symbology ) ;
const char * testUtilErrorName ( int error_number ) ;
const char * testUtilInputModeName ( int input_mode ) ;
const char * testUtilOption3Name ( int option_3 ) ;
const char * testUtilOutputOptionsName ( int output_options ) ;
2021-06-27 11:47:55 +01:00
2021-10-20 23:05:30 +01:00
int testUtilDAFTConvert ( const struct zint_symbol * symbol , char * buffer , const int buffer_size ) ;
2021-02-23 00:01:15 +00:00
int testUtilIsValidUTF8 ( const unsigned char str [ ] , const int length ) ;
2021-10-20 23:05:30 +01:00
char * testUtilEscape ( const char * buffer , const int length , char * escaped , const int escaped_size ) ;
const char * testUtilReadCSVField ( const char * buffer , char * field , const int field_size ) ;
void testUtilStrCpyRepeat ( char * buffer , const char * repeat , const int size ) ;
2021-06-27 11:47:55 +01:00
2020-05-05 22:28:25 +01:00
int testUtilSymbolCmp ( const struct zint_symbol * a , const struct zint_symbol * b ) ;
struct zint_vector * testUtilVectorCpy ( const struct zint_vector * in ) ;
int testUtilVectorCmp ( const struct zint_vector * a , const struct zint_vector * b ) ;
2021-06-27 11:47:55 +01:00
2021-02-23 00:01:15 +00:00
int testUtilModulesDump ( const struct zint_symbol * symbol , char dump [ ] , int dump_size ) ;
void testUtilModulesPrint ( const struct zint_symbol * symbol , const char * prefix , const char * postfix ) ;
void testUtilModulesPrintRow ( const struct zint_symbol * symbol , int row , const char * prefix , const char * postfix ) ;
2020-06-14 14:42:40 +01:00
int testUtilModulesCmp ( const struct zint_symbol * symbol , const char * expected , int * width , int * row ) ;
int testUtilModulesCmpRow ( const struct zint_symbol * symbol , int row , const char * expected , int * width ) ;
char * testUtilUIntArrayDump ( unsigned int * array , int size , char * dump , int dump_size ) ;
char * testUtilUCharArrayDump ( unsigned char * array , int size , char * dump , int dump_size ) ;
2021-06-27 11:47:55 +01:00
2020-11-01 18:32:55 +00:00
void testUtilBitmapPrint ( const struct zint_symbol * symbol , const char * prefix , const char * postfix ) ;
int testUtilBitmapCmp ( const struct zint_symbol * symbol , const char * expected , int * row , int * column ) ;
2021-06-27 11:47:55 +01:00
int testUtilDataPath ( char * buffer , int buffer_size , const char * subdir , const char * filename ) ;
2021-06-14 00:48:29 +01:00
int testUtilExists ( const char * filename ) ;
2021-06-23 15:00:49 +01:00
int testUtilDirExists ( const char * dirname ) ;
int testUtilMkDir ( const char * dirname ) ;
int testUtilRmDir ( const char * dirname ) ;
int testUtilRename ( const char * oldpath , const char * newpath ) ;
2021-06-27 11:47:55 +01:00
2021-06-14 00:48:29 +01:00
int testUtilCmpPngs ( const char * file1 , const char * file2 ) ;
int testUtilCmpTxts ( const char * txt1 , const char * txt2 ) ;
int testUtilCmpBins ( const char * bin1 , const char * bin2 ) ;
int testUtilCmpSvgs ( const char * svg1 , const char * svg2 ) ;
int testUtilCmpEpss ( const char * eps1 , const char * eps2 ) ;
2021-06-27 11:47:55 +01:00
2020-05-05 22:28:25 +01:00
int testUtilHaveIdentify ( ) ;
2021-06-14 00:48:29 +01:00
int testUtilVerifyIdentify ( const char * filename , int debug ) ;
2020-10-03 22:51:08 +01:00
int testUtilHaveLibreOffice ( ) ;
2021-06-14 00:48:29 +01:00
int testUtilVerifyLibreOffice ( const char * filename , int debug ) ;
2020-05-05 22:28:25 +01:00
int testUtilHaveGhostscript ( ) ;
2021-06-14 00:48:29 +01:00
int testUtilVerifyGhostscript ( const char * filename , int debug ) ;
2020-10-03 22:51:08 +01:00
int testUtilHaveVnu ( ) ;
2021-06-14 00:48:29 +01:00
int testUtilVerifyVnu ( const char * filename , int debug ) ;
2021-03-21 21:20:16 +00:00
int testUtilHaveTiffInfo ( ) ;
2021-06-14 00:48:29 +01:00
int testUtilVerifyTiffInfo ( const char * filename , int debug ) ;
2021-06-27 11:47:55 +01:00
2021-06-10 11:15:39 +01:00
int testUtilCanBwipp ( int index , const struct zint_symbol * symbol , int option_1 , int option_2 , int option_3 ,
int debug ) ;
int testUtilBwipp ( int index , const struct zint_symbol * symbol , int option_1 , int option_2 , int option_3 ,
const char * data , int length , const char * primary , char * buffer , int buffer_size ) ;
2021-08-10 12:04:25 +01:00
int testUtilBwippCmp ( const struct zint_symbol * symbol , char * msg , char * bwipp_buf , const char * expected ) ;
2021-06-10 11:15:39 +01:00
int testUtilBwippCmpRow ( const struct zint_symbol * symbol , int row , char * msg , const char * bwipp_buf ,
const char * expected ) ;
2019-09-01 21:09:47 +01:00
2020-12-21 19:30:07 +00:00
# ifdef __cplusplus
}
# endif
2019-09-01 21:09:47 +01:00
# endif /* TESTCOMMON_H */