diff --git a/SoundpoolBrowser/SoundpoolBrowser.xcodeproj/project.pbxproj b/SoundpoolBrowser/SoundpoolBrowser.xcodeproj/project.pbxproj index 671d28c..13d6acb 100644 --- a/SoundpoolBrowser/SoundpoolBrowser.xcodeproj/project.pbxproj +++ b/SoundpoolBrowser/SoundpoolBrowser.xcodeproj/project.pbxproj @@ -20,8 +20,28 @@ E2D9A8FA28F21B0B00519159 /* Category.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2D9A8F928F21B0B00519159 /* Category.swift */; }; E2D9A8FD28F2207B00519159 /* Waveform in Frameworks */ = {isa = PBXBuildFile; productRef = E2D9A8FC28F2207B00519159 /* Waveform */; }; E2D9A8FF28F2242400519159 /* Sample.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2D9A8FE28F2242400519159 /* Sample.swift */; }; + E2D9A90728F232B700519159 /* SoundpoolBrowserUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2D9A90628F232B700519159 /* SoundpoolBrowserUITests.swift */; }; + E2D9A90928F232B700519159 /* SoundpoolBrowserUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2D9A90828F232B700519159 /* SoundpoolBrowserUITestsLaunchTests.swift */; }; + E2D9A91628F232CF00519159 /* SoundpoolBrowserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2D9A91528F232CF00519159 /* SoundpoolBrowserTests.swift */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + E2D9A90A28F232B700519159 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = E2D9A8CF28F20AF200519159 /* Project object */; + proxyType = 1; + remoteGlobalIDString = E2D9A8D628F20AF200519159; + remoteInfo = SoundpoolBrowser; + }; + E2D9A91728F232CF00519159 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = E2D9A8CF28F20AF200519159 /* Project object */; + proxyType = 1; + remoteGlobalIDString = E2D9A8D628F20AF200519159; + remoteInfo = SoundpoolBrowser; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXFileReference section */ E2D9A8D728F20AF200519159 /* SoundpoolBrowser.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SoundpoolBrowser.app; sourceTree = BUILT_PRODUCTS_DIR; }; E2D9A8DA28F20AF200519159 /* SoundpoolBrowserApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoundpoolBrowserApp.swift; sourceTree = ""; }; @@ -37,6 +57,11 @@ E2D9A8F728F2118D00519159 /* Brain.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Brain.swift; sourceTree = ""; }; E2D9A8F928F21B0B00519159 /* Category.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Category.swift; sourceTree = ""; }; E2D9A8FE28F2242400519159 /* Sample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Sample.swift; sourceTree = ""; }; + E2D9A90428F232B700519159 /* SoundpoolBrowserUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SoundpoolBrowserUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + E2D9A90628F232B700519159 /* SoundpoolBrowserUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoundpoolBrowserUITests.swift; sourceTree = ""; }; + E2D9A90828F232B700519159 /* SoundpoolBrowserUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoundpoolBrowserUITestsLaunchTests.swift; sourceTree = ""; }; + E2D9A91328F232CF00519159 /* SoundpoolBrowserTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SoundpoolBrowserTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + E2D9A91528F232CF00519159 /* SoundpoolBrowserTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoundpoolBrowserTests.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -48,6 +73,20 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + E2D9A90128F232B700519159 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E2D9A91028F232CF00519159 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -55,6 +94,8 @@ isa = PBXGroup; children = ( E2D9A8D928F20AF200519159 /* SoundpoolBrowser */, + E2D9A90528F232B700519159 /* SoundpoolBrowserUITests */, + E2D9A91428F232CF00519159 /* SoundpoolBrowserTests */, E2D9A8D828F20AF200519159 /* Products */, ); sourceTree = ""; @@ -63,6 +104,8 @@ isa = PBXGroup; children = ( E2D9A8D728F20AF200519159 /* SoundpoolBrowser.app */, + E2D9A90428F232B700519159 /* SoundpoolBrowserUITests.xctest */, + E2D9A91328F232CF00519159 /* SoundpoolBrowserTests.xctest */, ); name = Products; sourceTree = ""; @@ -119,6 +162,23 @@ path = Utils; sourceTree = ""; }; + E2D9A90528F232B700519159 /* SoundpoolBrowserUITests */ = { + isa = PBXGroup; + children = ( + E2D9A90628F232B700519159 /* SoundpoolBrowserUITests.swift */, + E2D9A90828F232B700519159 /* SoundpoolBrowserUITestsLaunchTests.swift */, + ); + path = SoundpoolBrowserUITests; + sourceTree = ""; + }; + E2D9A91428F232CF00519159 /* SoundpoolBrowserTests */ = { + isa = PBXGroup; + children = ( + E2D9A91528F232CF00519159 /* SoundpoolBrowserTests.swift */, + ); + path = SoundpoolBrowserTests; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -142,6 +202,42 @@ productReference = E2D9A8D728F20AF200519159 /* SoundpoolBrowser.app */; productType = "com.apple.product-type.application"; }; + E2D9A90328F232B700519159 /* SoundpoolBrowserUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = E2D9A90C28F232B700519159 /* Build configuration list for PBXNativeTarget "SoundpoolBrowserUITests" */; + buildPhases = ( + E2D9A90028F232B700519159 /* Sources */, + E2D9A90128F232B700519159 /* Frameworks */, + E2D9A90228F232B700519159 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + E2D9A90B28F232B700519159 /* PBXTargetDependency */, + ); + name = SoundpoolBrowserUITests; + productName = SoundpoolBrowserUITests; + productReference = E2D9A90428F232B700519159 /* SoundpoolBrowserUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; + E2D9A91228F232CF00519159 /* SoundpoolBrowserTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = E2D9A91928F232CF00519159 /* Build configuration list for PBXNativeTarget "SoundpoolBrowserTests" */; + buildPhases = ( + E2D9A90F28F232CF00519159 /* Sources */, + E2D9A91028F232CF00519159 /* Frameworks */, + E2D9A91128F232CF00519159 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + E2D9A91828F232CF00519159 /* PBXTargetDependency */, + ); + name = SoundpoolBrowserTests; + productName = SoundpoolBrowserTests; + productReference = E2D9A91328F232CF00519159 /* SoundpoolBrowserTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -155,6 +251,14 @@ E2D9A8D628F20AF200519159 = { CreatedOnToolsVersion = 14.1; }; + E2D9A90328F232B700519159 = { + CreatedOnToolsVersion = 14.1; + TestTargetID = E2D9A8D628F20AF200519159; + }; + E2D9A91228F232CF00519159 = { + CreatedOnToolsVersion = 14.1; + TestTargetID = E2D9A8D628F20AF200519159; + }; }; }; buildConfigurationList = E2D9A8D228F20AF200519159 /* Build configuration list for PBXProject "SoundpoolBrowser" */; @@ -174,6 +278,8 @@ projectRoot = ""; targets = ( E2D9A8D628F20AF200519159 /* SoundpoolBrowser */, + E2D9A90328F232B700519159 /* SoundpoolBrowserUITests */, + E2D9A91228F232CF00519159 /* SoundpoolBrowserTests */, ); }; /* End PBXProject section */ @@ -188,6 +294,20 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + E2D9A90228F232B700519159 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E2D9A91128F232CF00519159 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -208,8 +328,38 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + E2D9A90028F232B700519159 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E2D9A90728F232B700519159 /* SoundpoolBrowserUITests.swift in Sources */, + E2D9A90928F232B700519159 /* SoundpoolBrowserUITestsLaunchTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E2D9A90F28F232CF00519159 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E2D9A91628F232CF00519159 /* SoundpoolBrowserTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + E2D9A90B28F232B700519159 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = E2D9A8D628F20AF200519159 /* SoundpoolBrowser */; + targetProxy = E2D9A90A28F232B700519159 /* PBXContainerItemProxy */; + }; + E2D9A91828F232CF00519159 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = E2D9A8D628F20AF200519159 /* SoundpoolBrowser */; + targetProxy = E2D9A91728F232CF00519159 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin XCBuildConfiguration section */ E2D9A8E428F20AF300519159 /* Debug */ = { isa = XCBuildConfiguration; @@ -378,6 +528,72 @@ }; name = Release; }; + E2D9A90D28F232B700519159 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = VE7YM5VVJB; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = net.tarasis.SoundpoolBrowserUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TEST_TARGET_NAME = SoundpoolBrowser; + }; + name = Debug; + }; + E2D9A90E28F232B700519159 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = VE7YM5VVJB; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = net.tarasis.SoundpoolBrowserUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TEST_TARGET_NAME = SoundpoolBrowser; + }; + name = Release; + }; + E2D9A91A28F232CF00519159 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = VE7YM5VVJB; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = net.tarasis.SoundpoolBrowserTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SoundpoolBrowser.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/SoundpoolBrowser"; + }; + name = Debug; + }; + E2D9A91B28F232CF00519159 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = VE7YM5VVJB; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = net.tarasis.SoundpoolBrowserTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SoundpoolBrowser.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/SoundpoolBrowser"; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -399,6 +615,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + E2D9A90C28F232B700519159 /* Build configuration list for PBXNativeTarget "SoundpoolBrowserUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E2D9A90D28F232B700519159 /* Debug */, + E2D9A90E28F232B700519159 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + E2D9A91928F232CF00519159 /* Build configuration list for PBXNativeTarget "SoundpoolBrowserTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E2D9A91A28F232CF00519159 /* Debug */, + E2D9A91B28F232CF00519159 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ diff --git a/SoundpoolBrowser/SoundpoolBrowser.xcodeproj/xcshareddata/xcschemes/SoundpoolBrowser.xcscheme b/SoundpoolBrowser/SoundpoolBrowser.xcodeproj/xcshareddata/xcschemes/SoundpoolBrowser.xcscheme new file mode 100644 index 0000000..0a3bdd9 --- /dev/null +++ b/SoundpoolBrowser/SoundpoolBrowser.xcodeproj/xcshareddata/xcschemes/SoundpoolBrowser.xcscheme @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SoundpoolBrowser/SoundpoolBrowser.xcodeproj/xcshareddata/xcschemes/SoundpoolBrowserTests.xcscheme b/SoundpoolBrowser/SoundpoolBrowser.xcodeproj/xcshareddata/xcschemes/SoundpoolBrowserTests.xcscheme new file mode 100644 index 0000000..7d724e5 --- /dev/null +++ b/SoundpoolBrowser/SoundpoolBrowser.xcodeproj/xcshareddata/xcschemes/SoundpoolBrowserTests.xcscheme @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/SoundpoolBrowser/SoundpoolBrowser.xcodeproj/xcshareddata/xcschemes/SoundpoolBrowserUITests.xcscheme b/SoundpoolBrowser/SoundpoolBrowser.xcodeproj/xcshareddata/xcschemes/SoundpoolBrowserUITests.xcscheme new file mode 100644 index 0000000..eb58762 --- /dev/null +++ b/SoundpoolBrowser/SoundpoolBrowser.xcodeproj/xcshareddata/xcschemes/SoundpoolBrowserUITests.xcscheme @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/SoundpoolBrowser/SoundpoolBrowserTests/SoundpoolBrowserTests.swift b/SoundpoolBrowser/SoundpoolBrowserTests/SoundpoolBrowserTests.swift new file mode 100644 index 0000000..308f15e --- /dev/null +++ b/SoundpoolBrowser/SoundpoolBrowserTests/SoundpoolBrowserTests.swift @@ -0,0 +1,35 @@ +// +// SoundpoolBrowserTests.swift +// SoundpoolBrowserTests +// +// Created by Robert McGovern on 08/10/2022. +// + +import XCTest + +final class SoundpoolBrowserTests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + // Any test you write for XCTest can be annotated as throws and async. + // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. + // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/SoundpoolBrowser/SoundpoolBrowserUITests/SoundpoolBrowserUITests.swift b/SoundpoolBrowser/SoundpoolBrowserUITests/SoundpoolBrowserUITests.swift new file mode 100644 index 0000000..0d634b5 --- /dev/null +++ b/SoundpoolBrowser/SoundpoolBrowserUITests/SoundpoolBrowserUITests.swift @@ -0,0 +1,41 @@ +// +// SoundpoolBrowserUITests.swift +// SoundpoolBrowserUITests +// +// Created by Robert McGovern on 08/10/2022. +// + +import XCTest + +final class SoundpoolBrowserUITests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() throws { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTApplicationLaunchMetric()]) { + XCUIApplication().launch() + } + } + } +} diff --git a/SoundpoolBrowser/SoundpoolBrowserUITests/SoundpoolBrowserUITestsLaunchTests.swift b/SoundpoolBrowser/SoundpoolBrowserUITests/SoundpoolBrowserUITestsLaunchTests.swift new file mode 100644 index 0000000..5a1623d --- /dev/null +++ b/SoundpoolBrowser/SoundpoolBrowserUITests/SoundpoolBrowserUITestsLaunchTests.swift @@ -0,0 +1,32 @@ +// +// SoundpoolBrowserUITestsLaunchTests.swift +// SoundpoolBrowserUITests +// +// Created by Robert McGovern on 08/10/2022. +// + +import XCTest + +final class SoundpoolBrowserUITestsLaunchTests: XCTestCase { + + override class var runsForEachTargetApplicationUIConfiguration: Bool { + true + } + + override func setUpWithError() throws { + continueAfterFailure = false + } + + func testLaunch() throws { + let app = XCUIApplication() + app.launch() + + // Insert steps here to perform after app launch but before taking a screenshot, + // such as logging into a test account or navigating somewhere in the app + + let attachment = XCTAttachment(screenshot: app.screenshot()) + attachment.name = "Launch Screen" + attachment.lifetime = .keepAlways + add(attachment) + } +}