/* * 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, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "units.h" #include "matcher_data.h" static struct dm_pool *mem = NULL; int regex_init(void) { mem = dm_pool_create("bitset test", 1024); return mem == NULL; } int regex_fini(void) { dm_pool_destroy(mem); return 0; } static struct dm_regex *make_scanner(const char **rx) { struct dm_regex *scanner; int nrx = 0; for (; rx[nrx]; ++nrx); scanner = dm_regex_create(mem, rx, nrx); CU_ASSERT_FATAL(scanner != NULL); return scanner; } static void test_fingerprints(void) { struct dm_regex *scanner; scanner = make_scanner(dev_patterns); CU_ASSERT_EQUAL(dm_regex_fingerprint(scanner), 0x7f556c09); scanner = make_scanner(random_patterns); CU_ASSERT_EQUAL(dm_regex_fingerprint(scanner), 0x9f11076c); } static void test_matching(void) { 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 };