[med-svn] [libgtextutils] 31/83: Added tests to TextLineReader and InputStreamWrapper.

Charles Plessy plessy at moszumanska.debian.org
Wed Jan 8 13:37:27 UTC 2014


This is an automated email from the git hooks/post-receive script.

plessy pushed a commit to branch debian/unstable
in repository libgtextutils.

commit 187e4f2457eab40ea1658ea777616b5fe71953a4
Author: A. Gordon <gordon at cshl.edu>
Date:   Wed Mar 25 19:56:34 2009 -0400

    Added tests to TextLineReader and InputStreamWrapper.
---
 tests/Makefile.am                   | 11 ++++-
 tests/test_input_stream_wrapper.cpp | 49 +++++++++++++++++++++
 tests/test_text_reader.cpp          | 73 ++++++++++++++++++++++++++++++
 tests/test_text_reader_unget.cpp    | 88 +++++++++++++++++++++++++++++++++++++
 4 files changed, 220 insertions(+), 1 deletion(-)

diff --git a/tests/Makefile.am b/tests/Makefile.am
index 61876a5..7e31520 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -9,9 +9,14 @@
 # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 
+noinst_DATA = test.txt
+
 
 check_PROGRAMS = test_container_join \
-		 test_natural_sort
+		 test_natural_sort \
+		 test_input_stream_wrapper \
+		 test_text_reader \
+		 test_text_reader_unget
 
 TESTS = $(check_PROGRAMS)
 
@@ -20,3 +25,7 @@ INCLUDES = -I$(top_srcdir)/src
 
 test_container_join_SOURCES = test_container_join.cpp
 test_natural_sort_SOURCES = test_natural_sort.cpp
