import Testing
@testable import PureXML
@Suite("XSLT xsl:message")
struct XSLTMessageTests {
private let xsl = "xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\""
private func transform(_ stylesheet: String, _ source: String) throws -> String {
try PureXML.XSLT.transform(stylesheet: stylesheet, source: source)
}
@Test("A non-terminating message produces no output and does not abort")
func test_nonTerminating() throws {
let style = """
just a note
"""
#expect(try transform(style, "") == "")
}
@Test("terminate=yes aborts the transform, carrying the message text")
func test_terminate() throws {
let style = """
stop now
"""
var thrown: PureXML.XSLT.XSLTError?
do {
_ = try transform(style, "")
} catch let error as PureXML.XSLT.XSLTError {
thrown = error
}
#expect(thrown == .terminated("stop now"))
}
@Test("A terminating message can interpolate the source via value-of")
func test_terminateDynamic() throws {
let style = """
bad value:
"""
#expect(throws: PureXML.XSLT.XSLTError.terminated("bad value: 7")) {
_ = try transform(style, "")
}
}
}