Property definitions

saxophonit $ SAXTestSuite :: defaultinit
# 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