# Base class for test suites on a SAX reader.
abstract class SAXTestSuite
# Logger of the expected event sequence.
var expected = new SAXEventLogger
# Logger of the actual event sequence.
var actual = new SAXEventLogger
# The tested SAX reader.
var reader: XMLReader is noinit
private var init_done: Bool = false
fun before_test is before do
if not init_done then
reader = create_reader
actual.parent = reader
init_done = true
end
reader.feature("http://xml.org/sax/features/namespaces") = true
reader.feature("http://xml.org/sax/features/namespace-prefixes") = false
expected.clear_log
actual.clear_log
end
# Create a new SAX reader.
#
# This method is called at initialization to set `reader`.
fun create_reader: XMLReader is abstract
# Assert logs are equal.
fun assert_equals do
var diff = actual.diff(expected)
assert equals: diff.length <= 0 else
sys.stderr.write("\n")
sys.stderr.write("# {actual.term_deletion}< Actual{actual.term_default}\n")
sys.stderr.write("# {actual.term_insertion}> Expected{actual.term_default}\n")
sys.stderr.write(diff)
sys.stderr.write("\n")
end
end
# Make the reader parse the specified string
fun parse_string(str: String) do
actual.parse(new InputSource.with_stream(new StringReader(str)))
end
end
lib/saxophonit/testing.nit:532,1--580,3