what it says - whitespace stripping filter tests

This commit is contained in:
jez 2007-08-07 21:31:18 +00:00
parent 3d3fbaedce
commit cc374c5f8f
3 changed files with 181 additions and 72 deletions

View file

@ -7,27 +7,27 @@ AM_CPPFLAGS = -I$(top_srcdir)/include @PARSER_HEADERS@ $(BOOST_CPPFLAGS)
LIBARABICA = $(top_builddir)/src/libarabica.la
cppunit_sources = ../CppUnit/framework/CppUnitException.h \
../CppUnit/framework/estring.h \
../CppUnit/framework/Guards.h \
../CppUnit/framework/Test.h \
../CppUnit/framework/TestCaller.h \
../CppUnit/framework/TestCase.cpp \
../CppUnit/framework/TestCase.h \
../CppUnit/framework/TestFailure.cpp \
../CppUnit/framework/TestFailure.h \
../CppUnit/framework/TestResult.cpp \
../CppUnit/framework/TestResult.h \
../CppUnit/framework/TestSuite.cpp \
../CppUnit/framework/TestSuite.h \
../CppUnit/TestRunner.cpp \
../CppUnit/TestRunner.hpp \
../CppUnit/textui/TextTestResult.cpp \
../CppUnit/textui/TextTestResult.h
../CppUnit/framework/estring.h \
../CppUnit/framework/Guards.h \
../CppUnit/framework/Test.h \
../CppUnit/framework/TestCaller.h \
../CppUnit/framework/TestCase.cpp \
../CppUnit/framework/TestCase.h \
../CppUnit/framework/TestFailure.cpp \
../CppUnit/framework/TestFailure.h \
../CppUnit/framework/TestResult.cpp \
../CppUnit/framework/TestResult.h \
../CppUnit/framework/TestSuite.cpp \
../CppUnit/framework/TestSuite.h \
../CppUnit/TestRunner.cpp \
../CppUnit/TestRunner.hpp \
../CppUnit/textui/TextTestResult.cpp \
../CppUnit/textui/TextTestResult.h
test_sources =
filter_test_SOURCES = filter_test.cpp \
test_WhitespaceStripper \
$(cppunit_sources) \
$(test_sources)
filter_test_LDADD = $(LIBARABICA)

View file

@ -1,66 +1,23 @@
#ifdef _MSC_VER
#pragma warning(disable : 4786)
#pragma warning(disable: 4786 4250 4503)
#endif
#include <SAX/XMLReader.h>
#include <SAX/InputSource.h>
#include <SAX/filter/Writer.h>
#include <SAX/helpers/CatchErrorHandler.h>
#include <XML/XMLCharacterClasses.h>
#include <sstream>
#include "../CppUnit/TestRunner.hpp"
#include "../CppUnit/framework/Test.h"
#include "../CppUnit/framework/TestSuite.h"
#include <Utils/StringAdaptor.h>
#include "test_WhitespaceStripper.hpp"
#include <Utils/normalize_whitespace.hpp>
template<class string_type, class string_adaptor = Arabica::default_string_adaptor<string_type> >
class basic_WhitespaceStripper : public SAX::basic_XMLFilterImpl<string_type>
////////////////////////////////////////////////
int main(int argc, const char* argv[])
{
public:
typedef string_type stringT;
typedef SAX::basic_XMLFilterImpl<stringT> baseT;
TestRunner runner;
basic_WhitespaceStripper() { }
runner.addTest("WhitespaceStripperTest", WhitespaceStripper_test_suite<std::string, Arabica::default_string_adaptor<std::string> >());
virtual void characters(const stringT& ch)
{
baseT::characters(Arabica::string::normalize_whitespace<string_type, string_adaptor>(ch));
} // characters
runner.run(argc, argv);
virtual void ignorableWhitespace(const stringT& ch)
{
} // ignorableWhitespace
}; // class basic_WhitespaceStripper
int main(int argc, char* argv[])
{
std::cout << "tests go here" << std::endl;
std::ostringstream output;
std::ostringstream output2;
SAX::Writer writer2(output2, 0);
basic_WhitespaceStripper<std::string> stripper;
SAX::Writer writer(output, 2);
SAX::XMLReader<std::string> parser;
SAX::CatchErrorHandler<std::string> eh;
writer.setParent(parser);
writer.setErrorHandler(eh);
stripper.setParent(writer);
writer2.setParent(stripper);
writer2.setErrorHandler(eh);
std::stringstream ss;
ss << "<test><p> Woo baby hooray </p><!-- yea --></test>";
SAX::InputSource is(ss);
writer2.parse(is);
std::cout << "1: " << output.str() << std::endl;
std::cout << "2: " << output2.str() << std::endl;
return 5;
return 0;
} // main
// end of file

View file

