#include <stdio.h>
#include <unistd.h>
#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);
}
syntax highlighted by Code2HTML, v. 0.9.1