aboutsummaryrefslogtreecommitdiff
path: root/lib/mlibc/tests/ansi/sscanf.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mlibc/tests/ansi/sscanf.c')
-rw-r--r--lib/mlibc/tests/ansi/sscanf.c143
1 files changed, 0 insertions, 143 deletions
diff --git a/lib/mlibc/tests/ansi/sscanf.c b/lib/mlibc/tests/ansi/sscanf.c
deleted file mode 100644
index f3a881f..0000000
--- a/lib/mlibc/tests/ansi/sscanf.c
+++ /dev/null
@@ -1,143 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-
-struct format_test_cases {
- const char *format;
- const char *data;
- int expected_int;
- enum {
- T_INT,
- T_UINT,
- T_CHAR,
- T_NONE,
- } type;
- int ret;
-} formats[] = {
- {"%i", "0x420", 0x420, T_INT, 1},
- {"%i", "0420", 0420, T_INT, 1},
- {"%i", "420", 420, T_INT, 1},
- {"%i", "-420", -420, T_INT, 1},
- {"%d", "-12345", -12345, T_INT, 1},
- {"%u", "69", 69, T_UINT, 1},
- {"%u", "0420", 420, T_UINT, 1},
- {"%o", "0420", 0420, T_UINT, 1},
- {"%x", "0xCB7", 0xCB7, T_UINT, 1},
- {"%%", "%", 0, T_NONE, 0},
- {"%c", " I am not a fan of this solution.", ' ', T_CHAR, 1},
- {" %c", " CBT (capybara therapy)", 'C', T_CHAR, 1},
-};
-
-#pragma GCC diagnostic ignored "-Wformat-security"
-
-static void test_matrix() {
- for(size_t i = 0; i < (sizeof(formats) / sizeof(*formats)); i++) {
- struct format_test_cases *f = &formats[i];
- int ret = -1;
- int data_int;
- unsigned int data_uint;
- char data_char;
-
- switch(f->type) {
- case T_INT: {
- ret = sscanf(f->data, f->format, &data_int);
- assert(data_int == f->expected_int);
- break;
- }
- case T_UINT: {
- ret = sscanf(f->data, f->format, &data_uint);
- assert(data_uint == (unsigned int) f->expected_int);
- break;
- }
- case T_CHAR: {
- ret = sscanf(f->data, f->format, &data_char);
- assert(data_char == (unsigned char) f->expected_int);
- break;
- }
- case T_NONE: {
- ret = sscanf(f->data, f->format);
- break;
- }
-
- }
-
- assert(ret == f->ret);
- }
-}
-
-int main() {
- {
- int x = 0;
- char buf[] = "12345";
- sscanf(buf, "%d", &x);
- assert(x == 12345);
- }
-
- {
- char c;
- int n1;
- int n2;
- char buf[] = "z$ 7 5 440";;
- int count = sscanf(buf, "%*c%c %d %*d %d", &c, &n1, &n2);
- assert(count == 3);
- assert(c == '$');
- assert(n1 == 7);
- assert(n2 == 440);
- }
-
- {
- // From dsda-doom
- char buf[] = "process_priority 0\n";
- char def[80], strparm[128];
- memset(def, '!', 80);
- memset(strparm, '!', 128);
- sscanf(buf, "%s %[^\n]\n", def, strparm);
- assert(!strcmp(def, "process_priority"));
- assert(!strcmp(strparm, "0"));
- }
-
- {
- char buf[] = "fffff100";
- unsigned long y = 0;
- sscanf(buf, "%lx", &y);
- assert(y == 0xfffff100);
- }
-
-#if !defined(__i386__)
- {
- char buf[] = "fffffffff100";
- unsigned long y = 0;
- sscanf(buf, "%lx", &y);
- assert(y == 0xfffffffff100);
- }
-#endif
-
- {
- char buf[] = "410dc000";
- unsigned long y = 0;
- sscanf(buf, "%lx", &y);
- assert(y == 0x410dc000);
- }
-
- {
- // From webkitgtk
- char buf[] = "MemTotal: 16299664 kB\n";
- char token[51] = {0};
- size_t amount = 0;
- int ret = sscanf(buf, "%50s%zukB", token, &amount);
- assert(ret == 2);
- assert(!strcmp(token, "MemTotal:"));
- assert(amount == 16299664);
- }
-
- {
- char buf[] = "SIGINT";
- int sig;
- int ret = sscanf(buf, "%d", &sig);
- assert(!ret);
- }
-
- test_matrix();
-
- return 0;
-}