[prettyprint] r588 committed - Add a basic test to keep track of language parse test cases.

0 views
Skip to first unread message

prett...@googlecode.com

unread,
Jul 8, 2010, 11:05:34 AM7/8/10
to pp-d...@googlegroups.com
Revision: 588
Author: thockin
Date: Thu Jul 8 08:05:06 2010
Log: Add a basic test to keep track of language parse test cases.

http://code.google.com/p/prettyprint/source/detail?r=588

Added:
/trunk/language/tests/parse_and_validate_test.cpp
Modified:
/trunk/language/Make.module
/trunk/language/environment.cpp
/trunk/language/environment.h

=======================================
--- /dev/null
+++ /trunk/language/tests/parse_and_validate_test.cpp Thu Jul 8 08:05:06
2010
@@ -0,0 +1,54 @@
+//FIXME: fix include paths
+#include "pp.h"
+#include "language/environment.h"
+#include "language/language.h"
+#include "language/parsed_file.h"
+#include "util/pipe_file.h"
+#include "util/test.h"
+
+static pp::language::Environment *env;
+static util::PipeFile *pipef;
+static const pp::language::ParsedFile *parsed_file;
+
+TEST_SETUP_EACH() {
+ delete env;
+ env = new pp::language::Environment();
+
+ delete pipef;
+ pipef = new util::PipeFile();
+ TEST_ASSERT(pipef->open() == true);
+
+ delete parsed_file;
+ parsed_file = NULL;
+}
+
+static void
+write_to_pipe(const string &str)
+{
+ size_t written = fwrite(str.data(), 1, str.size(),
pipef->get_write_file());
+ TEST_ASSERT(written == str.size());
+ pipef->close_write_file();
+}
+
+static int
+parse_and_validate(const string &str)
+{
+ write_to_pipe(str);
+ parsed_file = env->parse_file(pipef->get_read_file(), "pipe");
+ return env->validate(env->default_validate_options()
+ .set_warn_on_unresolved_symbols());
+}
+
+TEST(test_basic_definitions) {
+ TEST_ASSERT(parse_and_validate(
+ "bool b; \n"
+ "func f; \n"
+ "int i; \n"
+ "list<int> li; \n"
+ "string s; \n"
+ "tuple<int,string> tis; \n"
+ "var v; \n"
+ ) == 0);
+}
+
+// vim: set ai tabstop=4 shiftwidth=4 noexpandtab:
=======================================
--- /trunk/language/Make.module Thu Jun 24 07:46:16 2010
+++ /trunk/language/Make.module Thu Jul 8 08:05:06 2010
@@ -12,7 +12,8 @@

TESTS += language/tests/type_test \
language/tests/variable_test \
- language/tests/syntax_tree_test
+ language/tests/syntax_tree_test \
+ language/tests/language_test

language/language.o: language/auto.lex.h language/auto.yacc.h

@@ -33,4 +34,12 @@
language/language.o \
language/type.o \
language/variable.o
-
+language/tests/parse_and_validate_test: \
+ language/auto.lex.o \
+ language/auto.yacc.o \
+ language/environment.o \
+ language/language.o \
+ language/syntax_tree.o \
+ language/type.o \
+ language/variable.o
+
=======================================
--- /trunk/language/environment.cpp Tue Jul 6 21:00:55 2010
+++ /trunk/language/environment.cpp Thu Jul 8 08:05:06 2010
@@ -22,6 +22,12 @@
if (!file) {
return NULL;
}
+ return parse_file(file, name);
+}
+
+const ParsedFile *
+Environment::parse_file(FILE *file, const string &name)
+{
// RAII for file.
boost::shared_ptr<FILE> file_ptr(file, fclose);

=======================================
--- /trunk/language/environment.h Tue Jul 6 21:00:55 2010
+++ /trunk/language/environment.h Thu Jul 8 08:05:06 2010
@@ -88,6 +88,10 @@
// Returns NULL on failure.
const ParsedFile *
parse_file(const string &name);
+ // Parse an already opened file. The caller owns both the FILE pointer
+ // and the returned pointer. Returns NULL on failure.
+ const ParsedFile *
+ parse_file(FILE *file, const string &name);

// Validate all parsed files. Returns the number of warnings
// generated.

Reply all
Reply to author
Forward
0 new messages