diff options
Diffstat (limited to 'server/src')
| -rw-r--r-- | server/src/Makefile.am | 34 | ||||
| -rw-r--r-- | server/src/macroheaderparser.cc | 106 | ||||
| -rw-r--r-- | server/src/templateheaderparser.cc | 106 | 
3 files changed, 235 insertions, 11 deletions
| diff --git a/server/src/Makefile.am b/server/src/Makefile.am index c8e1c51..2276347 100644 --- a/server/src/Makefile.am +++ b/server/src/Makefile.am @@ -106,6 +106,8 @@ EXTRA_DIST = \  ################  TESTFILES = \ +	test_templateheaderparser \ +	test_macroheaderparser \  	test_templatelist \  	test_saxparser \  	test_transactionparser \ @@ -139,6 +141,20 @@ test: $(TESTFILES)  test_clean:  	rm -f $(TESTFILES) $(TESTLOGS) +TEST_TEMPLATEHEADERPARSER_FILES = \ +	templateheaderparser.cc \ +	$(PARSERFILES) \ +	$(BASICFILES) +test_templateheaderparser: $(TEST_TEMPLATEHEADERPARSER_FILES) +	@../../tools/test $(TEST_TEMPLATEHEADERPARSER_FILES) $(BASICFLAGS) $(PARSERFLAGS) + +TEST_MACROHEADERPARSER_FILES = \ +	macroheaderparser.cc \ +	$(PARSERFILES) \ +	$(BASICFILES) +test_macroheaderparser: $(TEST_MACROHEADERPARSER_FILES) +	@../../tools/test $(TEST_MACROHEADERPARSER_FILES) $(BASICFLAGS) $(PARSERFLAGS) +  TEST_TEMPLATELIST_FILES = \  	templatelist.cc \  	versionstr.cc \ @@ -148,6 +164,15 @@ TEST_TEMPLATELIST_FILES = \  test_templatelist: $(TEST_TEMPLATELIST_FILES)  	@../../tools/test $(TEST_TEMPLATELIST_FILES) $(PARSERFLAGS) $(BASICFLAGS) +TEST_MACROLIST_FILES = \ +	macrolist.cc \ +	versionstr.cc \ +	macroheaderparser.cc \ +	$(PARSERFILES) \ +	$(BASICFILES) +test_macrolist: $(TEST_MACROLIST_FILES) +	@../../tools/test $(TEST_MACROLIST_FILES) $(PARSERFLAGS) $(BASICFLAGS) +  TEST_SAXPARSER_FILES = \  	saxparser.cc \  	$(BASICFILES) @@ -167,15 +192,6 @@ TEST_VERSIONSTR_FILES = \  test_versionstr: $(TEST_VERSIONSTR_FILES)  	@../../tools/test $(TEST_VERSIONSTR_FILES) $(BASICFLAGS) -TEST_MACROLIST_FILES = \ -	macrolist.cc \ -	versionstr.cc \ -	macroheaderparser.cc \ -	$(PARSERFILES) \ -	$(BASICFILES) -test_macrolist: $(TEST_MACROLIST_FILES) -	@../../tools/test $(TEST_MACROLIST_FILES) $(PARSERFLAGS) $(BASICFLAGS) -  TEST_QUERYHANDLERPENTOMINOS_FILES = \  	queryhandlerpentominos.cc \  	tcpsocket.cc \ diff --git a/server/src/macroheaderparser.cc b/server/src/macroheaderparser.cc index def80c3..6193e94 100644 --- a/server/src/macroheaderparser.cc +++ b/server/src/macroheaderparser.cc @@ -135,10 +135,114 @@ void MacroHeaderParser::parseError(char *buf, size_t len, std::string error, int      throw Exception(error + slineno);      free(slineno);    } -  }  Macro *MacroHeaderParser::getMacro()  {    return m;  } + +#ifdef TEST_MACROHEADERPARSER + +#define XMLFILE "/tmp/test_macroheaderparser.xml" + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <string.h> +#include <stdio.h> +#include <memory.h> + +static char xml[] = +"<?xml version='1.0' encoding='UTF-8'?>\n" +"<macro name=\"testmacro\" version=\"1.0\">\n" +" <sometag/>\n" +" <someothertag/>\n" +"</macro>" +; + +static char xml_nonmacro[] = +"<?xml version='1.0' encoding='UTF-8'?>\n" +"<dims name=\"testmacro\" version=\"1.0\">\n" +" <sometag/>\n" +" <someothertag/>\n" +"</dims>" +; + +static char xml_fail[] = +"<?xml version='1.0' encoding='UTF-8'?>\n" +"<macro name\"testmacro\" version=\"1.0\">\n" +" <sometag/>\n" +" <someothertag/>\n" +"</macro>" +; + +int main() +{ +  FILE *fp = fopen(XMLFILE, "w"); +  if(!fp) { +    printf("Could not write to %s\n", XMLFILE); +    return 1; +  } +  fprintf(fp, xml); +  fclose(fp); + +  { +    // Test parsing of correct macro xml data. +    MacroHeaderParser parser(XMLFILE); +    try { +      parser.parse(); +    } catch(Exception &e) { +      printf("Failed to parse: %s\n", e.what()); +      return 1; +    } +  }   + +  fp = fopen(XMLFILE, "w"); +  if(!fp) { +    printf("Could not write to %s\n", XMLFILE); +    return 1; +  } +  fprintf(fp, xml_nonmacro); +  fclose(fp); + +  // Test parsing of correct xml data, but not macro (should throw an exception). +  { +    MacroHeaderParser parser(XMLFILE); +    try { +      parser.parse(); +    } catch(Exception &e) { +      printf("Failed to parse: %s\n", e.what()); +      goto onandon; +    } +    return 1; +  } +  onandon: + +  fp = fopen(XMLFILE, "w"); +  if(!fp) { +    printf("Could not write to %s\n", XMLFILE); +    return 1; +  } +  fprintf(fp, xml_fail); +  fclose(fp); + +  // Test parsing of invalid xml data (should throw an exception). +  { +    MacroHeaderParser parser(XMLFILE); +    try { +      parser.parse(); +    } catch(Exception &e) { +      printf("Failed to parse: %s\n", e.what()); +      goto yetonandon; +    } +    return 1; +  } +  yetonandon: + +  unlink(XMLFILE); + +  return 0; +} + +#endif/*TEST_MACROHEADERPARSER*/ diff --git a/server/src/templateheaderparser.cc b/server/src/templateheaderparser.cc index 0b274ee..0a68a6a 100644 --- a/server/src/templateheaderparser.cc +++ b/server/src/templateheaderparser.cc @@ -135,10 +135,114 @@ void TemplateHeaderParser::parseError(char *buf, size_t len, std::string error,      throw Exception(error + slineno);      free(slineno);    } -  }  Template *TemplateHeaderParser::getTemplate()  {    return t;  } + +#ifdef TEST_TEMPLATEHEADERPARSER + +#define XMLFILE "/tmp/test_templateheaderparser.xml" + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <string.h> +#include <stdio.h> +#include <memory.h> + +static char xml[] = +"<?xml version='1.0' encoding='UTF-8'?>\n" +"<template name=\"testtemplate\" version=\"1.0\">\n" +" <sometag/>\n" +" <someothertag/>\n" +"</template>" +; + +static char xml_nontemplate[] = +"<?xml version='1.0' encoding='UTF-8'?>\n" +"<dims name=\"testtemplate\" version=\"1.0\">\n" +" <sometag/>\n" +" <someothertag/>\n" +"</dims>" +; + +static char xml_fail[] = +"<?xml version='1.0' encoding='UTF-8'?>\n" +"<template name\"testtemplate\" version=\"1.0\">\n" +" <sometag/>\n" +" <someothertag/>\n" +"</template>" +; + +int main() +{ +  FILE *fp = fopen(XMLFILE, "w"); +  if(!fp) { +    printf("Could not write to %s\n", XMLFILE); +    return 1; +  } +  fprintf(fp, xml); +  fclose(fp); + +  { +    // Test parsing of correct template xml data. +    TemplateHeaderParser parser(XMLFILE); +    try { +      parser.parse(); +    } catch(Exception &e) { +      printf("Failed to parse: %s\n", e.what()); +      return 1; +    } +  }   + +  fp = fopen(XMLFILE, "w"); +  if(!fp) { +    printf("Could not write to %s\n", XMLFILE); +    return 1; +  } +  fprintf(fp, xml_nontemplate); +  fclose(fp); + +  // Test parsing of correct xml data, but not template (should throw an exception). +  { +    TemplateHeaderParser parser(XMLFILE); +    try { +      parser.parse(); +    } catch(Exception &e) { +      printf("Failed to parse: %s\n", e.what()); +      goto onandon; +    } +    return 1; +  } +  onandon: + +  fp = fopen(XMLFILE, "w"); +  if(!fp) { +    printf("Could not write to %s\n", XMLFILE); +    return 1; +  } +  fprintf(fp, xml_fail); +  fclose(fp); + +  // Test parsing of invalid xml data (should throw an exception). +  { +    TemplateHeaderParser parser(XMLFILE); +    try { +      parser.parse(); +    } catch(Exception &e) { +      printf("Failed to parse: %s\n", e.what()); +      goto yetonandon; +    } +    return 1; +  } +  yetonandon: + +  unlink(XMLFILE); + +  return 0; +} + +#endif/*TEST_TEMPLATEHEADERPARSER*/ | 
