Skip to content

Commit 8586afc

Browse files
Update test_input.c
1 parent 0116892 commit 8586afc

File tree

1 file changed

+123
-0
lines changed

1 file changed

+123
-0
lines changed

code/tests/cases/test_input.c

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,119 @@ FOSSIL_TEST_CASE(c_test_io_validate_is_length_invalid) {
208208
ASSUME_ITS_FALSE(result);
209209
}
210210

211+
FOSSIL_TEST_CASE(c_test_io_validate_read_secure_line_valid) {
212+
char input_data[] = "SecureInput";
213+
char buffer[256];
214+
size_t buffer_size = sizeof(buffer);
215+
216+
// Mocking user input
217+
FILE *input_stream = tmpfile();
218+
fwrite(input_data, 1, strlen(input_data), input_stream);
219+
rewind(input_stream);
220+
221+
int result = fossil_io_validate_read_secure_line(buffer, buffer_size);
222+
223+
ASSUME_ITS_TRUE(result);
224+
ASSUME_ITS_EQUAL_CSTR(input_data, buffer);
225+
fclose(input_stream);
226+
}
227+
228+
FOSSIL_TEST_CASE(c_test_io_validate_read_secure_line_invalid) {
229+
char buffer[10]; // Small buffer to test overflow handling
230+
size_t buffer_size = sizeof(buffer);
231+
232+
int result = fossil_io_validate_read_secure_line(buffer, buffer_size);
233+
234+
ASSUME_ITS_FALSE(result); // The function should fail due to insufficient buffer size
235+
}
236+
237+
FOSSIL_TEST_CASE(c_test_io_display_menu) {
238+
const char *choices[] = {"Choice 1", "Choice 2", "Choice 3"};
239+
int num_choices = 3;
240+
const char *prompt = "Please select an option:";
241+
242+
// Here, we will mock user input. Let's assume user selects choice 1 (index 0)
243+
int selected_choice = fossil_io_display_menu(prompt, choices, num_choices);
244+
245+
ASSUME_ITS_EQUAL_I32(0, selected_choice); // User should select the first choice
246+
}
247+
248+
FOSSIL_TEST_CASE(c_test_io_read_password_valid) {
249+
char buffer[256];
250+
size_t size = sizeof(buffer);
251+
252+
// Mock password input
253+
const char *password = "Password123";
254+
FILE *input_stream = tmpfile();
255+
fwrite(password, 1, strlen(password), input_stream);
256+
rewind(input_stream);
257+
258+
int result = fossil_io_read_password(buffer, size);
259+
260+
ASSUME_ITS_TRUE(result);
261+
ASSUME_ITS_EQUAL_CSTR(password, buffer);
262+
fclose(input_stream);
263+
}
264+
265+
FOSSIL_TEST_CASE(c_test_io_read_password_invalid) {
266+
char buffer[10]; // Small buffer to test overflow handling
267+
size_t size = sizeof(buffer);
268+
269+
int result = fossil_io_read_password(buffer, size);
270+
271+
ASSUME_ITS_FALSE(result); // Password input should fail due to small buffer size
272+
}
273+
274+
FOSSIL_TEST_CASE(c_test_io_read_multiline_input_valid) {
275+
char input_data[] = "This is line 1.\nThis is line 2.";
276+
char buffer[256];
277+
size_t size = sizeof(buffer);
278+
279+
// Mock multiline input
280+
FILE *input_stream = tmpfile();
281+
fwrite(input_data, 1, strlen(input_data), input_stream);
282+
rewind(input_stream);
283+
284+
int result = fossil_io_read_multiline_input(buffer, size);
285+
286+
ASSUME_ITS_TRUE(result);
287+
ASSUME_ITS_EQUAL_CSTR(input_data, buffer);
288+
fclose(input_stream);
289+
}
290+
291+
FOSSIL_TEST_CASE(c_test_io_read_multiline_input_invalid) {
292+
char buffer[10]; // Small buffer to test overflow handling
293+
size_t size = sizeof(buffer);
294+
295+
int result = fossil_io_read_multiline_input(buffer, size);
296+
297+
ASSUME_ITS_FALSE(result); // Multiline input should fail due to small buffer size
298+
}
299+
300+
FOSSIL_TEST_CASE(c_test_io_getch) {
301+
char input_char = 'A';
302+
303+
// Mock user input
304+
FILE *input_stream = tmpfile();
305+
fwrite(&input_char, 1, sizeof(input_char), input_stream);
306+
rewind(input_stream);
307+
308+
char result = fossil_io_getch();
309+
310+
ASSUME_ITS_EQUAL_CCHAR(input_char, result);
311+
fclose(input_stream);
312+
}
313+
314+
FOSSIL_TEST_CASE(c_test_io_show_progress) {
315+
// This test assumes the progress bar function doesn't return anything.
316+
// We'll just check that the progress is shown correctly.
317+
318+
// Test with various progress values (0%, 50%, 100%)
319+
fossil_io_show_progress(0);
320+
fossil_io_show_progress(50);
321+
fossil_io_show_progress(100);
322+
}
323+
211324
// * * * * * * * * * * * * * * * * * * * * * * * *
212325
// * Fossil Logic Test Pool
213326
// * * * * * * * * * * * * * * * * * * * * * * * *
@@ -231,5 +344,15 @@ FOSSIL_TEST_GROUP(c_input_tests) {
231344
FOSSIL_TEST_ADD(c_input_suite, c_test_io_validate_is_length_valid);
232345
FOSSIL_TEST_ADD(c_input_suite, c_test_io_validate_is_length_invalid);
233346

347+
FOSSIL_TEST_ADD(c_input_suite, c_test_io_validate_read_secure_line_valid);
348+
FOSSIL_TEST_ADD(c_input_suite, c_test_io_validate_read_secure_line_invalid);
349+
FOSSIL_TEST_ADD(c_input_suite, c_test_io_display_menu);
350+
FOSSIL_TEST_ADD(c_input_suite, c_test_io_read_password_valid);
351+
FOSSIL_TEST_ADD(c_input_suite, c_test_io_read_password_invalid);
352+
FOSSIL_TEST_ADD(c_input_suite, c_test_io_read_multiline_input_valid);
353+
FOSSIL_TEST_ADD(c_input_suite, c_test_io_read_multiline_input_invalid);
354+
FOSSIL_TEST_ADD(c_input_suite, c_test_io_getch);
355+
FOSSIL_TEST_ADD(c_input_suite, c_test_io_show_progress);
356+
234357
FOSSIL_TEST_REGISTER(c_input_suite);
235358
}

0 commit comments

Comments
 (0)