From cea9773c08b1fa3e25cd82ce766af528027a77dc Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sat, 18 May 2024 22:37:58 -0700 Subject: [PATCH] Add TreeTests. --- NetNewsWire.xctestplan => App.xctestplan | 8 +++++++ NetNewsWire.xcodeproj/project.pbxproj | 4 ++-- .../xcschemes/NetNewsWire-iOS.xcscheme | 2 +- .../xcschemes/NetNewsWire.xcscheme | 2 +- Tree/Package.swift | 5 +++- Tree/Sources/Tree/Node.swift | 2 +- ....swift => RootNodeRepresentedObject.swift} | 4 ++-- Tree/Tests/TreeTests/NodeTests.swift | 23 +++++++++++++++++++ 8 files changed, 42 insertions(+), 8 deletions(-) rename NetNewsWire.xctestplan => App.xctestplan (79%) rename Tree/Sources/Tree/{TopLevelRepresentedObject.swift => RootNodeRepresentedObject.swift} (76%) create mode 100644 Tree/Tests/TreeTests/NodeTests.swift diff --git a/NetNewsWire.xctestplan b/App.xctestplan similarity index 79% rename from NetNewsWire.xctestplan rename to App.xctestplan index 8f782864f..93608f99d 100644 --- a/NetNewsWire.xctestplan +++ b/App.xctestplan @@ -27,6 +27,14 @@ "identifier" : "AppKitExtrasTests", "name" : "AppKitExtrasTests" } + }, + { + "parallelizable" : true, + "target" : { + "containerPath" : "container:", + "identifier" : "TreeTests", + "name" : "TreeTests" + } } ], "version" : 1 diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 4b520b902..1156edc72 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -1082,7 +1082,7 @@ 84A699132BC34E8500605AB8 /* ArticleExtractor */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = ArticleExtractor; sourceTree = ""; }; 84A699182BC3524C00605AB8 /* LocalAccount */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = LocalAccount; sourceTree = ""; }; 84A699192BC36EDB00605AB8 /* Feedly */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = Feedly; sourceTree = ""; }; - 84A959052BF9743F00F0D9B8 /* NetNewsWire.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = NetNewsWire.xctestplan; sourceTree = ""; }; + 84A959052BF9743F00F0D9B8 /* App.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = App.xctestplan; sourceTree = ""; }; 84AD1EA92031617300BC20B7 /* PasteboardFolder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasteboardFolder.swift; sourceTree = ""; }; 84AD1EB92031649C00BC20B7 /* SmartFeedPasteboardWriter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SmartFeedPasteboardWriter.swift; sourceTree = ""; }; 84AD1EBB2032AF5C00BC20B7 /* SidebarOutlineDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarOutlineDataSource.swift; sourceTree = ""; }; @@ -1974,12 +1974,12 @@ children = ( 845B14A51FC2299E0013CF92 /* README.md */, 84D2200922B0BC4B0019E085 /* CONTRIBUTING.md */, + 84A959052BF9743F00F0D9B8 /* App.xctestplan */, 84CBDDAE1FD3674C005A61AA /* Technotes */, 84C9FC6522629B3900D921D6 /* Mac */, 84C9FC922262A0E600D921D6 /* iOS */, 84C9FC6822629C9A00D921D6 /* Shared */, 176813F82564BB2C00D98635 /* Widget */, - 84A959052BF9743F00F0D9B8 /* NetNewsWire.xctestplan */, 84C9FCA52262A1E600D921D6 /* Tests */, D5907CDA2002F084005947E5 /* xcconfig */, 849C64611ED37A5D003D8FC0 /* Products */, diff --git a/NetNewsWire.xcodeproj/xcshareddata/xcschemes/NetNewsWire-iOS.xcscheme b/NetNewsWire.xcodeproj/xcshareddata/xcschemes/NetNewsWire-iOS.xcscheme index e012c7c36..cc5fe129c 100644 --- a/NetNewsWire.xcodeproj/xcshareddata/xcschemes/NetNewsWire-iOS.xcscheme +++ b/NetNewsWire.xcodeproj/xcshareddata/xcschemes/NetNewsWire-iOS.xcscheme @@ -47,7 +47,7 @@ shouldUseLaunchSchemeArgsEnv = "YES"> diff --git a/NetNewsWire.xcodeproj/xcshareddata/xcschemes/NetNewsWire.xcscheme b/NetNewsWire.xcodeproj/xcshareddata/xcschemes/NetNewsWire.xcscheme index f89aab6fe..bb53e39b1 100644 --- a/NetNewsWire.xcodeproj/xcshareddata/xcschemes/NetNewsWire.xcscheme +++ b/NetNewsWire.xcodeproj/xcshareddata/xcschemes/NetNewsWire.xcscheme @@ -47,7 +47,7 @@ shouldUseLaunchSchemeArgsEnv = "YES"> diff --git a/Tree/Package.swift b/Tree/Package.swift index f50a4d043..1069ba681 100644 --- a/Tree/Package.swift +++ b/Tree/Package.swift @@ -16,6 +16,9 @@ let package = Package( swiftSettings: [ .enableExperimentalFeature("StrictConcurrency") ] - ) + ), + .testTarget( + name: "TreeTests", + dependencies: ["Tree"]) ] ) diff --git a/Tree/Sources/Tree/Node.swift b/Tree/Sources/Tree/Node.swift index 3ff9408b0..60de5a271 100644 --- a/Tree/Sources/Tree/Node.swift +++ b/Tree/Sources/Tree/Node.swift @@ -66,7 +66,7 @@ import Foundation public class func genericRootNode() -> Node { - let node = Node(representedObject: TopLevelRepresentedObject(), parent: nil) + let node = Node(representedObject: RootNodeRepresentedObject(), parent: nil) node.canHaveChildNodes = true return node } diff --git a/Tree/Sources/Tree/TopLevelRepresentedObject.swift b/Tree/Sources/Tree/RootNodeRepresentedObject.swift similarity index 76% rename from Tree/Sources/Tree/TopLevelRepresentedObject.swift rename to Tree/Sources/Tree/RootNodeRepresentedObject.swift index ec4619a7b..fc18f072c 100644 --- a/Tree/Sources/Tree/TopLevelRepresentedObject.swift +++ b/Tree/Sources/Tree/RootNodeRepresentedObject.swift @@ -1,5 +1,5 @@ // -// TopLevelRepresentedObject.swift +// RootNodeRepresentedObject.swift // RSTree // // Created by Brent Simmons on 8/10/16. @@ -10,6 +10,6 @@ import Foundation // Handy to use as the represented object for a root node. Not required to use it, though. -final class TopLevelRepresentedObject { +final class RootNodeRepresentedObject { } diff --git a/Tree/Tests/TreeTests/NodeTests.swift b/Tree/Tests/TreeTests/NodeTests.swift new file mode 100644 index 000000000..2312e3d38 --- /dev/null +++ b/Tree/Tests/TreeTests/NodeTests.swift @@ -0,0 +1,23 @@ +// +// NodeTests.swift +// +// +// Created by Brent Simmons on 5/18/24. +// + +import XCTest +import Tree + +final class NodeTests: XCTestCase { + + private final class TestClass {} + + @MainActor func testNodeIsRootNode() { + + var node = Node(representedObject: TestClass(), parent: nil) + XCTAssertTrue(node.isRoot) + + node = Node.genericRootNode() + XCTAssertTrue(node.isRoot) + } +}