mirror of
https://github.com/jezhiggins/arabica
synced 2025-01-17 18:12:04 +01:00
what it says - whitespace stripping filter tests
This commit is contained in:
parent
3d3fbaedce
commit
cc374c5f8f
3 changed files with 181 additions and 72 deletions
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
152
tests/SAX/test_WhitespaceStripper.hpp
Normal file
152
tests/SAX/test_WhitespaceStripper.hpp
Normal 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
|
||||
|
Loading…
Reference in a new issue