|
|
|
@ -12,8 +12,25 @@ const char* PASS = "PASS";
|
|
|
|
|
const char* EQ = "==";
|
|
|
|
|
const char* NEQ = "!=";
|
|
|
|
|
|
|
|
|
|
const char* GREEN_TEXT = "\e[32m";
|
|
|
|
|
const char* RED_TEXT = "\e[31m";
|
|
|
|
|
const char* CLEAR_FORMAT = "\e[0m";
|
|
|
|
|
|
|
|
|
|
const char* PASS_FORMAT = "\e[32m[%s]: \"%s\" %s \"%s\"\e[0m\n";
|
|
|
|
|
const char* FAIL_FORMAT = "\e[31m[%s]: \"%s\" %s \"%s\"\e[0m\n";
|
|
|
|
|
const char* PASS_CHAR_FORMAT = "\e[32m[%s]: \'%c\' %s \'%c\'\e[0m\n";
|
|
|
|
|
const char* FAIL_CHAR_FORMAT = "\e[31m[%s]: \'%c\' %s \'%c\'\e[0m\n";
|
|
|
|
|
|
|
|
|
|
void assert_char_eq(const char c1, const char c2){
|
|
|
|
|
tests_run++;
|
|
|
|
|
if (c1 == c2){
|
|
|
|
|
printf(PASS_CHAR_FORMAT, PASS, c1, EQ, c2);
|
|
|
|
|
tests_passed++;
|
|
|
|
|
} else {
|
|
|
|
|
printf(FAIL_CHAR_FORMAT, FAIL, c1, NEQ, c2);
|
|
|
|
|
tests_failed++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void assert_str_eq(const char* s1, const char* s2){
|
|
|
|
|
tests_run++;
|
|
|
|
@ -21,7 +38,7 @@ void assert_str_eq(const char* s1, const char* s2){
|
|
|
|
|
printf(PASS_FORMAT, PASS, s1, EQ, s2);
|
|
|
|
|
tests_passed++;
|
|
|
|
|
} else {
|
|
|
|
|
printf(PASS_FORMAT, FAIL, s1, NEQ, s2);
|
|
|
|
|
printf(FAIL_FORMAT, FAIL, s1, NEQ, s2);
|
|
|
|
|
tests_failed++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -32,7 +49,7 @@ void assert_str_neq(const char* s1, const char* s2){
|
|
|
|
|
printf(PASS_FORMAT, PASS, s1, NEQ, s2);
|
|
|
|
|
tests_passed++;
|
|
|
|
|
} else {
|
|
|
|
|
printf(PASS_FORMAT, FAIL, s1, EQ, s2);
|
|
|
|
|
printf(FAIL_FORMAT, FAIL, s1, EQ, s2);
|
|
|
|
|
tests_failed++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -50,6 +67,16 @@ void assert_stm(char* input, char* output){
|
|
|
|
|
assert_str_eq(result, output);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void assert_mtc(char* input, char output){
|
|
|
|
|
char result = morse_to_char(input);
|
|
|
|
|
assert_char_eq(result, output);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void assert_mts(char* input, char* output){
|
|
|
|
|
char* result = morse_to_string(input);
|
|
|
|
|
assert_str_eq(result, output);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void test_tests(){
|
|
|
|
|
assert_str_eq(".", ".");
|
|
|
|
|
assert_str_neq("+", "-");
|
|
|
|
@ -107,7 +134,18 @@ void test_to_morse(){
|
|
|
|
|
assert_ctm('y', "-.--");
|
|
|
|
|
assert_ctm('Y', "-.--");
|
|
|
|
|
assert_ctm('z', "--..");
|
|
|
|
|
assert_ctm('Z', "--..");
|
|
|
|
|
assert_ctm('0', "-----");
|
|
|
|
|
assert_ctm('1', ".----");
|
|
|
|
|
assert_ctm('2', "..---");
|
|
|
|
|
assert_ctm('3', "...--");
|
|
|
|
|
assert_ctm('4', "....-");
|
|
|
|
|
assert_ctm('5', ".....");
|
|
|
|
|
assert_ctm('6', "-....");
|
|
|
|
|
assert_ctm('7', "--...");
|
|
|
|
|
assert_ctm('8', "---..");
|
|
|
|
|
assert_ctm('9', "----.");
|
|
|
|
|
assert_ctm(' ', "/");
|
|
|
|
|
assert_ctm('!', "-.-.--");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void test_string_to_morse(){
|
|
|
|
@ -116,6 +154,48 @@ void test_string_to_morse(){
|
|
|
|
|
assert_stm("world", ".-- --- .-. .-.. -..");
|
|
|
|
|
assert_stm("Hello world!", ".... . .-.. .-.. --- / .-- --- .-. .-.. -.. -.-.--");
|
|
|
|
|
assert_stm("I! HATE! YOU!", ".. -.-.-- / .... .- - . -.-.-- / -.-- --- ..- -.-.--");
|
|
|
|
|
assert_stm("Whisky and rye", ".-- .... .. ... -.- -.-- / .- -. -.. / .-. -.-- .");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void test_morse_to_char(){
|
|
|
|
|
assert_mtc(".-", 'A');
|
|
|
|
|
assert_mtc("-...", 'B');
|
|
|
|
|
assert_mtc("-.-.", 'C');
|
|
|
|
|
assert_mtc("-..", 'D');
|
|
|
|
|
assert_mtc(".", 'E');
|
|
|
|
|
assert_mtc("..-.", 'F');
|
|
|
|
|
assert_mtc("--.", 'G');
|
|
|
|
|
assert_mtc("....", 'H');
|
|
|
|
|
assert_mtc("..", 'I');
|
|
|
|
|
assert_mtc(".---", 'J');
|
|
|
|
|
assert_mtc("-.-", 'K');
|
|
|
|
|
assert_mtc(".-..", 'L');
|
|
|
|
|
assert_mtc("--", 'M');
|
|
|
|
|
assert_mtc("-.", 'N');
|
|
|
|
|
assert_mtc("---", 'O');
|
|
|
|
|
assert_mtc(".--.", 'P');
|
|
|
|
|
assert_mtc("--.-", 'Q');
|
|
|
|
|
assert_mtc(".-.", 'R');
|
|
|
|
|
assert_mtc("...", 'S');
|
|
|
|
|
assert_mtc("-", 'T');
|
|
|
|
|
assert_mtc("..-", 'U');
|
|
|
|
|
assert_mtc("...-", 'V');
|
|
|
|
|
assert_mtc(".--", 'W');
|
|
|
|
|
assert_mtc("-..-", 'X');
|
|
|
|
|
assert_mtc("-.--", 'Y');
|
|
|
|
|
assert_mtc("--..", 'Z');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void test_morse_to_string(){
|
|
|
|
|
assert_mts("... --- ...", "SOS");
|
|
|
|
|
assert_mts(". . . . .", "EEEEE");
|
|
|
|
|
assert_mts("- ... ....", "TSH");
|
|
|
|
|
assert_mts("- - - - ... ... ... ... .... .... .... .... / .... .. .. .. ..", "TTTTSSSSHHHH HIIII");
|
|
|
|
|
assert_mts("- .- .-. ..-. / -- .- .-.. .- -.- --- ...-", "TARF MALAKOV");
|
|
|
|
|
assert_mts("- .- .. -", "TAIT");
|
|
|
|
|
assert_mts("- .- .-.. -.-", "TALK");
|
|
|
|
|
assert_mts("- .- ... -.- / -- .- ... - . .-.", "TASK MASTER");
|
|
|
|
|
assert_mts("- .- .-. ..-. / -- .- .-.. .- -.- --- ...-", "TARF MALAKOV");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void all_tests(){
|
|
|
|
@ -125,13 +205,30 @@ void all_tests(){
|
|
|
|
|
printf("char_to_morse tests complete!\n");
|
|
|
|
|
test_string_to_morse();
|
|
|
|
|
printf("string_to_morse tests complete!\n");
|
|
|
|
|
test_morse_to_char();
|
|
|
|
|
printf("test_morse_to_char tests complete!\n");
|
|
|
|
|
test_morse_to_string();
|
|
|
|
|
printf("test_morse_to_string tests complete!\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int main(int argc, char **argv) {
|
|
|
|
|
bool done_printing_passed_tests = false;
|
|
|
|
|
|
|
|
|
|
all_tests();
|
|
|
|
|
if (tests_run == tests_passed){
|
|
|
|
|
printf("ALL TESTS PASSED\n");
|
|
|
|
|
}
|
|
|
|
|
printf(GREEN_TEXT);
|
|
|
|
|
for (int i = 0; i < tests_passed; i++){
|
|
|
|
|
printf("=");
|
|
|
|
|
}
|
|
|
|
|
printf(CLEAR_FORMAT);
|
|
|
|
|
printf(RED_TEXT);
|
|
|
|
|
for (int i = 0; i < tests_failed; i++){
|
|
|
|
|
printf("=");
|
|
|
|
|
}
|
|
|
|
|
printf("\n");
|
|
|
|
|
printf(CLEAR_FORMAT);
|
|
|
|
|
printf("Tests run: %d\n", tests_run);
|
|
|
|
|
printf("Tests passed: %d\n", tests_passed);
|
|
|
|
|
printf("Tests failed: %d\n", tests_failed);
|
|
|
|
|