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, "") } } }