From bd556adb3fc35e6f405cc114408d2c557f9729ce Mon Sep 17 00:00:00 2001 From: Brian Hasenstab Date: Tue, 3 Sep 2024 16:28:57 -0400 Subject: [PATCH] Update tests --- .../EvergreenConverterTests.swift | 397 +++++++++--------- 1 file changed, 207 insertions(+), 190 deletions(-) diff --git a/Tests/EvergreenTests/EvergreenConverterTests.swift b/Tests/EvergreenTests/EvergreenConverterTests.swift index cf89067..ee5b2e8 100644 --- a/Tests/EvergreenTests/EvergreenConverterTests.swift +++ b/Tests/EvergreenTests/EvergreenConverterTests.swift @@ -2,209 +2,226 @@ import XCTest @testable import Evergreen final class EvergreenConverterTests: XCTestCase { - func testImageConverted() { - let imageElement = EvergreenElement(elementType: "img", src: "a_source", linkText: "alt_text", linkAlt: "title") - let converter = EvergreenConverter(elements: [imageElement]) - let result = converter.convert() - - XCTAssertEqual(result, "\"alt_text\"") - } + func testImageConverted() { + let imageElement = EvergreenElement(elementType: "img", src: "a_source", linkText: "alt_text", linkAlt: "title") + let converter = EvergreenConverter(elements: [imageElement]) + let result = converter.convert() - func testHorizontalRuleConverted() { - let horizontalRuleElement = EvergreenElement(elementType: "hr") - let converter = EvergreenConverter(elements: [horizontalRuleElement]) - let result = converter.convert() - - XCTAssertEqual(result, "
") - } + XCTAssertEqual(result, "\"alt_text\"") + } + + func testHorizontalRuleConverted() { + let horizontalRuleElement = EvergreenElement(elementType: "hr") + let converter = EvergreenConverter(elements: [horizontalRuleElement]) + let result = converter.convert() - func testParagraphConverted() { - let paragraphElement = EvergreenElement(elementType: "p", text: "A test") - let converter = EvergreenConverter(elements: [paragraphElement]) - var result = converter.convert() - - XCTAssertEqual(result, "

A test

") - - let paragraphWithIdentifiers = EvergreenElement(elementType: "p", text: "An id test") - paragraphWithIdentifiers.id = "test" - converter.updateElements(elements: [paragraphWithIdentifiers]) - result = converter.convert() - - XCTAssertEqual(result, "

An id test

") - - paragraphWithIdentifiers.classes = ["c1", "c2"] - converter.updateElements(elements: [paragraphWithIdentifiers]) - result = converter.convert() - - XCTAssertEqual(result, "

An id test

") - - paragraphWithIdentifiers.id = nil - converter.updateElements(elements: [paragraphWithIdentifiers]) - result = converter.convert() - - XCTAssertEqual(result, "

An id test

") - } + XCTAssertEqual(result, "
") + } + + func testParagraphConverted() { + let paragraphElement = EvergreenElement(elementType: "p", text: "A test") + let converter = EvergreenConverter(elements: [paragraphElement]) + var result = converter.convert() - func testHeaderConverted() { - let converter = EvergreenConverter(elements: []) - for i in 1...6 { - let headerElement = EvergreenElement(elementType: "h\(i)", text: "Header") - converter.elements = [headerElement] - let result = converter.convert() - - XCTAssertEqual(result, "Header") - } - } + XCTAssertEqual(result, "

A test

") - func testChildElementsConverted() { - let divElement = EvergreenElement(elementType: "div", divIdentifier: "DIV") - let paragraphElement = EvergreenElement(elementType: "p", text: "A test") - divElement.children = [paragraphElement] - let converter = EvergreenConverter(elements: [divElement]) - let result = converter.convert() - - XCTAssertEqual(result, "

A test

") - } + let paragraphWithIdentifiers = EvergreenElement(elementType: "p", text: "An id test") + paragraphWithIdentifiers.id = "test" + converter.updateElements(elements: [paragraphWithIdentifiers]) + result = converter.convert() - func testBreakElementConverted() { - let breakElement = EvergreenElement(elementType: "br") - let converter = EvergreenConverter(elements: [breakElement]) - let result = converter.convert() - - XCTAssertEqual(result, "
") - } + XCTAssertEqual(result, "

An id test

") - func testLinkElementConverted() { - let paragraphElement = EvergreenElement(elementType: "p", text: "A paragraph abcdef has at least zyxwvut links.") - let firstLinkElement = EvergreenElement(elementType: "a", src: "a-link-1", linkText: "that", linkAlt: "title 1") - firstLinkElement.identifier = "abcdef" - let secondLinkElement = EvergreenElement(elementType: "a", src: "a-link-2", linkText: "two", linkAlt: nil) - secondLinkElement.identifier = "zyxwvut" - paragraphElement.children = [firstLinkElement, secondLinkElement] - let converter = EvergreenConverter(elements: [paragraphElement]) - - let result = converter.convert() - - let expectedResult = "

A paragraph that has at least two links.

" - - XCTAssertEqual(result, expectedResult) - } + paragraphWithIdentifiers.classes = ["c1", "c2"] + converter.updateElements(elements: [paragraphWithIdentifiers]) + result = converter.convert() - func testOrderedListElementConverted() { - let listItemElement1 = EvergreenElement(elementType: "li", text: "Hello") - let listItemElement2 = EvergreenElement(elementType: "li", text: "World") - let orderedList = EvergreenElement(elementType: "ol") - orderedList.children = [listItemElement1, listItemElement2] - - let converter = EvergreenConverter(elements: [orderedList]) - - let result = converter.convert() - - let expectedResult = "
  1. Hello
  2. World
" - - XCTAssertEqual(result, expectedResult) - } + XCTAssertEqual(result, "

An id test

") - func testUnorderedListElementConverted() { - let listItem1 = EvergreenElement(elementType: "li", text: "Hello") - let listItem2 = EvergreenElement(elementType: "li", text: "World") - let unorderedList = EvergreenElement(elementType: "ul") - unorderedList.children = [listItem1, listItem2] - - let converter = EvergreenConverter(elements: [unorderedList]) - - let result = converter.convert() - - let expectedResult = "" - - XCTAssertEqual(result, expectedResult) - } + paragraphWithIdentifiers.id = nil + converter.updateElements(elements: [paragraphWithIdentifiers]) + result = converter.convert() - func testLinksInListItems() { - let linkItem = EvergreenElement(elementType: "a", src: "a-link", linkText: "here", linkAlt: "title-1") - linkItem.identifier = "abcdefg" - let listItem = EvergreenElement(elementType: "li", text: "A link abcdefg") - listItem.children = [linkItem] - let orderedList = EvergreenElement(elementType: "ol") - orderedList.children = [listItem] - - let converter = EvergreenConverter(elements: [orderedList]) - - let result = converter.convert() - - let expectedResult = "
  1. A link here
" - - XCTAssertEqual(result, expectedResult) + XCTAssertEqual(result, "

An id test

") + } + + func testHeaderConverted() { + let converter = EvergreenConverter(elements: []) + for i in 1...6 { + let headerElement = EvergreenElement(elementType: "h\(i)", text: "Header") + converter.elements = [headerElement] + let result = converter.convert() + + XCTAssertEqual(result, "Header") } + } + + func testChildElementsConverted() { + let divElement = EvergreenElement(elementType: "div", divIdentifier: "DIV") + let paragraphElement = EvergreenElement(elementType: "p", text: "A test") + divElement.children = [paragraphElement] + let converter = EvergreenConverter(elements: [divElement]) + let result = converter.convert() - func testBlockquoteElementConverted() { - let paragraphElement = EvergreenElement(elementType: "p", text: "A quote from a person") - let blockquoteElement = EvergreenElement(elementType: "blockquote") - blockquoteElement.children = [paragraphElement] - - let converter = EvergreenConverter(elements: [blockquoteElement]) - - let result = converter.convert() - - let expectedResult = "

A quote from a person

" - - XCTAssertEqual(result, expectedResult) - } + XCTAssertEqual(result, "

A test

") + } + + func testBreakElementConverted() { + let breakElement = EvergreenElement(elementType: "br") + let converter = EvergreenConverter(elements: [breakElement]) + let result = converter.convert() - func testTableElementConverted() { - let tableHeader = "|a|kitchen|table|{#id .class} {{#parent .parentClass}}" - let tableDashes = "|:---|:---:|---:|" - let tableData = "|in|the|bedroom|{#dataID .dataClass}" - - let processor = EvergreenProcessor(lines: [tableHeader, tableDashes, tableData]) - - let elements = processor.parse().content - - let converter = EvergreenConverter(elements: elements) - let result = converter.convert() - XCTAssertEqual(result, "
akitchentable
inthebedroom
") - } + XCTAssertEqual(result, "
") + } + + func testLinkElementConverted() { + let paragraphElement = EvergreenElement(elementType: "p", text: "A paragraph abcdef has at least zyxwvut links.") + let firstLinkElement = EvergreenElement(elementType: "a", src: "a-link-1", linkText: "that", linkAlt: "title 1") + firstLinkElement.identifier = "abcdef" + let secondLinkElement = EvergreenElement(elementType: "a", src: "a-link-2", linkText: "two", linkAlt: nil) + secondLinkElement.identifier = "zyxwvut" + paragraphElement.children = [firstLinkElement, secondLinkElement] + let converter = EvergreenConverter(elements: [paragraphElement]) - func testCodeConverted() { - let lines: Array = [ - "```", - "function hello() {", - " return \"Hello World!\"", - "}", - "```" - ]; - - let processor = EvergreenProcessor(lines: lines) - let elements = processor.parse().content - - let converter = EvergreenConverter(elements: elements) - let result = converter.convert() - XCTAssertEqual(result, "
function hello() {\n  return \"Hello World!\"\n}
") - } + let result = converter.convert() - func testHeaderIDs() { - let elements = [ - EvergreenElement(elementType: "h1", text: "Test 123!"), - EvergreenElement(elementType: "h1", text: "And S P A C E S. Period."), - EvergreenElement(elementType: "h2", text: "No ID") - ] - - let converter = EvergreenConverter(elements: elements) - let result = converter.convert(markHeaders: true) - XCTAssertEqual(result, "

Test 123!

\n

And S P A C E S. Period.

\n

No ID

") - } - - static var allTests = [ - ("testImageConverter", testImageConverted), - ("testHorizontalRuleConverter", testHorizontalRuleConverted), - ("testParagraphConverter", testParagraphConverted), - ("testHeaderConverter", testHeaderConverted), - ("testChildElementsConverter", testChildElementsConverted), - ("testBreakElementConverter", testBreakElementConverted), - ("testLinkElementConverter", testLinkElementConverted), - ("testOrderedListElementConverter", testOrderedListElementConverted), - ("testBlockquoteElementConverter", testBlockquoteElementConverted), - ("testCodeConverter", testCodeConverted), - ("testHeaderIDs", testHeaderIDs) + let expectedResult = "

A paragraph that has at least two links.

" + + XCTAssertEqual(result, expectedResult) + } + + func testOrderedListElementConverted() { + let listItemElement1 = EvergreenElement(elementType: "li", text: "Hello") + let listItemElement2 = EvergreenElement(elementType: "li", text: "World") + let orderedList = EvergreenElement(elementType: "ol") + orderedList.children = [listItemElement1, listItemElement2] + + let converter = EvergreenConverter(elements: [orderedList]) + + let result = converter.convert() + + let expectedResult = "
  1. Hello
  2. World
" + + XCTAssertEqual(result, expectedResult) + } + + func testUnorderedListElementConverted() { + let listItem1 = EvergreenElement(elementType: "li", text: "Hello") + let listItem2 = EvergreenElement(elementType: "li", text: "World") + let unorderedList = EvergreenElement(elementType: "ul") + unorderedList.children = [listItem1, listItem2] + + let converter = EvergreenConverter(elements: [unorderedList]) + + let result = converter.convert() + + let expectedResult = "" + + XCTAssertEqual(result, expectedResult) + } + + func testLinksInListItems() { + let linkItem = EvergreenElement(elementType: "a", src: "a-link", linkText: "here", linkAlt: "title-1") + linkItem.identifier = "abcdefg" + let listItem = EvergreenElement(elementType: "li", text: "A link abcdefg") + listItem.children = [linkItem] + let orderedList = EvergreenElement(elementType: "ol") + orderedList.children = [listItem] + + let converter = EvergreenConverter(elements: [orderedList]) + + let result = converter.convert() + + let expectedResult = "
  1. A link here
" + + XCTAssertEqual(result, expectedResult) + } + + func testBlockquoteElementConverted() { + let paragraphElement = EvergreenElement(elementType: "p", text: "A quote from a person") + let blockquoteElement = EvergreenElement(elementType: "blockquote") + blockquoteElement.children = [paragraphElement] + + let converter = EvergreenConverter(elements: [blockquoteElement]) + + let result = converter.convert() + + let expectedResult = "

A quote from a person

" + + XCTAssertEqual(result, expectedResult) + } + + func testTableElementConverted() { + let tableHeader = "|a|kitchen|table|{#id .class} {{#parent .parentClass}}" + let tableDashes = "|:---|:---:|---:|" + let tableData = "|in|the|bedroom|{#dataID .dataClass}" + + let processor = EvergreenProcessor(lines: [tableHeader, tableDashes, tableData]) + + let elements = processor.parse().content + + let converter = EvergreenConverter(elements: elements) + let result = converter.convert() + XCTAssertEqual(result, "
akitchentable
inthebedroom
") + } + + func testCodeConverted() { + let lines: Array = [ + "```", + "function hello() {", + " return \"Hello World!\"", + "}", + "```" + ]; + + let processor = EvergreenProcessor(lines: lines) + let elements = processor.parse().content + + let converter = EvergreenConverter(elements: elements) + let result = converter.convert() + XCTAssertEqual(result, "
function hello() {\n  return \"Hello World!\"\n}
") + } + + func testCodeWithClassConverted() { + let lines: Array = [ + "```swift", + "function hello() {", + " return \"Hello World!\"", + "}", + "```" + ]; + + let processor = EvergreenProcessor(lines: lines) + let elements = processor.parse().content + + let converter = EvergreenConverter(elements: elements) + let result = converter.convert() + XCTAssertEqual(result, "
function hello() {\n  return \"Hello World!\"\n}
") + } + + func testHeaderIDs() { + let elements = [ + EvergreenElement(elementType: "h1", text: "Test 123!"), + EvergreenElement(elementType: "h1", text: "And S P A C E S. Period."), + EvergreenElement(elementType: "h2", text: "No ID") ] + + let converter = EvergreenConverter(elements: elements) + let result = converter.convert(markHeaders: true) + XCTAssertEqual(result, "

Test 123!

\n

And S P A C E S. Period.

\n

No ID

") + } + + static var allTests = [ + ("testImageConverter", testImageConverted), + ("testHorizontalRuleConverter", testHorizontalRuleConverted), + ("testParagraphConverter", testParagraphConverted), + ("testHeaderConverter", testHeaderConverted), + ("testChildElementsConverter", testChildElementsConverted), + ("testBreakElementConverter", testBreakElementConverted), + ("testLinkElementConverter", testLinkElementConverted), + ("testOrderedListElementConverter", testOrderedListElementConverted), + ("testBlockquoteElementConverter", testBlockquoteElementConverted), + ("testCodeConverter", testCodeConverted), + ("testHeaderIDs", testHeaderIDs) + ] }