+test_input_stream_wrapper_SOURCES = test_input_stream_wrapper.cpp
+test_text_reader_SOURCES = test_text_reader.cpp
+test_text_reader_unget_SOURCES = test_text_reader_unget.cpp
+
diff --git a/tests/test_input_stream_wrapper.cpp b/tests/test_input_stream_wrapper.cpp
new file mode 100644
index 0000000..72dc6ba
--- /dev/null
+++ b/tests/test_input_stream_wrapper.cpp
@@ -0,0 +1,49 @@
+/*
+   Gordon's Text-Utilities Library
+   Copyright (C) 2009 Assaf Gordon (gordon at cshl.edu)
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU Affero General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   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 Affero General Public License for more details.
+
+   You should have received a copy of the GNU Affero General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>
+*/
+#include <err.h>
+#include <iostream>
+#include <string>
+#include <gtextutils/stream_wrapper.h>
+#include "tests_assertion.h"
+
+/*
+ * Simple unit test - InputStreamWrapper
+ *
+ * Read the first word out of a test file (whose content we know),
+ */
+
+using namespace std;
+
+int main()
+{
+	//The object will create a 'ifstream' file with this file,
+	//or exit if there was an error
+	InputStreamWrapper input("test.txt");
+
+	// InputStreamWrapper can be used as 'istream&'
+	// with it's conversion operator
+	istream& is ( input ) ;
+
+	std::string s;
+
+	is >> s ;
+
+	ASSERT ( s == "first" ) ;
+
+	return 0;
+}
diff --git a/tests/test_text_reader.cpp b/tests/test_text_reader.cpp
new file mode 100644
index 0000000..f40a44b
--- /dev/null
+++ b/tests/test_text_reader.cpp
@@ -0,0 +1,73 @@
+/*
+   Gordon's Text-Utilities Library
+   Copyright (C) 2009 Assaf Gordon (gordon at cshl.edu)
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU Affero General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   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 Affero General Public License for more details.
+
+   You should have received a copy of the GNU Affero General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>
+*/
+#include <err.h>
+#include <iostream>
+#include <string>
+
+#include <gtextutils/stream_wrapper.h>
+#include <gtextutils/text_line_reader.h>
+
+#include "tests_assertion.h"
+
+/*
+ * Testing the TextLineReader class
+ *
+ * Read four lines from a known file,
+ * using different methods
+ */
+
+using namespace std;
+
+int main()
+{
+	InputStreamWrapper input("test.txt");
+	TextLineReader reader ( input.stream() );
+
+	string line ;
+
+	ASSERT ( reader.next_line() );
+	line = reader.line_string() ; //first line - with explicit method to get the string
+	ASSERT( line == "first line" ) ;
+
+	ASSERT ( reader.next_line() );
+	line = reader ; //second line - with implicit conversion to std::string
+	ASSERT( line == "second line" ) ;
+
+	ASSERT ( reader.next_line() );
+	istream &is1 ( reader.line_stream() ); //third line - with explicit method to get the istream
+	is1 >> line ; // read each word from the line
+	ASSERT( line == "third" ) ;
+	is1 >> line ;
+	ASSERT ( line == "line" ) ;
+	is1 >> line ; // read past the end of the line - this should fail (and not read the next word from the next line, as it would have happened with a normal istream;
+	ASSERT ( ! is1 ) ;
+
+	ASSERT ( reader.next_line() );
+	istream &is2 ( reader ) ; // fourth line - with implicit conversion to std::istream
+	is2 >> line ;
+	ASSERT( line == "fourth" ) ;
+	is2 >> line ;
+	ASSERT( line == "line" ) ;
+	is1 >> line ; // read past the end of the line - this should fail (and not read the next word from the next line
+	ASSERT ( !is2 ) ;
+
+
+	//read past the end of the file - make sure it fails.
+	ASSERT ( !reader.next_line() ) ;
+	return 0;
+}
diff --git a/tests/test_text_reader_unget.cpp b/tests/test_text_reader_unget.cpp
new file mode 100644
index 0000000..a23f8a8
--- /dev/null
+++ b/tests/test_text_reader_unget.cpp
@@ -0,0 +1,88 @@
+/*
+   Gordon's Text-Utilities Library
+   Copyright (C) 2009 Assaf Gordon (gordon at cshl.edu)
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU Affero General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   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 Affero General Public License for more details.
+
+   You should have received a copy of the GNU Affero General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>
+*/
+#include <err.h>
+#include <iostream>
+#include <string>
+
+#include <gtextutils/stream_wrapper.h>
+#include <gtextutils/text_line_reader.h>
+
+#include "tests_assertion.h"
+
+using namespace std;
+
+int main()
+{
+	InputStreamWrapper input("test.txt");
+	TextLineReader reader ( input.stream() );
+
+	string line ;
+
+	//Read first line
+	ASSERT ( reader.next_line() );
+	line = reader; 
+	ASSERT( line == "first line" ) ;
+
+	//Unget the current line -
+	//The next call to 'reader.next_line' should return this SAME line
+	//instead of actually reading the next line from the file.
+	reader.unget_current_line();
+
+	//Read the next line -
+	//but because of the 'unget' it should still return the first line
+	ASSERT ( reader.next_line() ) ;
+	line = reader ;
+	ASSERT( line == "first line" ) ;
+	ASSERT ( reader.line_number() == 1 ) ; //we should still be on line 1
+
+
+	//Read the next line - 
+	//This should be the real second line from the file.
+	ASSERT ( reader.next_line() ) ;
+	line = reader;
+	ASSERT ( line == "second line" );
+	ASSERT ( reader.line_number() == 2 ) ;
+
+	//Test multiple consecutive ungets
+	for ( int i=0 ; i < 10; ++i ) {
+		reader.unget_current_line();
+
+		ASSERT ( reader.next_line() ) ;
+		line = reader;
+		ASSERT ( line == "second line" );
+		ASSERT ( reader.line_number() == 2 ) ;
+	}
+
+	//Read the next line - 
+	//This should be the real third line from the file.
+	ASSERT ( reader.next_line() ) ;
+	line = reader;
+	ASSERT ( line == "third line" );
+	ASSERT ( reader.line_number() == 3 ) ;
+
+	//Unget a custom line string
+	reader.unget_line("hello world");
+
+
+	//Read the next line - this should return the ungot text ("hello world")
+	ASSERT ( reader.next_line() ) ;
+	line = reader;
+	ASSERT ( line == "hello world" );
+
+	return 0;
+}

-- 
Alioth's /git/debian-med/git-commit-notice on /srv/git.debian.org/git/debian-med/libgtextutils.git



More information about the debian-med-commit mailing list