Sapling/Tests/SaplingEditorTests/EditorPerformanceProfilingTests.swift

50 lines
2.1 KiB
Swift

import XCTest
@testable import SaplingEditor
final class EditorPerformanceProfilingTests: XCTestCase {
func testDocumentProfileRecordsMarkdownStructure() {
let source = """
# Title
- Item
1. Step
> Quote
Text with **bold**, *italic*, `code`, [ref], and ![image](image.png).
```
code
```
"""
let profile = EditorBenchmarkProfiler.documentProfile(fileName: "Sample.md", source: source)
XCTAssertEqual(profile.fileName, "Sample.md")
XCTAssertEqual(profile.headingCount, 1)
XCTAssertEqual(profile.unorderedListItemCount, 1)
XCTAssertEqual(profile.orderedListItemCount, 1)
XCTAssertEqual(profile.blockquoteCount, 1)
XCTAssertEqual(profile.fencedCodeFenceCount, 2)
XCTAssertEqual(profile.inlineCodeLineCount, 1)
XCTAssertEqual(profile.boldLineCount, 1)
XCTAssertEqual(profile.italicLineCount, 1)
XCTAssertEqual(profile.inlineLinkCount, 0)
XCTAssertEqual(profile.referenceLinkLikeCount, 1)
XCTAssertEqual(profile.imageCount, 1)
}
func testProfilerProducesBenchmarkMeasurements() throws {
let directory = FileManager.default.temporaryDirectory
.appendingPathComponent(UUID().uuidString, isDirectory: true)
try FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true)
let url = directory.appendingPathComponent("Benchmark.md")
try "# Heading\n\nText with **bold** and `code`.\n".write(to: url, atomically: true, encoding: .utf8)
let result = try EditorBenchmarkProfiler.profileDocument(at: url)
XCTAssertEqual(result.document.lineCount, 4)
XCTAssertTrue(result.renderedModeTrace.renderedModeWasScheduled)
XCTAssertTrue(result.measurements.contains { $0.name == "file_read" })
XCTAssertTrue(result.measurements.contains { $0.name == "document_parse_editor_state_init" })
XCTAssertTrue(result.measurements.contains { $0.name == "render_plan_generation_all_lines" })
XCTAssertTrue(result.measurements.contains { $0.name == "dirty_line_invalidation_typing" })
}
}