📄 pdomain.c
字号:
/* * Phishing module test. * * Copyright (C) 2006 T鰎鰇 Edvin <edwintorok@gmail.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * 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. * * $Log $ */#include <stdlib.h>#include <stdio.h>#include <check.h>#include <test-config.h>#include <clamav.h>#include <clamav-config.h>#include "pdomain.h"#include <phish_domaincheck_db.h>#define FULLFLAG 0xFFFFstatic struct regex_list_test { const char* inputReal; const char* inputDisp; int output; unsigned short flags;} regex_list_tests[] = { {"www.google.com","www.google.com",0,FULLFLAG}, {"http://abcdef","jj",0,FULLFLAG}, {"http://abcdefj","jj",1,FULLFLAG}, {"http://ab.f.com","jj",0,FULLFLAG}, {"http://a.f.com","jj",1,FULLFLAG}, {"http://b.f.com","jj",1,FULLFLAG}, {"http://c.f.com","jj",1,FULLFLAG}, {"http://d.f.com","jj",1,FULLFLAG}, {"http://f.f.com","jj",0,FULLFLAG}, {"http://e.f.com","jj",1,FULLFLAG}, {"http://ae.f.net","jj",1,FULLFLAG}, {"http://cb.f.com","jj",0,FULLFLAG}, {"http://abcf","jj",0,FULLFLAG}, {"virus.zip","viiirii.zip",0,FULLFLAG}, {"http://zztest.com","jj",1,0xFEF7}};/*static int regex_list_tests_cnt = sizeof(regex_list_tests)/sizeof(regex_list_tests[0]);*/static int regex_list_tests_i=-1;static struct cl_engine* engine;static void regex_list_tests_setup(void){ int rc; unsigned int signo; engine=NULL; rc = cl_loaddb(REGEXTEST_FILE,&engine,&signo); fail_unless(rc==0,cl_strerror(rc)); fail_unless(is_domainlist_ok(engine)); regex_list_tests_i=0;}static void regex_list_tests_teardown(void){ cl_free(engine); engine=NULL;}static int regex_list_test_function(const char* input1,const char* input2,const unsigned short flag_expected){ unsigned short flags=FULLFLAG; int rc; fail_unless(is_domainlist_ok(engine)); rc = domainlist_match(engine,input1,input2,0,&flags); fail_unless(flags == flag_expected); return rc;}START_TEST(regex_list_test_create){ fail_unless( regex_list_test_function("","",FULLFLAG)!=-1, "Initialization failed");}END_TEST/* standard cruft */#define REGEX_LIST_TEST(x) \START_TEST(regex_list_test_##x)\{\ const int regex_list_test_nr = (x);\ struct regex_list_test test = regex_list_tests[regex_list_test_nr];\ const int output = regex_list_test_function(test.inputReal,test.inputDisp,test.flags);\ const int expectedoutput = test.output;\ char failed_msg[512];\ snprintf(failed_msg,sizeof(failed_msg),"Failed at test:%d (input: %s %s;expected:%d, got:%d)",\ regex_list_test_nr,test.inputReal,test.inputDisp,expectedoutput,output);\ fail_unless(output==expectedoutput,failed_msg);\}\END_TESTREGEX_LIST_TEST(0)REGEX_LIST_TEST(1)REGEX_LIST_TEST(2)REGEX_LIST_TEST(3)REGEX_LIST_TEST(4)REGEX_LIST_TEST(5)REGEX_LIST_TEST(6)REGEX_LIST_TEST(7)REGEX_LIST_TEST(8)REGEX_LIST_TEST(9)REGEX_LIST_TEST(10)REGEX_LIST_TEST(11)REGEX_LIST_TEST(12)REGEX_LIST_TEST(13)REGEX_LIST_TEST(14)#define ADD_REGEX_LIST_TEST(x) tcase_add_test(tc_core, regex_list_test_##x)TCase* create_pdomain_testcase(void){ TCase* tc_core = tcase_create("Regex List"); tcase_add_test(tc_core, regex_list_test_create); ADD_REGEX_LIST_TEST(0); ADD_REGEX_LIST_TEST(1); ADD_REGEX_LIST_TEST(2); ADD_REGEX_LIST_TEST(3); ADD_REGEX_LIST_TEST(4); ADD_REGEX_LIST_TEST(5); ADD_REGEX_LIST_TEST(6); ADD_REGEX_LIST_TEST(7); ADD_REGEX_LIST_TEST(8); ADD_REGEX_LIST_TEST(9); ADD_REGEX_LIST_TEST(10); ADD_REGEX_LIST_TEST(11); ADD_REGEX_LIST_TEST(12); ADD_REGEX_LIST_TEST(13); ADD_REGEX_LIST_TEST(14); tcase_add_checked_fixture(tc_core, regex_list_tests_setup, regex_list_tests_teardown); return tc_core;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -