2011-11-21 01:43:20 +04:00
/*
* Copyright ( C ) 2001 - 2004 Sistina Software , Inc . All rights reserved .
* Copyright ( C ) 2004 - 2010 Red Hat , Inc . All rights reserved .
*
* This file is part of LVM2 .
*
* This copyrighted material is made available to anyone wishing to use ,
* modify , copy , or redistribute it subject to the terms and conditions
* of the GNU General Public License v .2 .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software Foundation ,
2016-01-21 13:49:46 +03:00
* Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA
2011-11-21 01:43:20 +04:00
*/
2015-11-27 12:54:57 +03:00
# include "units.h"
2011-11-21 01:43:20 +04:00
# include "matcher_data.h"
static struct dm_pool * mem = NULL ;
2011-12-13 16:08:42 +04:00
int regex_init ( void ) {
2011-11-21 01:43:20 +04:00
mem = dm_pool_create ( " bitset test " , 1024 ) ;
return mem = = NULL ;
}
2011-12-13 16:08:42 +04:00
int regex_fini ( void ) {
2011-11-21 01:43:20 +04:00
dm_pool_destroy ( mem ) ;
return 0 ;
}
static struct dm_regex * make_scanner ( const char * * rx )
{
2011-12-13 16:08:42 +04:00
struct dm_regex * scanner ;
2011-11-21 01:43:20 +04:00
int nrx = 0 ;
for ( ; rx [ nrx ] ; + + nrx ) ;
2011-12-13 16:08:42 +04:00
scanner = dm_regex_create ( mem , rx , nrx ) ;
2011-11-21 01:43:20 +04:00
CU_ASSERT_FATAL ( scanner ! = NULL ) ;
return scanner ;
}
2011-12-13 16:08:42 +04:00
static void test_fingerprints ( void ) {
2011-11-21 01:43:20 +04:00
struct dm_regex * scanner ;
scanner = make_scanner ( dev_patterns ) ;
2012-02-10 17:49:29 +04:00
CU_ASSERT_EQUAL ( dm_regex_fingerprint ( scanner ) , 0x7f556c09 ) ;
2011-11-21 01:43:20 +04:00
scanner = make_scanner ( random_patterns ) ;
2012-02-10 17:49:29 +04:00
CU_ASSERT_EQUAL ( dm_regex_fingerprint ( scanner ) , 0x9f11076c ) ;
2011-11-21 01:43:20 +04:00
}
2011-12-13 16:08:42 +04:00
static void test_matching ( void ) {
2011-11-21 01:43:20 +04:00
struct dm_regex * scanner ;
int i ;
scanner = make_scanner ( dev_patterns ) ;
for ( i = 0 ; devices [ i ] . str ; + + i )
CU_ASSERT_EQUAL ( dm_regex_match ( scanner , devices [ i ] . str ) , devices [ i ] . expected - 1 ) ;
scanner = make_scanner ( nonprint_patterns ) ;
for ( i = 0 ; nonprint [ i ] . str ; + + i )
CU_ASSERT_EQUAL ( dm_regex_match ( scanner , nonprint [ i ] . str ) , nonprint [ i ] . expected - 1 ) ;
}
CU_TestInfo regex_list [ ] = {
{ ( char * ) " fingerprints " , test_fingerprints } ,
{ ( char * ) " matching " , test_matching } ,
CU_TEST_INFO_NULL
} ;