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

📄 regression.c

📁 一个C语言写的快速贝叶斯垃圾邮件过滤工具
💻 C
📖 第 1 页 / 共 3 页
字号:
				      "%o", 42);  nerrors += VerifyScanningOneInteger(__FILE__, __LINE__, "101010",				      "%..2i", 42);  nerrors += VerifyScanningOneInteger(__FILE__, __LINE__, "0x2a",				      "%#x", 42);  nerrors += VerifyScanningOneInteger(__FILE__, __LINE__, "052",				      "%#o", 42);  return nerrors;}#endif/************************************************************************* * */#if TRIO_FEATURE_SCANFintVerifyScanningOneFloatTRIO_ARGS5((file, line, expected, format, original),	   TRIO_CONST char *file,	   int line,	   TRIO_CONST char *expected,	   TRIO_CONST char *format,	   double original){  double number;  char data[512];    trio_snprintf(data, sizeof(data), format, original);  trio_sscanf(data, format, &number);  return Verify(file, line, expected, format, number);}intVerifyScanningFloats(TRIO_NOARGS){  int nerrors = 0;#if TRIO_FEATURE_FLOAT  nerrors += VerifyScanningOneFloat(__FILE__, __LINE__, "42.000000",				      "%f", 42.0);  nerrors += VerifyScanningOneFloat(__FILE__, __LINE__, "-42.000000",				      "%f", -42.0);  nerrors += VerifyScanningOneFloat(__FILE__, __LINE__, "4.200000e+01",				      "%e", 42.0);  nerrors += VerifyScanningOneFloat(__FILE__, __LINE__, "4.200000E+01",				      "%E", 42.0);  nerrors += VerifyScanningOneFloat(__FILE__, __LINE__, "42",				      "%g", 42.0);  nerrors += VerifyScanningOneFloat(__FILE__, __LINE__, "1.23457e+06",				      "%g", 1234567.0);  nerrors += VerifyScanningOneFloat(__FILE__, __LINE__, "1.23457e-06",				      "%g", 1.234567e-6);  nerrors += VerifyScanningOneFloat(__FILE__, __LINE__, "1.23457E+06",				      "%G", 1234567.0);  nerrors += VerifyScanningOneFloat(__FILE__, __LINE__, "1.234567e+06",				      "%12e", 1234567.0);  nerrors += VerifyScanningOneFloat(__FILE__, __LINE__, "1.234500e+00",				      "%6e", 1234567.0);  nerrors += VerifyScanningOneFloat(__FILE__, __LINE__, "1.234567e+06",				      "%.6e", 1234567.0);  nerrors += VerifyScanningOneFloat(__FILE__, __LINE__, "1.2345670000e+06",				      "%.10e", 1234567.0);  nerrors += VerifyScanningOneFloat(__FILE__, __LINE__, "1.23457e+06",				      "%.6g", 1234567.0);  nerrors += VerifyScanningOneFloat(__FILE__, __LINE__, "1234567",				      "%.10g", 1234567.0);# if TRIO_FEATURE_HEXFLOAT  nerrors += VerifyScanningOneFloat(__FILE__, __LINE__, "0x2.ap+4",				      "%a", 42.0);  nerrors += VerifyScanningOneFloat(__FILE__, __LINE__, "0x1.2d687p+20",				      "%a", 1234567.0);  nerrors += VerifyScanningOneFloat(__FILE__, __LINE__, "0X1.2D687P+20",				      "%A", 1234567.0);# endif  nerrors += VerifyScanningOneFloat(__FILE__, __LINE__, "1.79769e+308",				      "%g", 1.79769e+308);  nerrors += VerifyScanningOneFloat(__FILE__, __LINE__, "nan",				      "%f", trio_nan());  nerrors += VerifyScanningOneFloat(__FILE__, __LINE__, "NAN",				      "%F", trio_nan());  nerrors += VerifyScanningOneFloat(__FILE__, __LINE__, "-inf",				      "%f", trio_ninf());#endif    return nerrors;}#endif/************************************************************************* * */#if TRIO_FEATURE_SCANFintVerifyScanningOneStringTRIO_ARGS5((file, line, expected, format, original),	   TRIO_CONST char *file,	   int line,	   TRIO_CONST char *expected,	   TRIO_CONST char *format,	   char *original){  char string[512];  char data[512];    trio_snprintf(data, sizeof(data), "%s", original);  trio_sscanf(data, format, string);  return Verify(file, line, expected, "%s", string);}intVerifyScanningStrings(TRIO_NOARGS){  int nerrors = 0;  nerrors += VerifyScanningOneString(__FILE__, __LINE__, "hello",				     "%s", "hello");  nerrors += VerifyScanningOneString(__FILE__, __LINE__, "hello",				     "%s", "hello world");  nerrors += VerifyScanningOneString(__FILE__, __LINE__, "hello world",				     "%[^\n]", "hello world");  nerrors += VerifyScanningOneString(__FILE__, __LINE__, "(nil)",				     "%s", NULL);  nerrors += VerifyScanningOneString(__FILE__, __LINE__, "hello",				     "%20s", "hello");  nerrors += VerifyScanningOneString(__FILE__, __LINE__, "he",				     "%2s", "hello");  nerrors += VerifyScanningOneString(__FILE__, __LINE__, "ab",				     "%[ab]", "abcba");  nerrors += VerifyScanningOneString(__FILE__, __LINE__, "abcba",				     "%[abc]", "abcba");  nerrors += VerifyScanningOneString(__FILE__, __LINE__, "abcba",				     "%[a-c]", "abcba");#if TRIO_EXTENSION  nerrors += VerifyScanningOneString(__FILE__, __LINE__, "abcba",				     "%[[:alpha:]]", "abcba");#endif  nerrors += VerifyScanningOneString(__FILE__, __LINE__, "ba",				     "%*[ab]c%[^\n]", "abcba");  return nerrors;}#endif/************************************************************************* * */#if TRIO_FEATURE_SCANFintVerifyScanningRegression(TRIO_NOARGS){  int nerrors = 0;  int rc;#if TRIO_FEATURE_FLOAT  int index;  double dnumber;# if defined(TRIO_BREESE)  trio_long_double_t ldnumber;# endif#endif  long lnumber;  int number;  char ch;#if TRIO_FEATURE_FLOAT  rc = trio_sscanf("1.5", "%lf%n", &dnumber, &index);  nerrors += Verify(__FILE__, __LINE__, "1 3 1.500000",		    "%d %d %f", rc, index, dnumber);#endif  rc = trio_sscanf("q 123", "%c%ld", &ch, &lnumber);  nerrors += Verify(__FILE__, __LINE__, "q 123",		    "%c %ld", ch, lnumber);  rc = trio_sscanf("abc", "%*s%n", &number);  nerrors += Verify(__FILE__, __LINE__, "0 3",		    "%d %d", rc, number);  rc = trio_sscanf("abc def", "%*s%n", &number);  nerrors += Verify(__FILE__, __LINE__, "0 3",		    "%d %d", rc, number);#if TRIO_FEATURE_FLOAT  rc = trio_sscanf("0.141882295971771490", "%lf", &dnumber);  /* FIXME: Verify */#endif  number = 33;  rc = trio_sscanf("total 1", "total %d", &number);  nerrors += Verify(__FILE__, __LINE__, "1 1",		    "%d %d", rc, number);#if defined(TRIO_BREESE)# if TRIO_FEATURE_FLOAT  nerrors += Verify(__FILE__, __LINE__, "1 0.141882295971771488",		    "%d %.18f", rc, dnumber);  rc = trio_sscanf("0.141882295971771490", "%Lf", &ldnumber);  nerrors += Verify(__FILE__, __LINE__, "1 0.141882295971771490",		    "%d %.18Lf", rc, ldnumber);# endif#endif#if TRIO_FEATURE_FLOAT  rc = trio_sscanf("1.e-6", "%g", &dnumber);  nerrors += Verify(__FILE__, __LINE__, "1e-06",		    "%g", dnumber);  rc = trio_sscanf("1e-6", "%g", &dnumber);  nerrors += Verify(__FILE__, __LINE__, "1e-06",		    "%g", dnumber);#endif  return nerrors;}#endif/************************************************************************* * */intVerifyScanning(TRIO_NOARGS){  int nerrors = 0;#if TRIO_FEATURE_SCANF  nerrors += VerifyScanningIntegers();  nerrors += VerifyScanningFloats();  nerrors += VerifyScanningStrings();  nerrors += VerifyScanningRegression();#endif  return nerrors;}/************************************************************************* * */intVerifyStrings(TRIO_NOARGS){  int nerrors = 0;#if !defined(TRIO_MINIMAL)  char buffer[512];#if TRIO_FEATURE_FLOAT  double dnumber;  float fnumber;#endif  char *end;  /* Comparison */  trio_copy(buffer, "Find me now");  if (trio_length(buffer) != sizeof("Find me now") - 1) {    nerrors++;    Report0(__FILE__, __LINE__);  }  if (!trio_equal(buffer, "Find me now")) {    nerrors++;    Report0(__FILE__, __LINE__);  }  if (!trio_equal_case(buffer, "Find me now")) {    nerrors++;    Report0(__FILE__, __LINE__);  }  if (trio_equal_case(buffer, "FIND ME NOW")) {    nerrors++;    Report0(__FILE__, __LINE__);  }  if (!trio_equal_max(buffer, sizeof("Find me") - 1, "Find ME")) {    nerrors++;    Report0(__FILE__, __LINE__);  }  if (!trio_contains(buffer, "me")) {    nerrors++;    Report0(__FILE__, __LINE__);  }  if (trio_contains(buffer, "and me")) {    nerrors++;    Report0(__FILE__, __LINE__);  }  if (trio_substring(buffer, "me") == NULL) {    nerrors++;    Report0(__FILE__, __LINE__);  }  if (trio_substring_max(buffer, 4, "me") != NULL) {    nerrors++;    Report0(__FILE__, __LINE__);  }  if (!trio_match(buffer, "* me *")) {    nerrors++;    Report0(__FILE__, __LINE__);  }  if (trio_match_case(buffer, "* ME *")) {    nerrors++;    Report0(__FILE__, __LINE__);  }  if (trio_index(buffer, 'n') == NULL) {    nerrors++;    Report0(__FILE__, __LINE__);  }  if (trio_index(buffer, '_') != NULL) {    nerrors++;    Report0(__FILE__, __LINE__);  }  if (trio_index_last(buffer, 'n') == NULL) {    nerrors++;    Report0(__FILE__, __LINE__);  }  /* Append */  trio_copy(buffer, "Find me now");  if (!trio_append(buffer, " and again")) {    nerrors++;    Report0(__FILE__, __LINE__);  }  if (!trio_equal(buffer, "Find me now and again")) {    nerrors++;    Report0(__FILE__, __LINE__);  }  if (!trio_append_max(buffer, 0, "should not appear")) {    nerrors++;    Report0(__FILE__, __LINE__);  }  if (!trio_equal(buffer, "Find me now and again")) {    nerrors++;    Report0(__FILE__, __LINE__);  }    /* To upper/lower */  trio_copy(buffer, "Find me now");  trio_upper(buffer);  if (!trio_equal_case(buffer, "FIND ME NOW")) {    nerrors++;    Report0(__FILE__, __LINE__);  }  trio_lower(buffer);  if (!trio_equal_case(buffer, "find me now")) {    nerrors++;    Report0(__FILE__, __LINE__);  }#if TRIO_FEATURE_FLOAT  /* Double conversion */  trio_copy(buffer, "3.1415");  dnumber = trio_to_double(buffer, NULL);  if (!DOUBLE_EQUAL(dnumber, 3.1415)) {    nerrors++;    Report0(__FILE__, __LINE__);  }  fnumber = trio_to_float(buffer, NULL);  if (!FLOAT_EQUAL(fnumber, 3.1415)) {    nerrors++;    Report0(__FILE__, __LINE__);  }#endif  /* Long conversion */  trio_copy(buffer, "3.1415");  if (trio_to_long(buffer, NULL, 10) != 3L) {    nerrors++;    Report0(__FILE__, __LINE__);  }  if (trio_to_long(buffer, NULL, 4) != 3L) {    nerrors++;    Report0(__FILE__, __LINE__);  }  trio_to_long(buffer, &end, 2);  if (end != buffer) {    nerrors++;    Report0(__FILE__, __LINE__);  }  #endif /* !defined(TRIO_MINIMAL) */  return nerrors;}/************************************************************************* * */intVerifyDynamicStrings(TRIO_NOARGS){  int nerrors = 0;#if !defined(TRIO_MINIMAL)  trio_string_t *string;  string = trio_xstring_duplicate("Find me now");  if (string == NULL) {    nerrors++;    goto error;  }  if (!trio_xstring_equal(string, "FIND ME NOW"))    nerrors++;  if (!trio_xstring_append(string, " and again") ||      !trio_xstring_equal(string, "FIND ME NOW AND AGAIN"))    nerrors++;  if (!trio_xstring_contains(string, "me"))    nerrors++;  if (trio_xstring_contains(string, "ME"))    nerrors++;  if (!trio_xstring_match(string, "* me *"))    nerrors++;  if (trio_xstring_match_case(string, "* ME *"))    nerrors++;   error:  if (string)    trio_string_destroy(string);  #endif /* !defined(TRIO_MINIMAL) */  return nerrors;}/************************************************************************* * */intVerifyNaN(TRIO_NOARGS){  double ninf_number = trio_ninf();  double pinf_number = trio_pinf();  double nan_number = trio_nan();  int nerrors = 0;    nerrors += Verify(__FILE__, __LINE__, "-1",		    "%d", trio_isinf(ninf_number));  nerrors += Verify(__FILE__, __LINE__, "0",		    "%d", trio_isinf(42.0));  nerrors += Verify(__FILE__, __LINE__, "1",		    "%d", trio_isinf(pinf_number));  nerrors += Verify(__FILE__, __LINE__, "1",		    "%d", trio_isnan(nan_number));  nerrors += Verify(__FILE__, __LINE__, "0",		    "%d", trio_isnan(42.0));  return nerrors;}/************************************************************************* * */intmain(TRIO_NOARGS){  int nerrors = 0;  printf("%s\n", rcsid);#if TRIO_EXTENSION  /* Override system locale settings */  trio_locale_set_decimal_point(".");  trio_locale_set_thousand_separator(",");  trio_locale_set_grouping("\3");#endif  printf("Verifying strings\n");  nerrors += VerifyStrings();    printf("Verifying dynamic strings\n");  nerrors += VerifyDynamicStrings();  printf("Verifying special quantities\n");  nerrors += VerifyNaN();    printf("Verifying formatting\n");  nerrors += VerifyFormatting();    printf("Verifying scanning\n");  nerrors += VerifyScanning();    printf("Verifying return values\n");  nerrors += VerifyErrors();  nerrors += VerifyReturnValues();    printf("Verifying allocation\n");  nerrors += VerifyAllocate();  if (nerrors == 0)    printf("Regression test suceeded\n");  else    printf("Regression test failed in %d instance(s)\n", nerrors);    return nerrors ? 1 : 0;}

⌨️ 快捷键说明

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