[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