diff options
Diffstat (limited to 'MapTests/MapDocumentTests.swift')
| -rw-r--r-- | MapTests/MapDocumentTests.swift | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/MapTests/MapDocumentTests.swift b/MapTests/MapDocumentTests.swift new file mode 100644 index 0000000..7ae93fc --- /dev/null +++ b/MapTests/MapDocumentTests.swift @@ -0,0 +1,81 @@ +// Copyright (C) 2024 Rubén Beltrán del Río + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +import SwiftUI +// You should have received a copy of the GNU General Public License +// along with this program. If not, see https://map.tranquil.systems. +import Testing +import UniformTypeIdentifiers + +@testable import Map + +struct MapDocumentTests { + + @Test func testMapDocumentInitialization() async throws { + let document = MapDocument() + #expect( + document.text == """ + Anchor (60, 5) [x] + Node A (78, 23) + Node B (40, 30) [square] + Node C (65, 70) + + Anchor -> Node A + Anchor -> Node B + Node A -> Node C + Node B -> Node C + """) + } + + @Test func testMapDocumentInitializationWithText() async throws { + let testText = "Test map content" + let document = MapDocument(text: testText) + #expect(document.text == testText) + } + + @Test func testMapDocumentReadableContentTypes() async throws { + let contentTypes = MapDocument.readableContentTypes + #expect(contentTypes.count == 1) + #expect(contentTypes.first == UTType.wmap) + } + + @Test func testMapDocumentTextProperty() async throws { + let document = MapDocument(text: "Test content") + #expect(document.text == "Test content") + + // Test that the document can handle different text content + let mapContent = "Node A (10, 20)\nNode B (30, 40)\nNode A -> Node B" + let mapDocument = MapDocument(text: mapContent) + #expect(mapDocument.text == mapContent) + } + + @Test func testMapDocumentWithEmptyContent() async throws { + let document = MapDocument(text: "") + #expect(document.text == "") + } + + @Test func testMapDocumentExportAsImage() async throws { + let document = MapDocument(text: "Node A (10, 20)\nNode B (30, 40)") + + await MainActor.run { + let image = document.exportAsImage(withEvolution: .general) + #expect(image != nil) + #expect(image!.size.width > 0) + #expect(image!.size.height > 0) + } + } + + @Test func testUTTypeExampleText() async throws { + let utType = UTType.wmap + #expect(utType.identifier == "systems.tranquil.map.wmap") + } +} |