@ -0,0 +1,152 @@
#ifndef ARABICA_TEST_WHITESPACE_STRIPPER_HPP
#define ARABICA_TEST_WHITESPACE_STRIPPER_HPP
#include <memory>
#include <sstream>
#include <iostream>
#include <SAX/XMLReader.h>
#include <SAX/InputSource.h>
#include <SAX/filter/WhitespaceStripperFilter.hpp>
#include <SAX/filter/PYXWriter.hpp>
#include "../CppUnit/framework/TestCase.h"
#include "../CppUnit/framework/TestSuite.h"
#include "../CppUnit/framework/TestCaller.h"
template<class string_type, class string_adaptor>
class WhitespaceStripperTest : public TestCase
{
typedef string_adaptor SA;
public:
WhitespaceStripperTest(std::string name) :
TestCase(name)
{
} // WhitespaceStripperTest
void setUp()
{
} // setUp
void testNoStrip()
{
std::ostringstream o;
SAX::XMLReader<std::string> parser;
SAX::PYXWriter<std::string> writer(o, parser);
writer.parse(*source("<test><p> Woo baby hooray </p></test>"));
assertEquals("(test\n(p\n- Woo baby hooray \n)p\n)test\n", o.str());
} // testNoStrip
void testStripLeading()
{
std::ostringstream o;
SAX::XMLReader<std::string> parser;
SAX::WhitespaceStripper<std::string> stripper(parser);
SAX::PYXWriter<std::string> writer(o, stripper);
writer.parse(*source("<test><p>Woo</p></test>"));
assertEquals("(test\n(p\n-Woo\n)p\n)test\n", o.str());
o.str("");
writer.parse(*source("<test><p> Woo</p></test>"));
assertEquals("(test\n(p\n-Woo\n)p\n)test\n", o.str());
o.str("");
writer.parse(*source("<test><p> Woo</p></test>"));
assertEquals("(test\n(p\n-Woo\n)p\n)test\n", o.str());
} // testStripLeading
void testStripTrailing()
{
std::ostringstream o;
SAX::XMLReader<std::string> parser;
SAX::WhitespaceStripper<std::string> stripper(parser);
SAX::PYXWriter<std::string> writer(o, stripper);
writer.parse(*source("<test><p>Woo</p></test>"));
assertEquals("(test\n(p\n-Woo\n)p\n)test\n", o.str());
o.str("");
writer.parse(*source("<test><p>Woo </p></test>"));
assertEquals("(test\n(p\n-Woo\n)p\n)test\n", o.str());
o.str("");
writer.parse(*source("<test><p>Woo </p></test>"));
assertEquals("(test\n(p\n-Woo\n)p\n)test\n", o.str());
} // testStripTrailing
void testStripMid()
{
std::ostringstream o;
SAX::XMLReader<std::string> parser;
SAX::WhitespaceStripper<std::string> stripper(parser);
SAX::PYXWriter<std::string> writer(o, stripper);
writer.parse(*source("<test><p>Woo yea</p></test>"));
assertEquals("(test\n(p\n-Woo yea\n)p\n)test\n", o.str());
o.str("");
writer.parse(*source("<test><p>Woo yea</p></test>"));
assertEquals("(test\n(p\n-Woo yea\n)p\n)test\n", o.str());
o.str("");
writer.parse(*source("<test><p>Woo yea</p></test>"));
assertEquals("(test\n(p\n-Woo yea\n)p\n)test\n", o.str());
} // testStripMid
void testStripMid2()
{
std::ostringstream o;
SAX::XMLReader<std::string> parser;
SAX::WhitespaceStripper<std::string> stripper(parser);
SAX::PYXWriter<std::string> writer(o, stripper);
writer.parse(*source("<test><p>Woo yea man</p></test>"));
assertEquals("(test\n(p\n-Woo yea man\n)p\n)test\n", o.str());
o.str("");
writer.parse(*source("<test><p>Woo yea man</p></test>"));
assertEquals("(test\n(p\n-Woo yea man\n)p\n)test\n", o.str());
o.str("");
writer.parse(*source("<test><p>Woo yea man</p></test>"));
assertEquals("(test\n(p\n-Woo yea man\n)p\n)test\n", o.str());
o.str("");
writer.parse(*source("<test><p>Woo yea man</p></test>"));
assertEquals("(test\n(p\n-Woo yea man\n)p\n)test\n", o.str());
} // testStripMid2
void testStrip()
{
std::ostringstream o;
SAX::XMLReader<std::string> parser;
SAX::WhitespaceStripper<std::string> stripper(parser);
SAX::PYXWriter<std::string> writer(o, stripper);
writer.parse(*source("<test><p> Woo baby hooray </p><!-- yo mama --></test>"));
assertEquals("(test\n(p\n-Woo baby hooray\n)p\n)test\n", o.str());
} // testStrip
private:
std::auto_ptr<SAX::InputSource> source(const std::string& str)
{
std::auto_ptr<std::iostream> ss(new std::stringstream());
(*ss) << str;
return std::auto_ptr<SAX::InputSource>(new SAX::InputSource(ss));
} // source
}; // WhitespaceStripperTest
template<class string_type, class string_adaptor>
TestSuite* WhitespaceStripper_test_suite()
{
TestSuite *suiteOfTests = new TestSuite;
suiteOfTests->addTest(new TestCaller<WhitespaceStripperTest<string_type, string_adaptor> >("testNoStrip", &WhitespaceStripperTest<string_type, string_adaptor>::testNoStrip));
suiteOfTests->addTest(new TestCaller<WhitespaceStripperTest<string_type, string_adaptor> >("testStripLeading", &WhitespaceStripperTest<string_type, string_adaptor>::testStripLeading));
suiteOfTests->addTest(new TestCaller<WhitespaceStripperTest<string_type, string_adaptor> >("testStripTrailing", &WhitespaceStripperTest<string_type, string_adaptor>::testStripTrailing));
suiteOfTests->addTest(new TestCaller<WhitespaceStripperTest<string_type, string_adaptor> >("testStripMid", &WhitespaceStripperTest<string_type, string_adaptor>::testStripMid));
suiteOfTests->addTest(new TestCaller<WhitespaceStripperTest<string_type, string_adaptor> >("testStripMid2", &WhitespaceStripperTest<string_type, string_adaptor>::testStripMid2));
suiteOfTests->addTest(new TestCaller<WhitespaceStripperTest<string_type, string_adaptor> >("testStrip", &WhitespaceStripperTest<string_type, string_adaptor>::testStrip));
return suiteOfTests;
} // WhitespaceStripperTest_suite
#endif