⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 psx-generic.c

📁 正则表达式库
💻 C
字号:
/* psx-generic.c: test POSIX re's independent of us using basic or   extended syntax.  */#include "test.h"voidtest_posix_generic (){  int omit_generic_tests = 0; /* reset in debugger to skip */  if (omit_generic_tests)    return;                                /* Tests somewhat in the order of P1003.2.  */    /* Both posix basic and extended; should match.  */  printf ("\nStarting generic POSIX tests.\n");  test_grouping ();  test_intervals ();  test_should_match = true;						  /* Ordinary characters.  */  printf ("\nContinuing generic POSIX tests.\n");  MATCH_SELF ("");  test_fastmap ("", "", 0, 0);  test_fastmap_search ("", "", "", 0, 0, 2, 0, 0);  TEST_REGISTERS ("", "", 0, 0, -1, -1, -1, -1);  TEST_SEARCH ("", "", 0, 0);  TEST_SEARCH_2 ("", "", "", 0, 1, 0);    MATCH_SELF ("abc");				  test_fastmap ("abc", "a", 0, 0);				  TEST_REGISTERS ("abc", "abc", 0, 3, -1, -1, -1, -1);  TEST_REGISTERS ("abc", "xabcx", 1, 4, -1, -1, -1, -1);    test_match ("\\a","a");  test_match ("\\0", "0");  TEST_SEARCH ("a", "ab", 0, 2);  TEST_SEARCH ("b", "ab", 0, 2);  TEST_SEARCH ("a", "ab", 1, -2);  TEST_SEARCH_2 ("a", "a", "b", 0, 2, 2);  TEST_SEARCH_2 ("b", "a", "b", 0, 2, 2);  TEST_SEARCH_2 ("a", "a", "b", 1, -2, 2);    test_match ("\n", "\n");  test_match ("a\n", "a\n");  test_match ("\nb", "\nb");  test_match ("a\nb", "a\nb");  TEST_SEARCH ("b", "baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 236, -237);					/* Valid use of special characters. */  test_match ("a*", "aa");  test_fastmap ("a*", "a", 0, 0);  TEST_REGISTERS ("a*", "aa", 0, 2, -1, -1, -1, -1);    test_match ("a*b", "aab");			  test_fastmap ("a*b", "ab", 0, 0);  test_match ("a*ab", "aab");  TEST_REGISTERS ("a*a", "aa", 0, 2, -1, -1, -1, -1);  TEST_REGISTERS ("a*a", "xaax", 1, 3, -1, -1, -1, -1);  test_match ("\\{", "{");  test_match ("\\^", "^");  test_match ("\\.", ".");  test_match ("\\*", "*");  test_match ("\\[", "[");  test_match ("\\$", "$");  test_match ("\\\\", "\\");  test_match ("ab*", "a");  test_match ("ab*", "abb");  /* Valid consecutive repetitions.  */  test_match ("a**", "a");                                                /* Valid period.  */  test_match (".", "a");  TEST_REGISTERS (".", "a", 0, 1, -1, -1, -1, -1);  test_match (".", "\004");  test_match (".", "\n");		                                              /* Valid bracket expressions.  */  test_match ("[ab]", "a");		  test_match ("[ab]", "b");  test_fastmap ("[ab]", "ab", 0, 0);  TEST_REGISTERS ("[ab]", "a", 0, 1, -1, -1, -1, -1);  TEST_REGISTERS ("[ab]", "xax", 1, 2, -1, -1, -1, -1);  test_fastmap ("[^ab]", "ab", 1, 1);  test_match ("[^ab]", "c");  test_match ("[^a]", "\n");  test_match ("[a]*a", "aa");		  test_match ("[[]", "[");  test_match ("[]]", "]");  test_match ("[.]", ".");  test_match ("[*]", "*");  test_match ("[\\]", "\\");  test_match ("[\\(]", "(");  test_match ("[\\)]", ")");  test_match ("[^]]", "a");  test_match ("[a^]", "^");  test_match ("[a$]", "$");  test_match ("[]a]", "]");  test_match ("[a][]]", "a]");  test_match ("[\n]", "\n");  test_match ("[^a]", "\n");  test_match ("[a-]", "a");  TEST_REGISTERS ("\\`[ \t\n]*", " karl (Karl Berry)", 0, 1, -1, -1, -1, -1);  TEST_REGISTERS ("[ \t\n]*\\'", " karl (Karl Berry)", 18, 18, -1, -1, -1, -1);                                                /* Collating, noncollating,                                             	   equivalence classes aren't                                           	   implemented yet.  */  					                                                /* Character classes.  */  test_match ("[:alpha:]", "p");	  test_match ("[[:alpha:]]", "a");	  test_match ("[[:alpha:]]", "z");  test_match ("[[:alpha:]]", "A");  test_match ("[[:alpha:]]", "Z");  test_match ("[[:upper:]]", "A");  test_match ("[[:upper:]]", "Z");  test_match ("[[:lower:]]", "a");  test_match ("[[:lower:]]", "z");  test_match ("[[:digit:]]", "0");  test_match ("[[:digit:]]", "9");  test_fastmap ("[[:digit:]]", "0123456789", 0, 0);  test_match ("[[:alnum:]]", "0");  test_match ("[[:alnum:]]", "9");  test_match ("[[:alnum:]]", "a");  test_match ("[[:alnum:]]", "z");  test_match ("[[:alnum:]]", "A");  test_match ("[[:alnum:]]", "Z");  test_match ("[[:xdigit:]]", "0");  test_match ("[[:xdigit:]]", "9");  test_match ("[[:xdigit:]]", "A");  test_match ("[[:xdigit:]]", "F");  test_match ("[[:xdigit:]]", "a");  test_match ("[[:xdigit:]]", "f");  test_match ("[[:space:]]", " ");  test_match ("[[:print:]]", " ");  test_match ("[[:print:]]", "~");  test_match ("[[:punct:]]", ",");  test_match ("[[:graph:]]", "!");  test_match ("[[:graph:]]", "~");  test_match ("[[:cntrl:]]", "\177");  test_match ("[[:digit:]a]", "a");  test_match ("[[:digit:]a]", "2");  test_match ("[a[:digit:]]", "a");  test_match ("[a[:digit:]]", "2");  test_match ("[[:]", "[");  test_match ("[:]", ":");  test_match ("[[:a]", "[");  test_match ("[[:alpha:a]", "[");  						/* Valid ranges.  */  test_match ("[a-a]", "a");  test_fastmap ("[a-a]", "a", 0, 0);  TEST_REGISTERS ("[a-a]", "xax", 1, 2, -1, -1, -1, -1);  test_match ("[a-z]", "z");  test_fastmap ("[a-z]", "abcdefghijklmnopqrstuvwxyz", 0, 0);  test_match ("[-a]", "-");		/* First  */  test_match ("[-a]", "a");  test_match ("[a-]", "-");		/* Last  */  test_match ("[a-]", "a");  test_match ("[--@]", "@");		/* First and starting point.  */    test_match ("[%--a]", "%");		/* Ending point.  */  test_match ("[%--a]", "-");		/* Ditto.  */    test_match ("[a%--]", "%");		/* Both ending point and last.  */  test_match ("[a%--]", "-");  test_match ("[%--a]", "a");		/* Ending point only.  */  test_match ("[a-c-f]", "e");		/* Piggyback.  */  test_match ("[)-+--/]", "*");  test_match ("[)-+--/]", ",");  test_match ("[)-+--/]", "/");  test_match ("[[:digit:]-]", "-");                                        /* Concatenation  ????*/  test_match ("[ab][cd]", "ac");			  test_fastmap ("[ab][cd]", "ab", 0, 0);  TEST_REGISTERS ("[ab][cd]", "ad", 0, 2, -1, -1, -1, -1);  TEST_REGISTERS ("[ab][cd]", "xadx", 1, 3, -1, -1, -1, -1);	                                             /* Valid expression anchoring.  */  test_match ("^a", "a");  test_fastmap ("^a", "a", 0, 0);  TEST_REGISTERS ("^a", "ax", 0, 1, -1, -1, -1, -1);    test_match ("^", "");  TEST_REGISTERS ("^", "", 0, 0, -1, -1, -1, -1);  test_match ("$", "");  TEST_REGISTERS ("$", "", 0, 0, -1, -1, -1, -1);    test_match ("a$", "a");  test_fastmap ("a$", "a", 0, 0);  TEST_REGISTERS ("a$", "xa", 1, 2, -1, -1, -1, -1);    test_match ("^ab$", "ab");  test_fastmap ("^ab$", "a", 0, 0);  TEST_REGISTERS ("^a$", "a", 0, 1, -1, -1, -1, -1);    test_fastmap ("^$", "", 0, 0);  test_match ("^$", "");  TEST_REGISTERS ("^$", "", 0, 0, -1, -1, -1, -1);  TEST_SEARCH (PARENS_TO_OPS ("(^a)"), "ab", 0, 2);  TEST_SEARCH (PARENS_TO_OPS ("(a$)"), "ba", 0, 2);  TEST_SEARCH (PARENS_TO_OPS ("^(^a)"), "ab", 0, 2);  TEST_SEARCH (PARENS_TO_OPS ("(a$)$"), "ba", 0, 2);                                                /* Two strings.  */  test_match_2 ("ab", "a", "b");  TEST_REGISTERS_2 ("ab", "a", "b", 0, 2, -1, -1, -1, -1);    test_match_2 ("a", "", "a");  test_match_2 ("a", "a", "");  test_match_2 ("ab", "a", "b");						/* (start)pos.  */  TEST_POSITIONED_MATCH ("b", "ab", 1);  						/* mstop.  */  TEST_TRUNCATED_MATCH ("a", "ab", 1);  /* Both basic and extended, continued; should not match.  */  test_should_match = false;                                          /* Ordinary characters.  */  test_match ("abc", "ab");			    TEST_SEARCH ("c", "ab", 0, 2);  TEST_SEARCH ("c", "ab", 0, 2);  TEST_SEARCH ("c", "ab", 1, -2);  TEST_SEARCH ("c", "ab", 0, 10);  TEST_SEARCH ("c", "ab", 1, -10);  TEST_SEARCH_2 ("c", "a", "b", 0, 2, 2);  TEST_SEARCH_2 ("c", "a", "b", 0, 2, 2);  TEST_SEARCH_2 ("c", "a", "b", 0, 2, 2);  TEST_SEARCH_2 ("c", "a", "b", 1, -2, 2);  TEST_SEARCH_2 ("c", "a", "b", 1, -2, 2);  TEST_SEARCH ("c", "baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 236, -237);				/* Invalid use of special characters.  */  invalid_pattern (REG_EESCAPE, "\\");  invalid_pattern (REG_EESCAPE, "a\\");  invalid_pattern (REG_EESCAPE, "a*\\");						  /* Invalid period.  */  test_match (".", "");					  /* Invalid bracket expressions.  */  test_match ("[ab]", "c");		      test_match ("[^b]", "b");			  test_match ("[^]]", "]");  invalid_pattern (REG_EBRACK, "[");  invalid_pattern (REG_EBRACK, "[^");  invalid_pattern (REG_EBRACK, "[a");  invalid_pattern (REG_EBRACK, "[]");  invalid_pattern (REG_EBRACK, "[]a");  invalid_pattern (REG_EBRACK, "a[]a");    test_match ("[:alpha:]", "q");	       /* Character classes.  */  test_match ("[[:alpha:]]", "2");  test_match ("[[:upper:]]", "a");  test_match ("[[:lower:]]", "A");  test_match ("[[:digit:]]", "a");  test_match ("[[:alnum:]]", ":");  test_match ("[[:xdigit:]]", "g");  test_match ("[[:space:]]", "a");  test_match ("[[:print:]]", "\177");  test_match ("[[:punct:]]", "a");  test_match ("[[:graph:]]", " ");  test_match ("[[:cntrl:]]", "a");  invalid_pattern (REG_EBRACK, "[[:");  invalid_pattern (REG_EBRACK, "[[:alpha:");  invalid_pattern (REG_EBRACK, "[[:alpha:]");  invalid_pattern (REG_ECTYPE, "[[::]]");  invalid_pattern (REG_ECTYPE, "[[:a:]]");  invalid_pattern (REG_ECTYPE, "[[:alpo:]]");  invalid_pattern (REG_ECTYPE, "[[:a:]");    test_match ("[a-z]", "2");			/* Invalid ranges.  */  test_match ("[^-a]", "-");		  test_match ("[^a-]", "-");		  test_match ("[)-+--/]", ".");  invalid_pattern (REG_ERANGE, "[z-a]");		/* Empty  */  invalid_pattern (REG_ERANGE, "[a--]");		/* Empty  */  invalid_pattern (REG_ERANGE, "[[:digit:]-9]");  invalid_pattern (REG_ERANGE, "[a-[:alpha:]]");  invalid_pattern (REG_ERANGE, "[a-");  invalid_pattern (REG_EBRACK, "[a-z");  test_match ("[ab][cd]", "ae");		/* Concatenation.  */  test_match ("b*c", "b");			/* Star.  */	                                        /* Invalid anchoring.  */  test_match ("^", "a");  test_match ("^a", "ba");  test_match ("$", "b");  test_match ("a$", "ab");  test_match ("^$", "a");  test_match ("^ab$", "a");  TEST_SEARCH ("^a", "b\na", 0, 3);  TEST_SEARCH ("b$", "b\na", 0, 3);  test_match_2 ("^a", "\n", "a");  test_match_2 ("a$", "a", "\n");  TEST_SEARCH (PARENS_TO_OPS ("(^a)"), "ba", 0, 2);  TEST_SEARCH (PARENS_TO_OPS ("(a$)"), "ab", 0, 2);  TEST_SEARCH (PARENS_TO_OPS ("^(^a)"), "ba", 0, 2);  TEST_SEARCH (PARENS_TO_OPS ("(a$)$"), "ab", 0, 2);  printf ("\nFinished generic POSIX tests.\n");}/*Local variables:make-backup-files: tversion-control: ttrim-versions-without-asking: nilEnd:*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -