1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
/*
This source file is part of the Swift.org open source project
Copyright (c) 2024 Apple Inc. and the Swift project authors
Licensed under Apache License v2.0 with Runtime Library Exception
See https://swift.org/LICENSE.txt for license information
See https://swift.org/CONTRIBUTORS.txt for Swift project authors
*/
import Foundation
import XCTest
import Markdown
@testable import SwiftDocC
class RenderBlockContent_CapitalizationTests: XCTestCase {
// MARK: - Inlines
// Text, Emphasis, Strong are all auto-capitalized, and everything else defaults to not capitalized.
func testRenderInlineContentText() {
let text = RenderInlineContent.text("hello, world!").capitalizingFirstWord()
XCTAssertEqual("Hello, world!", text.plainText)
}
func testRenderInlineContentEmphasis() {
let emphasis = RenderInlineContent.emphasis(inlineContent: [.text("hello, world!")]).capitalizingFirstWord()
XCTAssertEqual("Hello, world!", emphasis.plainText)
}
func testRenderInlineContentStrong() {
let strong = RenderInlineContent.strong(inlineContent: [.text("hello, world!")]).capitalizingFirstWord()
XCTAssertEqual("Hello, world!", strong.plainText)
}
func testRenderInlineContentCodeVoice() {
let codeVoice = RenderInlineContent.codeVoice(code: "code voice").capitalizingFirstWord()
XCTAssertEqual("code voice", codeVoice.plainText)
}
func testRenderInlineContentReference() {
let reference = RenderInlineContent.reference(identifier: .init("Test"), isActive: true, overridingTitle: "hello, world!", overridingTitleInlineContent: [.text("hello, world!")]).capitalizingFirstWord()
XCTAssertEqual("hello, world!", reference.plainText)
}
func testRenderInlineContentNewTerm() {
let newTerm = RenderInlineContent.newTerm(inlineContent: [.text("helloWorld")]).capitalizingFirstWord()
XCTAssertEqual("helloWorld", newTerm.plainText)
}
func testRenderInlineContentInlineHead() {
let inlineHead = RenderInlineContent.inlineHead(inlineContent: [.text("hello, world!")]).capitalizingFirstWord()
XCTAssertEqual("hello, world!", inlineHead.plainText)
}
func testRenderInlineContentSubscript() {
let subscriptContent = RenderInlineContent.subscript(inlineContent: [.text("hello, world!")]).capitalizingFirstWord()
XCTAssertEqual("hello, world!", subscriptContent.plainText)
}
func testRenderInlineContentSuperscript() {
let superscriptContent = RenderInlineContent.superscript(inlineContent: [.text("hello, world!")]).capitalizingFirstWord()
XCTAssertEqual("hello, world!", superscriptContent.plainText)
}
func testRenderInlineContentStrikethrough() {
let strikethrough = RenderInlineContent.strikethrough(inlineContent: [.text("hello, world!")]).capitalizingFirstWord()
XCTAssertEqual("hello, world!", strikethrough.plainText)
}
// MARK: - Blocks
// Paragraphs, asides, headings, and small content are all auto-capitalized, and everything else defaults to not capitalized.
func testRenderBlockContentParagraph() {
let paragraph = RenderBlockContent.paragraph(.init(inlineContent: [.text("hello, world!")])).capitalizingFirstWord()
XCTAssertEqual("Hello, world!", paragraph.rawIndexableTextContent(references: [:]))
}
func testRenderBlockContentAside() {
let aside = RenderBlockContent.aside(.init(style: .init(rawValue: "Experiment"), content: [.paragraph(.init(inlineContent: [.text("hello, world!")]))])).capitalizingFirstWord()
XCTAssertEqual("Hello, world!", aside.rawIndexableTextContent(references: [:]))
}
func testRenderBlockContentSmall() {
let small = RenderBlockContent.small(.init(inlineContent: [.text("hello, world!")])).capitalizingFirstWord()
XCTAssertEqual("Hello, world!", small.rawIndexableTextContent(references: [:]))
}
func testRenderBlockContentHeading() {
let heading = RenderBlockContent.heading(.init(level: 1, text: "hello, world!", anchor: "hi")).capitalizingFirstWord()
XCTAssertEqual("Hello, world!", heading.rawIndexableTextContent(references: [:]))
}
func testRenderBlockContentUnorderedList() {
let list = RenderBlockContent.unorderedList(.init(items: [
.init(content: [
.paragraph(.init(inlineContent: [.text("hello,")])),
]),
.init(content: [
.paragraph(.init(inlineContent: [.text("world!")])),
]),
])).capitalizingFirstWord()
XCTAssertEqual("hello, world!", list.rawIndexableTextContent(references: [:]))
}
func testRenderBlockContentStep() {
let step = RenderBlockContent.step(.init(content: [.paragraph(.init(inlineContent: [.text("hello, world!")]))], caption: [.paragraph(.init(inlineContent: [.text("Step caption")]))], media: RenderReferenceIdentifier("Media"), code: RenderReferenceIdentifier("Code"), runtimePreview: RenderReferenceIdentifier("Preview"))).capitalizingFirstWord()
XCTAssertEqual("hello, world! Step caption", step.rawIndexableTextContent(references: [:]))
}
func testRenderBlockContentOrderedList() {
let list = RenderBlockContent.orderedList(.init(items: [
.init(content: [
.paragraph(.init(inlineContent: [.text("hello,")])),
]),
.init(content: [
.paragraph(.init(inlineContent: [.text("world!")])),
]),
])).capitalizingFirstWord()
XCTAssertEqual("hello, world!", list.rawIndexableTextContent(references: [:]))
}
}
|