@@ -1109,6 +1109,145 @@ void test_buddy_safe_free_invalid_free_07(void) {
1109
1109
free (buddy_buf_control );
1110
1110
}
1111
1111
1112
+ void test_buddy_alloc_size_coverage (void ) {
1113
+ unsigned char * buddy_buf = malloc (buddy_sizeof (4096 ));
1114
+ unsigned char data_buf [4096 ];
1115
+ struct buddy * buddy ;
1116
+ START_TEST ;
1117
+ buddy = buddy_init (buddy_buf , data_buf + 1024 , 1024 );
1118
+ assert (buddy != NULL );
1119
+ assert (buddy_alloc_size (NULL , NULL ) == 0 );
1120
+ assert (buddy_alloc_size (buddy , NULL ) == 0 );
1121
+ assert (buddy_alloc_size (buddy , data_buf ) == 0 );
1122
+ assert (buddy_alloc_size (buddy , data_buf + 2048 ) == 0 );
1123
+ assert (buddy_alloc_size (buddy , data_buf + 1024 ) == 0 );
1124
+ free (buddy_buf );
1125
+ }
1126
+
1127
+ void test_buddy_alloc_size_01 (void ) {
1128
+ unsigned char * buddy_buf = malloc (buddy_sizeof (4096 ));
1129
+ unsigned char data_buf [4096 ];
1130
+ struct buddy * buddy ;
1131
+ void * slot ;
1132
+ START_TEST ;
1133
+ buddy = buddy_init (buddy_buf , data_buf , 4096 );
1134
+ slot = buddy_malloc (buddy , 64 );
1135
+ assert (buddy_alloc_size (buddy , slot ) == 64 );
1136
+ buddy_free (buddy , slot );
1137
+ slot = buddy_malloc (buddy , 128 );
1138
+ assert (buddy_alloc_size (buddy , slot ) == 128 );
1139
+ buddy_free (buddy , slot );
1140
+ slot = buddy_malloc (buddy , 256 );
1141
+ assert (buddy_alloc_size (buddy , slot ) == 256 );
1142
+ buddy_free (buddy , slot );
1143
+ free (buddy_buf );
1144
+ }
1145
+
1146
+ void test_buddy_alloc_size_02 (void ) {
1147
+ unsigned char * buddy_buf = malloc (buddy_sizeof (4096 ));
1148
+ unsigned char data_buf [4096 ];
1149
+ struct buddy * buddy ;
1150
+ void * slot ;
1151
+ START_TEST ;
1152
+ buddy = buddy_init (buddy_buf , data_buf , 4096 );
1153
+ slot = buddy_malloc (buddy , 63 );
1154
+ assert (buddy_alloc_size (buddy , slot ) == 64 );
1155
+ buddy_free (buddy , slot );
1156
+ slot = buddy_malloc (buddy , 127 );
1157
+ assert (buddy_alloc_size (buddy , slot ) == 128 );
1158
+ buddy_free (buddy , slot );
1159
+ slot = buddy_malloc (buddy , 255 );
1160
+ assert (buddy_alloc_size (buddy , slot ) == 256 );
1161
+ buddy_free (buddy , slot );
1162
+ free (buddy_buf );
1163
+ }
1164
+
1165
+ void test_buddy_alloc_size_03 (void ) {
1166
+ unsigned char * buddy_buf = malloc (buddy_sizeof (4096 ));
1167
+ unsigned char data_buf [4096 ];
1168
+ struct buddy * buddy ;
1169
+ void * slot1 , * slot2 , * slot3 ;
1170
+ START_TEST ;
1171
+ buddy = buddy_init (buddy_buf , data_buf , 4096 );
1172
+ slot1 = buddy_malloc (buddy , 63 );
1173
+ slot2 = buddy_malloc (buddy , 127 );
1174
+ slot3 = buddy_malloc (buddy , 255 );
1175
+ assert (buddy_alloc_size (buddy , slot1 ) == 64 );
1176
+ assert (buddy_alloc_size (buddy , slot2 ) == 128 );
1177
+ assert (buddy_alloc_size (buddy , slot3 ) == 256 );
1178
+ buddy_free (buddy , slot1 );
1179
+ buddy_free (buddy , slot2 );
1180
+ buddy_free (buddy , slot3 );
1181
+ free (buddy_buf );
1182
+ }
1183
+
1184
+ void test_buddy_alloc_size_invalid_01 (void ) {
1185
+ unsigned char * buddy_buf = malloc (buddy_sizeof (4096 ));
1186
+ unsigned char data_buf [4096 ];
1187
+ struct buddy * buddy ;
1188
+ void * slot ;
1189
+ START_TEST ;
1190
+ buddy = buddy_init (buddy_buf , data_buf , 4096 );
1191
+ slot = buddy_malloc (buddy , 64 );
1192
+ assert (slot == data_buf );
1193
+ assert (buddy_alloc_size (buddy , (unsigned char * )slot - 1 ) == 0 );
1194
+ buddy_free (buddy , slot );
1195
+ free (buddy_buf );
1196
+ }
1197
+
1198
+ void test_buddy_alloc_size_invalid_02 (void ) {
1199
+ unsigned char * buddy_buf = malloc (buddy_sizeof (4096 ));
1200
+ unsigned char data_buf [4096 ];
1201
+ struct buddy * buddy ;
1202
+ void * slot ;
1203
+ START_TEST ;
1204
+ buddy = buddy_init (buddy_buf , data_buf , 4096 );
1205
+ slot = buddy_malloc (buddy , 64 );
1206
+ assert (slot == data_buf );
1207
+ assert (buddy_alloc_size (buddy , (unsigned char * )slot + 4096 ) == 0 );
1208
+ buddy_free (buddy , slot );
1209
+ free (buddy_buf );
1210
+ }
1211
+
1212
+ void test_buddy_alloc_size_invalid_03 (void ) {
1213
+ unsigned char * buddy_buf = malloc (buddy_sizeof (4096 ));
1214
+ unsigned char data_buf [4096 ];
1215
+ struct buddy * buddy ;
1216
+ void * slot ;
1217
+ START_TEST ;
1218
+ buddy = buddy_init (buddy_buf , data_buf , 4096 );
1219
+ slot = buddy_malloc (buddy , 64 );
1220
+ assert (buddy_alloc_size (buddy , (unsigned char * )slot + 1 ) == 0 );
1221
+ buddy_free (buddy , slot );
1222
+ free (buddy_buf );
1223
+ }
1224
+
1225
+ void test_buddy_alloc_size_invalid_04 (void ) {
1226
+ unsigned char * buddy_buf = malloc (buddy_sizeof (4096 ));
1227
+ unsigned char data_buf [4096 ];
1228
+ struct buddy * buddy ;
1229
+ void * slot ;
1230
+ START_TEST ;
1231
+ buddy = buddy_init (buddy_buf , data_buf , 4096 );
1232
+ slot = buddy_malloc (buddy , 64 );
1233
+ assert (buddy_alloc_size (buddy , (unsigned char * )slot + 4095 ) == 0 );
1234
+ buddy_free (buddy , slot );
1235
+ free (buddy_buf );
1236
+ }
1237
+
1238
+ void test_buddy_alloc_size_invalid_05 (void ) {
1239
+ unsigned char * buddy_buf = malloc (buddy_sizeof (4096 ));
1240
+ unsigned char data_buf [4096 ];
1241
+ struct buddy * buddy ;
1242
+ void * slot ;
1243
+ START_TEST ;
1244
+ buddy = buddy_init (buddy_buf , data_buf , 4096 );
1245
+ slot = buddy_malloc (buddy , 64 );
1246
+ buddy_free (buddy , slot );
1247
+ assert (buddy_alloc_size (buddy , slot ) == 0 );
1248
+ free (buddy_buf );
1249
+ }
1250
+
1112
1251
void test_buddy_demo (void ) {
1113
1252
size_t arena_size = 65536 ;
1114
1253
/* You need space for the metadata and for the arena */
@@ -2503,6 +2642,16 @@ int main(void) {
2503
2642
test_buddy_safe_free_invalid_free_06 ();
2504
2643
test_buddy_safe_free_invalid_free_07 ();
2505
2644
2645
+ test_buddy_alloc_size_coverage ();
2646
+ test_buddy_alloc_size_01 ();
2647
+ test_buddy_alloc_size_02 ();
2648
+ test_buddy_alloc_size_03 ();
2649
+ test_buddy_alloc_size_invalid_01 ();
2650
+ test_buddy_alloc_size_invalid_02 ();
2651
+ test_buddy_alloc_size_invalid_03 ();
2652
+ test_buddy_alloc_size_invalid_04 ();
2653
+ test_buddy_alloc_size_invalid_05 ();
2654
+
2506
2655
test_buddy_demo ();
2507
2656
test_buddy_demo_embedded ();
2508
2657
0 commit comments