Marco Zecchini
/
Example_RTOS
Rtos API example
Embed:
(wiki syntax)
Show/hide line numbers
semihost_fs.cpp
00001 #include "TestHarness.h" 00002 #include "mbed.h" 00003 #include "mbed_semihost_api.h" 00004 #include <stdio.h> 00005 00006 #define FILENAME "/local/out.txt" 00007 #define TEST_STRING "Hello World!" 00008 00009 TEST_GROUP(FirstTestGroup) 00010 { 00011 00012 FILE *test_open(const char *mode) { 00013 FILE *f = fopen(FILENAME, mode); 00014 return f; 00015 } 00016 00017 bool test_write(FILE *f, char *str, int str_len) { 00018 int n = fprintf(f, str); 00019 return (n == str_len) ? true : false; 00020 } 00021 00022 bool test_read(FILE *f, char *str, int str_len) { 00023 int n = fread(str, sizeof(unsigned char), str_len, f); 00024 return (n == str_len) ? true : false; 00025 } 00026 00027 bool test_close(FILE *f) { 00028 int rc = fclose(f); 00029 return rc ? true : false; 00030 } 00031 00032 }; 00033 00034 TEST(FirstTestGroup, FirstTest) 00035 { 00036 CHECK_TEXT(semihost_connected(), "Semihost not connected") 00037 00038 LocalFileSystem local("local"); 00039 00040 char *str = TEST_STRING; 00041 char *buffer = (char *)malloc(sizeof(unsigned char) * strlen(TEST_STRING)); 00042 int str_len = strlen(TEST_STRING); 00043 00044 CHECK_TEXT(buffer != NULL, "Buffer allocation failed"); 00045 CHECK_TEXT(str_len > 0, "Test string is empty (len <= 0)"); 00046 00047 { 00048 // Perform write / read tests 00049 FILE *f = NULL; 00050 // Write 00051 f = test_open("w"); 00052 CHECK_TEXT(f != NULL, "Error opening file for writing") 00053 CHECK_TEXT(test_write(f, str, str_len), "Error writing file"); 00054 CHECK_TEXT(test_close(f) != EOF, "Error closing file after write"); 00055 00056 // Read 00057 f = test_open("r"); 00058 CHECK_TEXT(f != NULL, "Error opening file for reading") 00059 CHECK_TEXT(test_read(f, buffer, str_len), "Error reading file"); 00060 CHECK_TEXT(test_close(f) != EOF, "Error closing file after read"); 00061 } 00062 CHECK(strncmp(buffer, str, str_len) == 0); 00063 }
Generated on Sun Jul 17 2022 08:25:29 by 1.7.2