project_files/hwc/rtl/tests/check_system.c
branchwebgl
changeset 7983 02f36c3e7f6c
child 10015 4feced261c68
equal deleted inserted replaced
7981:aac257b77842 7983:02f36c3e7f6c
       
     1 #include <check.h>
       
     2 #include <stdlib.h>
       
     3 #include <stdio.h>
       
     4 #include "check_check.h"
       
     5 #include "../src/system.h"
       
     6 
       
     7 void check_string(string255 str)
       
     8 {
       
     9 	fail_unless(strlen(str.str) == str.len, "String internal inconsistency error");
       
    10 }
       
    11 
       
    12 static string255 make_string(const char* str)
       
    13 {
       
    14 	string255 s;
       
    15 	s.len = strlen(str);
       
    16 	memcpy(s.str, str, s.len + 1);
       
    17 	return s;
       
    18 }
       
    19 
       
    20 START_TEST (test_copy)
       
    21 	{
       
    22 		string255 s = STRINIT("1234567");
       
    23 		string255 t;
       
    24 
       
    25 		t = fpcrtl_copy(s, 1, 1);
       
    26 		fail_if(strcmp(t.str, "1"), "Test copy fail 1");
       
    27 
       
    28 		t = fpcrtl_copy(s, 7, 1);
       
    29 		fail_if(strcmp(t.str, "7"), "Test copy fail 2");
       
    30 
       
    31 		t = fpcrtl_copy(s, 8, 1);
       
    32 		fail_if(t.len != 0, "Test copy fail 3");
       
    33 
       
    34 		t = fpcrtl_copy(s, 8, 100);
       
    35 		fail_if(t.len != 0, "Test copy fail 4");
       
    36 		check_string(t);
       
    37 
       
    38 		t = fpcrtl_copy(s, 0, 100);
       
    39 		fail_if(strcmp(t.str, "1234567"), "Test copy fail 5");
       
    40 
       
    41 		t = fpcrtl_copy(s, 0, 5);
       
    42 		fail_if(strcmp(t.str, "12345"), "Test copy fail 6");
       
    43 
       
    44 		t = fpcrtl_copy(s, 4, 100);
       
    45 		fail_if(strcmp(t.str, "4567"), "Test copy fail 7");
       
    46 
       
    47 		t = fpcrtl_copy(s, 4, 2);
       
    48 		fail_if(strcmp(t.str, "45"), "Test copy fail 8");
       
    49 	}END_TEST
       
    50 
       
    51 START_TEST (test_delete)
       
    52 	{
       
    53 		string255 s = STRINIT("1234567");
       
    54 		string255 s2 = STRINIT("1234567");
       
    55 		string255 s3 = STRINIT("1234567");
       
    56 
       
    57 		fpcrtl_delete(s, 0, 10);
       
    58 		fail_if(strcmp(s.str, "1234567"), "delete(\"1234567\", 0, 10)");
       
    59 		check_string(s);
       
    60 
       
    61 		fpcrtl_delete(s, 1, 1);
       
    62 		fail_if(strcmp(s.str, "234567"), "delete(\"1234567\", 1, 1)");
       
    63 		check_string(s);
       
    64 
       
    65 		fpcrtl_delete(s, 1, 100);
       
    66 		fail_if(strcmp(s.str, ""), "delete(\"234567\", 1, 100)");
       
    67 		check_string(s);
       
    68 
       
    69 		fpcrtl_delete(s2, 3, 2);
       
    70 		fail_if(strcmp(s2.str, "12567"), "delete(\"1234567\", 3, 2)");
       
    71 		check_string(s2);
       
    72 
       
    73 		fpcrtl_delete(s3, 3, 100);
       
    74 		fail_if(strcmp(s3.str, "12"), "delete(\"1234567\", 3, 100)");
       
    75 		check_string(s3);
       
    76 
       
    77 	}
       
    78 END_TEST
       
    79 
       
    80 START_TEST (test_FloatToStr)
       
    81 	{
       
    82 		double s = 1.2345;
       
    83 		string255 t = fpcrtl_floatToStr(s);
       
    84 		printf("-----Entering test floatToStr-----\n");
       
    85 		printf("FloatToStr(%f) = %s\n", s, t.str);
       
    86 		printf("-----Leaving test floatToStr-----\n");
       
    87 	}
       
    88 END_TEST
       
    89 
       
    90 START_TEST (test_random)
       
    91 	{
       
    92 		fpcrtl_randomize();
       
    93 		printf("-----Entering test random-----\n");
       
    94 		printf("random(5000) = %d\n", fpcrtl_random(5000));
       
    95 		printf("random(1) = %d\n", fpcrtl_random(1));
       
    96 		printf("random(2) = %d\n", fpcrtl_random(2));
       
    97 		printf("-----Leaving test random-----\n");
       
    98 
       
    99 	}
       
   100 END_TEST
       
   101 
       
   102 START_TEST (test_posS)
       
   103 	{
       
   104 		string255 substr1 = STRINIT("123");
       
   105 		string255 str1 = STRINIT("12345");
       
   106 
       
   107 		string255 substr2 = STRINIT("45");
       
   108 		string255 str2 = STRINIT("12345");
       
   109 
       
   110 		string255 substr3 = STRINIT("");
       
   111 		string255 str3 = STRINIT("12345");
       
   112 
       
   113 		string255 substr4 = STRINIT("123");
       
   114 		string255 str4 = STRINIT("");
       
   115 
       
   116 		string255 substr5 = STRINIT("123");
       
   117 		string255 str5 = STRINIT("456");
       
   118 
       
   119 		fail_unless(fpcrtl_posS(substr1, str1) == 1, "pos(123, 12345)");
       
   120 		fail_unless(fpcrtl_posS(substr2, str2) == 4, "pos(45, 12345)");
       
   121 		fail_unless(fpcrtl_posS(substr3, str3) == 0, "pos(, 12345)");
       
   122 		fail_unless(fpcrtl_posS(substr4, str4) == 0, "pos(123, )");
       
   123 		fail_unless(fpcrtl_posS(substr5, str5) == 0, "pos(123, 456)");
       
   124 	}
       
   125 END_TEST
       
   126 
       
   127 START_TEST (test_trunc)
       
   128 	{
       
   129 		  fail_unless(fpcrtl_trunc(123.456) == 123, "trunc(123.456)");
       
   130 		  fail_unless(fpcrtl_trunc(-123.456) == -123, "trunc(-123.456)");
       
   131 		  fail_unless(fpcrtl_trunc(12.3456) == 12, "trunc(12.3456)");
       
   132 		  fail_unless(fpcrtl_trunc(-12.3456) == -12, "trunc(-12.3456)");
       
   133 	}
       
   134 END_TEST
       
   135 
       
   136 START_TEST (test_odd)
       
   137 {
       
   138 	fail_unless(fpcrtl_odd(123) != 0, "odd(123)");
       
   139 	fail_unless(fpcrtl_odd(124) == 0, "odd(124)");
       
   140 	fail_unless(fpcrtl_odd(0) == 0, "odd(0)");
       
   141 	fail_unless(fpcrtl_odd(-1) != 0, "odd(-1)");
       
   142 	fail_unless(fpcrtl_odd(-2) == 0, "odd(-2)");
       
   143 }
       
   144 END_TEST
       
   145 
       
   146 START_TEST (test_sqr)
       
   147 {
       
   148 	fail_unless(fpcrtl_sqr(0) == 0, "sqr(0)");
       
   149 	fail_unless(fpcrtl_sqr(5) == 25, "sqr(5)");
       
   150 	fail_unless(fpcrtl_sqr(-5) == 25, "sqr(-5)");
       
   151 }
       
   152 END_TEST
       
   153 
       
   154 START_TEST (test_lowercase)
       
   155 {
       
   156 	string255 s1 = STRINIT("");
       
   157 	string255 s2 = STRINIT("a");
       
   158 	string255 s3 = STRINIT("abc");
       
   159 	string255 t;
       
   160 
       
   161 	t = fpcrtl_lowerCase(make_string(""));
       
   162 	fail_if(strcmp(t.str, s1.str), "lowerCase(\"\")");
       
   163 
       
   164 	t = fpcrtl_lowerCase(make_string("a"));
       
   165 	fail_if(strcmp(t.str, s2.str), "lowerCase(\"a\")");
       
   166 
       
   167 	t = fpcrtl_lowerCase(make_string("A"));
       
   168 	fail_if(strcmp(t.str, s2.str), "lowerCase(\"A\")");
       
   169 
       
   170 	t = fpcrtl_lowerCase(make_string("AbC"));
       
   171 	fail_if(strcmp(t.str, s3.str), "lowerCase(\"AbC\")");
       
   172 
       
   173 	t = fpcrtl_lowerCase(make_string("abc"));
       
   174 	fail_if(strcmp(t.str, s3.str), "lowerCase(\"abc\")");
       
   175 }
       
   176 END_TEST
       
   177 
       
   178 START_TEST (test_str)
       
   179 {
       
   180 	int8_t a1 = -8;
       
   181 	uint8_t a2 = 8;
       
   182 	int16_t a3 = -13;
       
   183 	uint16_t a4 = 13;
       
   184 	int32_t a5 = -19;
       
   185 	uint32_t a6 = 22;
       
   186 	int64_t a7 = -199999999999999;
       
   187 	uint64_t a8 = 200000000000000;
       
   188 
       
   189 	float a9 = 12345.6789;
       
   190 	double a10 = -9876.54321;
       
   191 
       
   192 	string255 s;
       
   193 
       
   194 	printf("-----Entering test str-----\n");
       
   195 
       
   196 	fpcrtl_str(a1, s);
       
   197 	printf("%d == %s\n", a1, s.str);
       
   198 
       
   199 	fpcrtl_str(a2, s);
       
   200 	printf("%u == %s\n", a2, s.str);
       
   201 
       
   202 	fpcrtl_str(a3, s);
       
   203 	printf("%d == %s\n", a3, s.str);
       
   204 
       
   205 	fpcrtl_str(a4, s);
       
   206 	printf("%u == %s\n", a4, s.str);
       
   207 
       
   208 	fpcrtl_str(a5, s);
       
   209 	printf("%d == %s\n", a5, s.str);
       
   210 
       
   211 	fpcrtl_str(a6, s);
       
   212 	printf("%u == %s\n", a6, s.str);
       
   213 
       
   214 	fpcrtl_str(a7, s);
       
   215 	printf("%lld == %s\n", a7, s.str);
       
   216 
       
   217 	fpcrtl_str(a8, s);
       
   218 	printf("%llu == %s\n", a8, s.str);
       
   219 
       
   220 	fpcrtl_str(a9, s);
       
   221 	printf("%f == %s\n", a9, s.str);
       
   222 
       
   223 	fpcrtl_str(a10, s);
       
   224 	printf("%f == %s\n", a10, s.str);
       
   225 
       
   226 	printf("-----Leaving test str------\n");
       
   227 }
       
   228 END_TEST
       
   229 
       
   230 Suite* system_suite(void)
       
   231 {
       
   232 	Suite *s = suite_create("system");
       
   233 
       
   234 	TCase *tc_core = tcase_create("Core");
       
   235 
       
   236 	tcase_add_test(tc_core, test_copy);
       
   237 	tcase_add_test(tc_core, test_FloatToStr);
       
   238 	tcase_add_test(tc_core, test_random);
       
   239 	tcase_add_test(tc_core, test_posS);
       
   240 	tcase_add_test(tc_core, test_trunc);
       
   241 	tcase_add_test(tc_core, test_delete);
       
   242 	tcase_add_test(tc_core, test_odd);
       
   243 	tcase_add_test(tc_core, test_sqr);
       
   244 	tcase_add_test(tc_core, test_lowercase);
       
   245 	tcase_add_test(tc_core, test_str);
       
   246 
       
   247 	suite_add_tcase(s, tc_core);
       
   248 
       
   249 	return s;
       
   250 }
       
   251