// 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(text: nil) // Should contain either the default template content or the built-in content #expect(document.text.contains("Anchor") || document.text.contains("Node")) } @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") } }