#include #include #include "elf.h" gchar* tests[] = { /* Newlines */ #if 0 "FILE name=\"val\n\0ue\"\n", NULL, #endif "\0", "FILE", "FILE\n", "FILE\nFILE", "FILE\nFILE\n", "\n\n", " FILE\nFI\n", "FILE\n= = = \n", "FILE\n= \"= = \n", "FILE\n\"= \"= = \n", "FILE\n\"=\" \"=\\\" = \n", /* Quotes and spacing */ "FILE name=\"", "FILE name=\"\"", "FILE name=\" ", "FILE name=\"value\"", "FILE name=value\"", "FILE name=\"value", "FILE name=value", "FILE name =\"value\"", "FILE name =value\"", "FILE name =\"value", "FILE name =value", "FILE name= \"value\"", "FILE name= value\"", "FILE name= \"value", "FILE name= value", "FILE name = \"value\"", "FILE name = value\"", "FILE name = \"value", "FILE name = value", /* EOF's */ "FILE name=\"va\0lue\"", "FILE name=va\0lue\"", "FILE name=\"va\0lue", "FILE name=val\0ue", /* Newlines */ "FILE name=\"val\nue\"", "FILE name=v\nalue\"", "FILE name=\"val\nue", "FILE name=va\nlue", /* Quotes and multiple lines */ "FILE name=\"\nFILE", "FILE name=\"\"\nFILE", "FILE name=\" \nFILE", "FILE name=\"\nFILE\n", "FILE name=\"\"\nFILE\n", "FILE name=\" \nFILE\n", /* ******************** */ /* Two attributes */ "FILE name2=\"value\" name=\"value\"", "FILE name2=\"value\" name=value\"", "FILE name2=\"value\" name=\"value", "FILE name2=\"value\" name=value", "FILE name2=\"value\" name =\"value\"", "FILE name2= \"value\" name =value\"", "FILE name2 = \"value\" name =\"value", "FILE name2 = \"value\" name =value", "FILE name2=value name= \"value\"", "FILE name2=\"value name= value\"", "FILE name2=value\" name= \"value", "FILE name2=\"value\" name= value", /* Two attributes and two nodes */ "FILE name2=\"value\" name=\"value\"" "\n" "FILE name2=\"value\" name=\"value\"", "FILE name2=\"value\" name=value\"" "\n" "FILE name2=\"value\" name=\"value\"", "FILE name2=\"value\" name=\"value" "\n" "FILE name2=\"value\" name=\"value\"", "FILE name2=\"value\" name=value" "\n" "FILE name2=\"value\" name=\"value\"", "FILE name2=\"value\" name=\"value\"" "\n" "FILE name2=\"value\" name=value\"", "FILE name2=\"value\" name=value\"" "\n" "FILE name2=\"value\" name=value\"", "FILE name2=\"value\" name=\"value" "\n" "FILE name2=\"value\" name=value\"", "FILE name2=\"value\" name=value" "\n" "FILE name2=\"value\" name=value\"", "FILE name2=\"value\" name=\"value\"" "\n" "FILE name2=\"value\" name=\"value", "FILE name2=\"value\" name=value\"" "\n" "FILE name2=\"value\" name=\"value", "FILE name2=\"value\" name=\"value" "\n" "FILE name2=\"value\" name=\"value", "FILE name2=\"value\" name=value" "\n" "FILE name2=\"value\" name=\"value", "FILE name2=\"value\" name=\"value\"" "\n" "FILE name2=\"value\" name=value", "FILE name2=\"value\" name=value\"" "\n" "FILE name2=\"value\" name=value", "FILE name2=\"value\" name=\"value" "\n" "FILE name2=\"value\" name=value", "FILE name2=\"value\" name=value" "\n" "FILE name2=\"value\" name=value", /* Two attributes and two nodes with early EOF's */ "FILE name2=\"value\" name=\"value\"" "\n" "FILE name2=\"val\0ue\" name=\"value\"", "FILE name2=\"value\" name=value\"" "\n" "FILE name2=\"val\0ue\" name=\"value\"", "FILE name2=\"value\" name=\"value" "\n" "FILE name2=\"val\0ue\" name=\"value\"", "FILE name2=\"value\" name=value" "\n" "FILE name2=\"val\0ue\" name=\"value\"", "FILE name2=\"value\" name=\"value\"" "\n" "FILE name2=\"val\0ue\" name=value\"", "FILE name2=\"value\" name=value\"" "\n" "FILE name2=\"val\0ue\" name=value\"", "FILE name2=\"value\" name=\"value" "\n" "FILE name2=\"val\0ue\" name=value\"", "FILE name2=\"value\" name=value" "\n" "FILE name2=\"val\0ue\" name=value\"", "FILE name2=\"value\" name=\"value\"" "\n" "FILE name2=\"val\0ue\" name=\"value", "FILE name2=\"value\" name=value\"" "\n" "FILE name2=\"val\0ue\" name=\"value", "FILE name2=\"value\" name=\"value" "\n" "FILE name2=\"val\0ue\" name=\"value", "FILE name2=\"value\" name=value" "\n" "FILE name2=\"val\0ue\" name=\"value", "FILE name2=\"value\" name=\"value\"" "\n" "FILE name2=\"val\0ue\" name=value", "FILE name2=\"value\" name=value\"" "\n" "FILE name2=\"val\0ue\" name=value", "FILE name2=\"value\" name=\"value" "\n" "FILE name2=\"val\0ue\" name=value", "FILE name2=\"value\" name=value" "\n" "FILE name2=\"val\0ue\" name=value", /* EOFs at various boundries */ "FILE\0", "FILE \0", "FILE name2\0", "FILE name2=\0", "FILE name2=\"\0", "FILE name2=\"value\0", "FILE name2=\"value\"\0", "FILE name2=\"value\" \0", "FILE name2=\"value\" nam\0", "FILE name2=\"value\" name\0", "FILE name2=\"value\" name \0", "FILE name2=\"value\" name =\0", "FILE name2=\"value\" name=\0", "FILE name2=\"value\" name=value\0", "FILE name2=\"value\" name=value \0", "FILE name2=\"value\" name=value \n\0", "FILE name2=\"value\" name=value name2\0", "FILE name2=\"value\" name=value name2 \0", "FILE name2=\"value\" name=value name2=\0", "FILE name2=\"value\" name=value name2 =\0", "FILE name2=\"value\" name=value name2 = \0", "FILE name2=\"value\" name=value name2=va\0", "FILE name2=\"value\" name=value name2=value \0", "FILE name2=\"value\" name=value name2=value\0", "FILE name2=\"value\" name=value" "\n" "FI\0", "FILE name2=\"value\" name=value" "\n" "FILE \0", "FILE name2=\"value\" name=value" "\n" "FILE name2\0", "FILE name2=\"value\" name=value" "\n" "FILE name2=\0", "FILE name2=\"value\" name=value" "\n" "FILE name2 =\0", "FILE name2=\"value\" name=value" "\n" "FILE name2 = \0", "FILE name2=\"value\" name=value" "\n" "FILE name2 = \"\0", "FILE name2=\"value\" name=value" "\n" "FILE name2=\"va\0", "FILE name2=\"value\" name=value" "\n" "FILE name2=\"value\0", "FILE name2=\"value\" name=value" "\n" "FILE name2=\"value\"\0", /* Quotes */ "FILE name2=\"va\\\"lue\"", "FILE name2=\"\\\"value\"", "FILE name2=\"value\\\"\"", "FILE name2=\"value\\\"", "FILE name2=va\\\"lue\"", "FILE name2=\\\"value\"", "FILE name2=value\" \\\"", NULL }; /** JMP tests */ int main() { int i; ElfNode* node; gchar* buffer; gint length; for (i = 0; tests[i] != NULL; ++i) { node = elf_read (tests[i], strlen(tests[i])); if (node) { elf_write (node, &buffer, &length); elf_delete (node); if (buffer) { /* g_print ("%d: length (%d)\n", i, length); */ /* fwrite (buffer, length, 1, stdout); */ node = elf_read (buffer, length); g_free (buffer); if (!node) exit (1); elf_delete (node); } } /* else */ /* g_print ("%d: Could not read\n", i); */ } for (i = 0; tests[i] != NULL; ++i) { node = elf_read (tests[i], strlen(tests[i])); if (node) { elf_write (node, &buffer, &length); elf_delete (node); if (buffer) { /* g_print ("%d: length (%d)\n", i, length); */ /* fwrite(buffer, length, 1, stdout); */ node = elf_read (buffer, length); g_free (buffer); if (!node) exit (1); elf_delete (node); } } /* else */ /* g_print ("%d: Could not read\n", i); */ } exit (0); }