mirror of https://github.com/flysand7/ciabatta.git
				
				
				
			Some stdio tests
This commit is contained in:
		
							parent
							
								
									064dfe3a78
								
							
						
					
					
						commit
						b6049794d1
					
				|  | @ -9,3 +9,4 @@ a.out | |||
| *.o | ||||
| *.4coder | ||||
| *.rdbg | ||||
| test_folder/ | ||||
|  | @ -526,6 +526,7 @@ int main(int argc, char **argv) { | |||
|     FEATURE_END(); | ||||
| 
 | ||||
|     FEATURE_START("ctype.h"); | ||||
|     { | ||||
|         // Test letters
 | ||||
|         for(int i = 0; i != 10; ++i) { | ||||
|             int letter = random_between('a', 'z'); | ||||
|  | @ -538,8 +539,67 @@ int main(int argc, char **argv) { | |||
|             TEST(isalpha(digit) == 0, "isalpha('%c') returned true", digit); | ||||
|             TEST(isdigit(digit) != 0, "isdigit('%c') returned false", digit); | ||||
|         } | ||||
|     } | ||||
|     FEATURE_END(); | ||||
|      | ||||
|     FEATURE_START("IO functions (stdio.h)"); | ||||
|     { | ||||
|         static int numbers[10] = {0,1,2,3,4,5,6,7,8,9}; | ||||
|         // fread/fwrite
 | ||||
|         { | ||||
|             FILE *file = fopen("test_folder/file", "wb"); | ||||
|             TEST(file != NULL, "Created file is NULL"); | ||||
|             int cnt_written = fwrite(numbers, sizeof(int), 10, file); | ||||
|             TEST(cnt_written == 10, "fwrite didn't write all 10 objects"); | ||||
|             TEST(fclose(file) == 0, "fclose didn't close the file"); | ||||
|             TEST(rename("test_folder/file", "test_folder/file2") == 0, "Rename returned 0"); | ||||
|             file = fopen("test_folder/file2", "rb"); | ||||
|             TEST(file != NULL, "Created file is NULL"); | ||||
|             int read_numbers[10]; | ||||
|             int cnt_read = fread(numbers, sizeof(int), 10, file); | ||||
|             TEST(cnt_read == 10, "fread didn't read 10 objects"); | ||||
|             bool all_ok = true; | ||||
|             for(int i = 0; i != 10; ++i) { | ||||
|                 if(read_numbers[i] != numbers[i]) { | ||||
|                     all_ok = false; | ||||
|                     break; | ||||
|                 } | ||||
|             } | ||||
|             TEST(all_ok, "The elements read didn't match the elements written"); | ||||
|             TEST(fclose(file) == 0, "fclose didn't close the file"); | ||||
|             TEST(remove("test_folder/file2") == 0, "remove didn't remove the file"); | ||||
|         } | ||||
|         // Seeking and stuff
 | ||||
|         { | ||||
|             FILE *file = fopen("test_folder/seek", "wb"); | ||||
|             TEST(file != NULL, "Created file is NULL"); | ||||
|             TEST(fwrite(numbers, sizeof(int), 10, file) == 10, "fwrite didn't write all 10 objects"); | ||||
|             TEST(fseek(file, 4*sizeof(int), SEEK_SET) == 0, "fseek couldn't seek to offset 4"); | ||||
|             int num; | ||||
|             TEST(fread(&num, sizeof(int), 1, file) == 1, "fread didn't read the int"); | ||||
|             TEST(num == 4, "Wrong value read at offset 4"); | ||||
|             TEST(fseek(file, -4, SEEK_END) == 0, "fseek coudn't seek to the end"); | ||||
|             TEST(fread(&num, sizeof(int), 1, file) == 1, "fread didn't read the int"); | ||||
|             TEST(num == 9, "Wrong number read"); | ||||
|             TEST(fclose(file) == 0, "fclose didn't close the file"); | ||||
|         } | ||||
|         // Getchar, ungetchar
 | ||||
|         { | ||||
|             char str[] = "Hello, world!"; | ||||
|             FILE *file = fopen("test_folder/getc", "wb"); | ||||
|             TEST(file != NULL, "Created file is NULL"); | ||||
|             TEST(fputs(str, file) >= 0, "fputs failed"); | ||||
|             TEST(fputc('!', file) == '!', "fputc failed"); | ||||
|             TEST(fflush(file) == 0, "fflush failed"); | ||||
|             fclose(file); | ||||
|             file = freopen("test_folder/getc", "rb", file); | ||||
|             TEST(file != NULL, "Reopened file is NULL"); | ||||
|             TEST(fgets(str, sizeof str, file) == str, "fgets failed"); | ||||
|             TEST(fgetc(file) == '!', "fgetc read the wrong thing"); | ||||
|             TEST(fclose(file) == 0, "fclose failed"); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     TESTS_PRINT_RESULT(); | ||||
|     return 0; | ||||
| } | ||||
|  |  | |||
							
								
								
									
										3
									
								
								todo
								
								
								
								
							
							
						
						
									
										3
									
								
								todo
								
								
								
								
							|  | @ -53,6 +53,9 @@ stdio.h: | |||
| *   tmpnam_s | ||||
| *   Printing 8.98846567431157854073e+307 | ||||
| *   Printing negative zero | ||||
| *   Add functions for testing a file path, creating directories | ||||
| *   Fix the bug where if a file wasn't closed the thing crashes when | ||||
|     trying to flush the buffer | ||||
| 
 | ||||
| stdlib.h: | ||||
| *   Strtod base 16 must be correctly rounded | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue