diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/.gitignore | 4 | ||||
| -rw-r--r-- | tests/CMakeLists.txt | 14 | ||||
| -rwxr-xr-x | tests/dumptest | 11 | ||||
| -rw-r--r-- | tests/dumptest.cc | 161 | ||||
| -rwxr-xr-x | tests/echotest | 9 | ||||
| -rw-r--r-- | tests/echotest.cc | 116 | 
6 files changed, 22 insertions, 293 deletions
| diff --git a/tests/.gitignore b/tests/.gitignore index 5033bd2..45b7144 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -15,8 +15,6 @@ out.png  /cgaltest  /csgtermtest  /csgtexttest -/dumptest -/echotest  /opencsgtest  /throwntogethertest  /cgalstlsanitytest @@ -25,4 +23,4 @@ out.png  /moduledumptest  /test_pretty_print  /sysinfo.txt -/CTestCustom.cmake
\ No newline at end of file +/CTestCustom.cmake diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 0a1efd3..cdaaeaf 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -522,18 +522,6 @@ add_library(tests-offscreen STATIC ${OFFSCREEN_SOURCES})  set(TESTS-NOCGAL-LIBRARIES ${TESTS-CORE-LIBRARIES})  # -# echotest -# -add_executable(echotest echotest.cc) -target_link_libraries(echotest tests-nocgal ${TESTS-NOCGAL-LIBRARIES}) - -# -# dumptest -# -add_executable(dumptest dumptest.cc) -target_link_libraries(dumptest tests-nocgal ${TESTS-NOCGAL-LIBRARIES}) - -#  # moduledumptest  #  add_executable(moduledumptest moduledumptest.cc) @@ -929,7 +917,7 @@ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CTestCustom.cmake ${TMP})  # Add tests  add_cmdline_test(echotest SUFFIX txt FILES ${ECHO_FILES}) -add_cmdline_test(dumptest SUFFIX txt FILES ${DUMPTEST_FILES}) +add_cmdline_test(dumptest SUFFIX csg FILES ${DUMPTEST_FILES})  add_cmdline_test(moduledumptest SUFFIX txt FILES                   ${CMAKE_SOURCE_DIR}/../testdata/scad/minimal/allmodules.scad                   ${CMAKE_SOURCE_DIR}/../testdata/scad/minimal/allfunctions.scad diff --git a/tests/dumptest b/tests/dumptest new file mode 100755 index 0000000..180fa1b --- /dev/null +++ b/tests/dumptest @@ -0,0 +1,11 @@ +#!/bin/sh + +openscad $1 -o $2 + +sed 's/, timestamp = [0-9]*//' -i $2 + +sed 's/-nan/nan/g' -i $2 + +sed 's/-\(0[],)]\)/\1/g' -i $2 + +sed 's/-\?[0-9].[0-9]*e-[0-9]\{2,\}/0/g' -i $2 diff --git a/tests/dumptest.cc b/tests/dumptest.cc deleted file mode 100644 index 4477703..0000000 --- a/tests/dumptest.cc +++ /dev/null @@ -1,161 +0,0 @@ -/* - *  OpenSCAD (www.openscad.org) - *  Copyright (C) 2009-2011 Clifford Wolf <clifford@clifford.at> and - *                          Marius Kintel <marius@kintel.net> - * - *  This program is free software; you can redistribute it and/or modify - *  it under the terms of the GNU General Public License as published by - *  the Free Software Foundation; either version 2 of the License, or - *  (at your option) any later version. - * - *  As a special exception, you have permission to link this program - *  with the CGAL library and distribute executables, as long as you - *  follow the requirements of the GNU GPL in regard to all of the - *  software in the executable aside from CGAL. - * - *  This program is distributed in the hope that it will be useful, - *  but WITHOUT ANY WARRANTY; without even the implied warranty of - *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - *  GNU General Public License for more details. - * - *  You should have received a copy of the GNU General Public License - *  along with this program; if not, write to the Free Software - *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA - * - */ - -#include "tests-common.h" -#include "openscad.h" -#include "parsersettings.h" -#include "node.h" -#include "module.h" -#include "modcontext.h" -#include "value.h" -#include "export.h" -#include "builtin.h" -#include "Tree.h" - -#ifndef _MSC_VER -#include <getopt.h> -#endif -#include <assert.h> -#include <iostream> -#include <sstream> -#include <fstream> - -#include <boost/filesystem.hpp> -namespace fs = boost::filesystem; -#include "boosty.h" - -std::string commandline_commands; -std::string currentdir; - -using std::string; - -string dumptree(const Tree &tree, const AbstractNode &node) -{ -	std::stringstream str; -	const std::vector<AbstractNode*> &children = node.getChildren(); -	for (std::vector<AbstractNode*>::const_iterator iter = children.begin(); iter != children.end(); iter++) { -		str << tree.getString(**iter) << "\n"; -	} -	return str.str(); -} - -int main(int argc, char **argv) -{ -#ifdef _MSC_VER -  _set_output_format(_TWO_DIGIT_EXPONENT); -#endif -	if (argc != 3) { -		fprintf(stderr, "Usage: %s <file.scad> <output.txt>\n", argv[0]); -		exit(1); -	} - -	const char *filename = argv[1]; -	const char *outfilename = argv[2]; -	int rc = 0; - -	Builtins::instance()->initialize(); - -	fs::path original_path = fs::current_path(); - -	currentdir = boosty::stringy(fs::current_path()); - -	parser_init(boosty::stringy(fs::path(argv[0]).branch_path())); -	add_librarydir(boosty::stringy(fs::path(argv[0]).branch_path() / "../libraries")); - -	ModuleContext top_ctx; -	top_ctx.registerBuiltin(); - -	FileModule *root_module; -	ModuleInstantiation root_inst("group"); -	AbstractNode *root_node; - -	root_module = parsefile(filename); -	if (!root_module) { -		exit(1); -	} - -	fs::path fpath = boosty::absolute(fs::path(filename)); -	fs::path fparent = fpath.parent_path(); -	fs::current_path(fparent); -	top_ctx.setDocumentPath(fparent.string()); - -	AbstractNode::resetIndexCounter(); -	root_node = root_module->instantiate(&top_ctx, &root_inst); - -	Tree tree; -	tree.setRoot(root_node); - -	string dumpstdstr = dumptree(tree, *root_node); -	string dumpstdstr_cached = dumptree(tree, *root_node); -	if (dumpstdstr != dumpstdstr_cached) { -		fprintf(stderr, "Error: Dump cached failed\n"); -		exit(1); -	} - -	fs::current_path(original_path); -	std::ofstream outfile; -	outfile.open(outfilename); -	if (!outfile.is_open()) { -		fprintf(stderr, "Error: Unable to open output file %s\n", outfilename); -		exit(1); -	} -	std::cout << "Opened " << outfilename << "\n"; -	outfile << dumpstdstr << "\n"; -	outfile.close(); -	if (outfile.fail()) fprintf(stderr, "Failed to close file\n"); - -	delete root_node; -	delete root_module; - -	fs::current_path(original_path); -	root_module = parsefile(outfilename, fparent.string().c_str()); -	if (!root_module) { -		fprintf(stderr, "Error: Unable to read back dumped file\n"); -		exit(1); -	} - -	AbstractNode::resetIndexCounter(); -	root_node = root_module->instantiate(&top_ctx, &root_inst); - -	tree.setRoot(root_node); - -	fs::current_path(fparent); - -	string readbackstr = dumptree(tree, *root_node); -	if (dumpstdstr != readbackstr) { -		fprintf(stderr, "Error: Readback is different from original dump:\n"); -		fprintf(stderr, "Original:\n%s", dumpstdstr.c_str()); -		fprintf(stderr, "Readback:\n%s", readbackstr.c_str()); -		exit(1); -	} - -	delete root_node; -	delete root_module; - -	Builtins::instance(true); - -	return rc; -} diff --git a/tests/echotest b/tests/echotest new file mode 100755 index 0000000..2ca520c --- /dev/null +++ b/tests/echotest @@ -0,0 +1,9 @@ +#!/bin/sh + +openscad $1 -o null 2> $2 + +sed 's/-nan/nan/g' -i $2 + +sed 's/-\(0[],)]\)/\1/g' -i $2 + +sed 's/-\?[0-9].[0-9]*e-[0-9]\{2,\}/0/g' -i $2 diff --git a/tests/echotest.cc b/tests/echotest.cc deleted file mode 100644 index 3051751..0000000 --- a/tests/echotest.cc +++ /dev/null @@ -1,116 +0,0 @@ -/* - *  OpenSCAD (www.openscad.org) - *  Copyright (C) 2009-2011 Clifford Wolf <clifford@clifford.at> and - *                          Marius Kintel <marius@kintel.net> - * - *  This program is free software; you can redistribute it and/or modify - *  it under the terms of the GNU General Public License as published by - *  the Free Software Foundation; either version 2 of the License, or - *  (at your option) any later version. - * - *  As a special exception, you have permission to link this program - *  with the CGAL library and distribute executables, as long as you - *  follow the requirements of the GNU GPL in regard to all of the - *  software in the executable aside from CGAL. - * - *  This program is distributed in the hope that it will be useful, - *  but WITHOUT ANY WARRANTY; without even the implied warranty of - *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - *  GNU General Public License for more details. - * - *  You should have received a copy of the GNU General Public License - *  along with this program; if not, write to the Free Software - *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA - * - */ - -#include "tests-common.h" -#include "openscad.h" -#include "parsersettings.h" -#include "node.h" -#include "module.h" -#include "modcontext.h" -#include "value.h" -#include "builtin.h" -#include "printutils.h" - -#ifndef _MSC_VER -#include <getopt.h> -#endif -#include <assert.h> -#include <iostream> -#include <sstream> -#include <fstream> - -#include <boost/filesystem.hpp> -namespace fs = boost::filesystem; -#include "boosty.h" - -std::string commandline_commands; -std::string currentdir; - -using std::string; - -static void outfile_handler(const std::string &msg, void *userdata) { -	std::ostream *str = static_cast<std::ostream*>(userdata); -	*str << msg << std::endl; -} - -int main(int argc, char **argv) -{ -#ifdef _MSC_VER -  _set_output_format(_TWO_DIGIT_EXPONENT); -#endif - -	if (argc != 3) { -		fprintf(stderr, "Usage: %s <file.scad> <output.txt>\n", argv[0]); -		exit(1); -	} - -	const char *filename = argv[1]; -	const char *outfile = argv[2]; - -	int rc = 0; - -	std::ofstream ofile(outfile); -	if (!ofile.good()) { -		std::cerr << "Unable to open output file\n"; -		return 0; -	} -	set_output_handler(&outfile_handler, &ofile); - -	Builtins::instance()->initialize(); - -	fs::path original_path = fs::current_path(); - -	currentdir = boosty::stringy( fs::current_path() ); - -	parser_init(boosty::stringy(fs::path(argv[0]).branch_path())); -	add_librarydir(boosty::stringy(fs::path(argv[0]).branch_path() / "../libraries")); - -	ModuleContext top_ctx; -	top_ctx.registerBuiltin(); - -	FileModule *root_module; -	ModuleInstantiation root_inst("group"); -	AbstractNode *root_node; - -	root_module = parsefile(filename); -	if (!root_module) { -		exit(1); -	} - -	if (fs::path(filename).has_parent_path()) { -		fs::current_path(fs::path(filename).parent_path()); -	} - -	AbstractNode::resetIndexCounter(); -	root_node = root_module->instantiate(&top_ctx, &root_inst); - -	delete root_node; -	delete root_module; - -	Builtins::instance(true); -	ofile.close(); -	return rc; -} | 
