Test CUnit
Exemple de test general basat en CUnits
test.c — 5.0 KB
Continguts del fitxer
#include <stdio.h> #include <CUnit/CUnit.h> #include <CUnit/Basic.h> #include "codif.h" #include "itu.h" #include "streamencoder.h" void test_codif1(void) { morse_table_t t; // set translation table empty_morse_table(t); set_translation(t,'A',".-"); set_translation(t,'V',"...-"); set_translation(t,'5',"....."); // check to_ascii() CU_ASSERT_EQUAL('A',to_ascii(t,".-")); CU_ASSERT_EQUAL('V',to_ascii(t,"...-")); CU_ASSERT_EQUAL('5',to_ascii(t,".....")); // check to_morse() morse_char_t m; to_morse(t,'A',m); CU_ASSERT_STRING_EQUAL(m,".-"); to_morse(t,'V',m); CU_ASSERT_STRING_EQUAL(m, "...-"); to_morse(t,'5',m); CU_ASSERT_STRING_EQUAL(m,"....."); } void test_codif2(void) { morse_table_t t; // set translation table empty_morse_table(t); set_translation(t,'C',"-.-."); set_translation(t,'Z',"--.."); set_translation(t,'9',"----."); // check to_ascii() CU_ASSERT_EQUAL('C',to_ascii(t,"-.-.")); CU_ASSERT_EQUAL('Z',to_ascii(t,"--..")); CU_ASSERT_EQUAL('9',to_ascii(t,"----.")); CU_ASSERT_EQUAL('@',to_ascii(t,".-.-"));//no ascii for ".-.-" CU_ASSERT_EQUAL('@',to_ascii(t,"."));//no set_translation for E // check to_morse() morse_char_t m; to_morse(t,'C',m); CU_ASSERT_STRING_EQUAL(m,"-.-."); to_morse(t,'Z',m); CU_ASSERT_STRING_EQUAL(m, "--.."); to_morse(t,'9',m); CU_ASSERT_STRING_EQUAL(m,"----."); to_morse(t,'@',m); CU_ASSERT_STRING_EQUAL(m,"");//'@' is not on the table to_morse(t,'E',m); CU_ASSERT_STRING_EQUAL(m,"");//no set_translation for E to_morse(t,'\0',m); CU_ASSERT_STRING_EQUAL(m,"");//'\0' is not on the table to_morse(t,'a',m); CU_ASSERT_STRING_EQUAL(m,"");//'a' is not on the table } void test_itu1(void) { itu_init(); // check to_ascii() CU_ASSERT_EQUAL('A',to_ascii(itu_table,".-")); CU_ASSERT_EQUAL('V',to_ascii(itu_table,"...-")); CU_ASSERT_EQUAL('5',to_ascii(itu_table,".....")); // check to_morse() morse_char_t m; to_morse(itu_table,'A',m); CU_ASSERT_STRING_EQUAL(m,".-"); to_morse(itu_table,'V',m); CU_ASSERT_STRING_EQUAL(m, "...-"); to_morse(itu_table,'5',m); CU_ASSERT_STRING_EQUAL(m,"....."); } void test_itu2(void) { itu_init(); // check to_ascii() CU_ASSERT_EQUAL('C',to_ascii(itu_table,"-.-.")); CU_ASSERT_EQUAL('Z',to_ascii(itu_table,"--..")); CU_ASSERT_EQUAL('9',to_ascii(itu_table,"----.")); CU_ASSERT_EQUAL('@',to_ascii(itu_table,".-.-"));//no ascii for ".-.-" CU_ASSERT_EQUAL('E',to_ascii(itu_table,".")); // check to_morse() morse_char_t m; to_morse(itu_table,'C',m); CU_ASSERT_STRING_EQUAL(m,"-.-."); to_morse(itu_table,'Z',m); CU_ASSERT_STRING_EQUAL(m, "--.."); to_morse(itu_table,'9',m); CU_ASSERT_STRING_EQUAL(m,"----."); to_morse(itu_table,'@',m); CU_ASSERT_STRING_EQUAL(m,"");//'@' is not on the table to_morse(itu_table,'E',m); CU_ASSERT_STRING_EQUAL(m,"."); to_morse(itu_table,'\0',m); CU_ASSERT_STRING_EQUAL(m,"");//'\0' is not on the table to_morse(itu_table,'a',m); CU_ASSERT_STRING_EQUAL(m,"");//'a' is not on the table } void test_streamencoder1(void) { FILE *in, *out; char buffer[100]; const struct {char *a,*m;} tests[] = { {"AGENT 007 \n",".- --. . -. - ----- ----- --... \n"}, {"CATALA A LATAC \n","-.-. .- - .- .-.. .- .- .-.. .- - .- -.-. \n"}, {"RAP LLUCET SEITO \n",".-. .- .--. .-.. .-.. ..- -.-. . - ... . .. - --- \n"}, }; // initialize environment streamencoder_init(); // iterate over tests ascii->morse for (int i=0; i<3; i++) { in = tmpfile(); out = tmpfile(); fputs(tests[i].a, in); rewind(in); do_codifica(in, out); rewind(out); fgets(buffer, 100, out); CU_ASSERT_STRING_EQUAL(buffer, tests[i].m); fclose(in); fclose(out); } // iterate over tests morse->ascii for (int i=0; i<3; i++) { in = tmpfile(); out = tmpfile(); fputs(tests[i].m, in); rewind(in); do_descodifica(in, out); rewind(out); fgets(buffer, 100, out); CU_ASSERT_STRING_EQUAL(buffer, tests[i].a); fclose(in); fclose(out); } } int main() { /* initialize the CUnit test registry */ if (CUE_SUCCESS != CU_initialize_registry()) return CU_get_error(); /* Suite_1 (BASIC) */ /* add a suite to the registry */ CU_pSuite pSuite1 = CU_add_suite("Suite_1 Basic", NULL, NULL); if (NULL == pSuite1) { CU_cleanup_registry(); return CU_get_error(); } /* add the tests to the suite1 */ CU_ADD_TEST(pSuite1, test_codif1); CU_ADD_TEST(pSuite1, test_itu1); CU_ADD_TEST(pSuite1, test_streamencoder1); /* Suite_2 (STANDARD) */ /* add a suite to the registry */ CU_pSuite pSuite2 = CU_add_suite("Suite_2 Standard", NULL, NULL); if (NULL == pSuite2) { CU_cleanup_registry(); return CU_get_error(); } /* add the tests to the suite2 */ CU_ADD_TEST(pSuite2, test_codif2); CU_ADD_TEST(pSuite2, test_itu2); /* Run all tests using the CUnit Basic interface */ CU_basic_set_mode(CU_BRM_VERBOSE); CU_basic_run_tests(); CU_cleanup_registry(); return CU_get_error(); }