Wed, 10 Oct 2012 09:32:06 +0200
discarded memprintf / memscanf
Reason: memscanf has no chance to get the amount of bytes read
universe@56 | 1 | /* |
universe@56 | 2 | * |
universe@56 | 3 | */ |
universe@56 | 4 | |
universe@56 | 5 | #include "memstream_tests.h" |
universe@56 | 6 | |
universe@56 | 7 | UCX_TEST_IMPLEMENT(test_ucx_memseektell) { |
universe@56 | 8 | char *buffer = malloc(16); |
universe@56 | 9 | memset(buffer, 32, 7); |
universe@56 | 10 | buffer[7] = 0; |
universe@56 | 11 | |
universe@56 | 12 | UcxMemstream *m = ucx_memopen(buffer, 16); |
universe@56 | 13 | int r; |
universe@56 | 14 | |
universe@56 | 15 | UCX_TEST_BEGIN |
universe@56 | 16 | |
universe@56 | 17 | r = ucx_memseek(m, 5, SEEK_SET); |
universe@56 | 18 | UCX_TEST_ASSERT(r == 0, "seek SET+5 failed"); |
universe@56 | 19 | UCX_TEST_ASSERT(ucx_memtell(m) == 5, "seek SET+5 set wrong position"); |
universe@56 | 20 | |
universe@56 | 21 | r = ucx_memseek(m, 20, SEEK_SET); |
universe@56 | 22 | UCX_TEST_ASSERT(r != 0, "seek beyond bounds shall fail"); |
universe@56 | 23 | UCX_TEST_ASSERT(ucx_memtell(m) == 5, |
universe@56 | 24 | "failed seek shall leave pos unchanged"); |
universe@56 | 25 | |
universe@56 | 26 | r = ucx_memseek(m, 5, SEEK_CUR); |
universe@56 | 27 | UCX_TEST_ASSERT(r == 0, "seek CUR+5 failed"); |
universe@56 | 28 | UCX_TEST_ASSERT(ucx_memtell(m) == 10, "seek CUR+5 set wrong position"); |
universe@56 | 29 | |
universe@56 | 30 | r = ucx_memseek(m, 10, SEEK_CUR); |
universe@56 | 31 | UCX_TEST_ASSERT(r != 0, "seek CUR beyond bounds shall fail"); |
universe@56 | 32 | UCX_TEST_ASSERT(ucx_memtell(m) == 10, |
universe@56 | 33 | "failed seek shall leave pos unchanged"); |
universe@56 | 34 | |
universe@56 | 35 | r = ucx_memseek(m, -5, SEEK_END); |
universe@56 | 36 | UCX_TEST_ASSERT(r == 0, "seek END-5 failed"); |
universe@56 | 37 | UCX_TEST_ASSERT(ucx_memtell(m) == 2, "seek END-5 set wrong position"); |
universe@56 | 38 | |
universe@56 | 39 | r = ucx_memseek(m, -10, SEEK_END); |
universe@56 | 40 | UCX_TEST_ASSERT(r != 0, "seek END beyond bounds shall fail"); |
universe@56 | 41 | UCX_TEST_ASSERT(ucx_memtell(m) == 2, |
universe@56 | 42 | "failed seek shall leave pos unchanged"); |
universe@56 | 43 | |
universe@56 | 44 | UCX_TEST_END |
universe@56 | 45 | |
universe@56 | 46 | ucx_memclose(m); |
universe@56 | 47 | free(buffer); |
universe@56 | 48 | } |
universe@56 | 49 | |
universe@56 | 50 | UCX_TEST_IMPLEMENT(test_ucx_memputc) { |
universe@56 | 51 | char *buffer = malloc(16); |
universe@56 | 52 | memset(buffer, 32, 16); |
universe@56 | 53 | |
universe@56 | 54 | UcxMemstream *m = ucx_memopen(buffer, 16); |
universe@56 | 55 | int r; |
universe@56 | 56 | |
universe@56 | 57 | UCX_TEST_BEGIN |
universe@56 | 58 | |
universe@56 | 59 | ucx_memputc(m, 48); ucx_memputc(m, 48); ucx_memputc(m, 48); |
universe@56 | 60 | UCX_TEST_ASSERT(ucx_memtell(m) == 3, "pos wrong after first 3 puts"); |
universe@56 | 61 | ucx_memseek(m, 10, SEEK_CUR); |
universe@56 | 62 | ucx_memputc(m, 48); ucx_memputc(m, 48); ucx_memputc(m, 48); |
universe@56 | 63 | UCX_TEST_ASSERT(ucx_memtell(m) == 16, "pos wrong after last 3 puts"); |
universe@56 | 64 | UCX_TEST_ASSERT(ucx_memeof(m), "eof not set"); |
universe@56 | 65 | UCX_TEST_ASSERT(ucx_memputc(m, 48) == EOF, "put shall return EOF on memof"); |
universe@56 | 66 | UCX_TEST_ASSERT(memcmp(buffer, "000 000", 16) == 0, |
universe@56 | 67 | "buffer contains incorrect content"); |
universe@56 | 68 | |
universe@56 | 69 | UCX_TEST_END |
universe@56 | 70 | |
universe@56 | 71 | ucx_memclose(m); |
universe@56 | 72 | free(buffer); |
universe@56 | 73 | } |
universe@56 | 74 | |
universe@56 | 75 | UCX_TEST_IMPLEMENT(test_ucx_memgetc) { |
universe@56 | 76 | char *buffer = malloc(16); |
universe@56 | 77 | memset(buffer, 32, 8); |
universe@56 | 78 | for (int i = 8; i < 16 ; i++) { |
universe@56 | 79 | buffer[i] = 40+i; |
universe@56 | 80 | } |
universe@56 | 81 | |
universe@56 | 82 | UcxMemstream *m = ucx_memopen(buffer, 16); |
universe@56 | 83 | int r; |
universe@56 | 84 | |
universe@56 | 85 | UCX_TEST_BEGIN |
universe@56 | 86 | |
universe@56 | 87 | char rb[16]; |
universe@56 | 88 | for (int i = 0 ; i < 16 ; i++) { |
universe@56 | 89 | UCX_TEST_ASSERT(ucx_memtell(m) == i, "pos wrong during read loop"); |
universe@56 | 90 | UCX_TEST_ASSERT(!ucx_memeof(m), |
universe@56 | 91 | "EOF shall not be set during read loop"); |
universe@56 | 92 | rb[i] = ucx_memgetc(m); |
universe@56 | 93 | } |
universe@56 | 94 | UCX_TEST_ASSERT(ucx_memtell(m) == 16, "pos wrong after read loop"); |
universe@56 | 95 | UCX_TEST_ASSERT(ucx_memeof(m), "EOF not set"); |
universe@56 | 96 | UCX_TEST_ASSERT(memcmp(rb, " 01234567", 16) == 0, |
universe@56 | 97 | "read data incorrect"); |
universe@56 | 98 | |
universe@56 | 99 | UCX_TEST_END |
universe@56 | 100 | |
universe@56 | 101 | ucx_memclose(m); |
universe@56 | 102 | free(buffer); |
universe@56 | 103 | } |
universe@56 | 104 | |
universe@56 | 105 | UCX_TEST_IMPLEMENT(test_ucx_memwrite) { |
universe@56 | 106 | char *buffer = malloc(16); |
universe@56 | 107 | memset(buffer, 32, 8); |
universe@56 | 108 | for (int i = 8; i < 16 ; i++) { |
universe@56 | 109 | buffer[i] = 40+i; |
universe@56 | 110 | } |
universe@56 | 111 | |
universe@56 | 112 | UcxMemstream *m = ucx_memopen(buffer, 16); |
universe@56 | 113 | int r; |
universe@56 | 114 | |
universe@56 | 115 | UCX_TEST_BEGIN |
universe@56 | 116 | |
universe@56 | 117 | char* teststring = "this is way too much"; |
universe@56 | 118 | r = ucx_memwrite(teststring, 1, 20, m); |
universe@56 | 119 | UCX_TEST_ASSERT(r == 16, "string not correctly trimed"); |
universe@56 | 120 | UCX_TEST_ASSERT(memcmp(buffer, teststring, 16) == 0, |
universe@56 | 121 | "buffer data incorrect"); |
universe@56 | 122 | UCX_TEST_ASSERT(ucx_memeof(m), "eof shall be set"); |
universe@56 | 123 | |
universe@56 | 124 | ucx_memseek(m, 8, SEEK_SET); |
universe@56 | 125 | r = ucx_memwrite("not", 1, 3, m); |
universe@56 | 126 | UCX_TEST_ASSERT(r == 3, "three bytes should be replace"); |
universe@56 | 127 | UCX_TEST_ASSERT(memcmp(buffer, "this is not too much", 16) == 0, |
universe@56 | 128 | "modified buffer is incorrect"); |
universe@56 | 129 | |
universe@56 | 130 | char* threebytestring = " t h r e e "; |
universe@56 | 131 | memset(buffer, 49, 16); |
universe@56 | 132 | ucx_memseek(m, 0, SEEK_SET); |
universe@56 | 133 | r = ucx_memwrite(threebytestring, 3, 6, m); |
universe@56 | 134 | UCX_TEST_ASSERT(r == 15, "three byte string not correctly trimed"); |
universe@56 | 135 | UCX_TEST_ASSERT(ucx_memtell(m) == 15, |
universe@56 | 136 | "position after write of three byte string incorrect"); |
universe@56 | 137 | UCX_TEST_ASSERT(!ucx_memeof(m), "eof shall not be set"); |
universe@56 | 138 | UCX_TEST_ASSERT(memcmp(buffer, " t h r e e1", 16) == 0, |
universe@56 | 139 | "bufer is incorrect after three byte string has been written"); |
universe@56 | 140 | |
universe@56 | 141 | UCX_TEST_END |
universe@56 | 142 | |
universe@56 | 143 | ucx_memclose(m); |
universe@56 | 144 | free(buffer); |
universe@56 | 145 | } |
universe@56 | 146 | |
universe@56 | 147 | UCX_TEST_IMPLEMENT(test_ucx_memread) { |
universe@56 | 148 | char *buffer = malloc(16); |
universe@56 | 149 | memset(buffer, 56, 8); |
universe@56 | 150 | for (int i = 8; i < 16 ; i++) { |
universe@56 | 151 | buffer[i] = 40+i; |
universe@56 | 152 | } |
universe@56 | 153 | |
universe@56 | 154 | UcxMemstream *m = ucx_memopen(buffer, 16); |
universe@56 | 155 | int r; |
universe@56 | 156 | |
universe@56 | 157 | UCX_TEST_BEGIN |
universe@56 | 158 | |
universe@56 | 159 | char rb[16]; |
universe@56 | 160 | memset(rb, 32, 16); |
universe@56 | 161 | |
universe@56 | 162 | ucx_memseek(m, 8, SEEK_SET); |
universe@56 | 163 | r = ucx_memread(rb, 1, 16, m); |
universe@56 | 164 | UCX_TEST_ASSERT(r == 8, "read did not stop at buffer end"); |
universe@56 | 165 | UCX_TEST_ASSERT(memcmp(rb, "01234567 ", 16) == 0, |
universe@56 | 166 | "buffer incorrect after first read"); |
universe@56 | 167 | UCX_TEST_ASSERT(ucx_memeof(m), "eof shall be set"); |
universe@56 | 168 | |
universe@56 | 169 | ucx_memseek(m, 0, SEEK_SET); |
universe@56 | 170 | r = ucx_memread(rb+8, 1, 8, m); |
universe@56 | 171 | UCX_TEST_ASSERT(r == 8, "read did not read the specified amount of bytes"); |
universe@56 | 172 | UCX_TEST_ASSERT(memcmp(rb, "0123456788888888", 16) == 0, |
universe@56 | 173 | "buffer incorrect after second read"); |
universe@56 | 174 | |
universe@56 | 175 | ucx_memseek(m, 0, SEEK_SET); |
universe@56 | 176 | r = ucx_memread(rb, 3, 6, m); |
universe@56 | 177 | UCX_TEST_ASSERT(r == 15, |
universe@56 | 178 | "three byte read did not read the desired amount of bytes"); |
universe@56 | 179 | UCX_TEST_ASSERT(memcmp(rb, "8888888801234568", 16) == 0, |
universe@56 | 180 | "buffer incorrect after three byte read"); |
universe@56 | 181 | |
universe@56 | 182 | UCX_TEST_END |
universe@56 | 183 | |
universe@56 | 184 | ucx_memclose(m); |
universe@56 | 185 | free(buffer); |
universe@56 | 186 | } |