Add more unit tests. Add app icon and info.plist information in preparation for TestFlight beta
@ -8,7 +8,6 @@
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
E124B9D929941A4D00C0D2D2 /* PrinterConfigView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E124B9D829941A4D00C0D2D2 /* PrinterConfigView.swift */; };
|
||||
E16378B229A43CE1002F05E9 /* SoyuzScratchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E16378B129A43CE1002F05E9 /* SoyuzScratchTests.swift */; };
|
||||
E16378B429A491E6002F05E9 /* MoonrakerSocketManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E16378B329A491E6002F05E9 /* MoonrakerSocketManagerTests.swift */; };
|
||||
E180B5E92992CD9100425DB0 /* SoyuzApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = E180B5E82992CD9100425DB0 /* SoyuzApp.swift */; };
|
||||
E180B5ED2992CD9200425DB0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E180B5EC2992CD9200425DB0 /* Assets.xcassets */; };
|
||||
@ -46,7 +45,6 @@
|
||||
/* Begin PBXFileReference section */
|
||||
E124B9D72993FE5500C0D2D2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
E124B9D829941A4D00C0D2D2 /* PrinterConfigView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrinterConfigView.swift; sourceTree = "<group>"; };
|
||||
E16378B129A43CE1002F05E9 /* SoyuzScratchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoyuzScratchTests.swift; sourceTree = "<group>"; };
|
||||
E16378B329A491E6002F05E9 /* MoonrakerSocketManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoonrakerSocketManagerTests.swift; sourceTree = "<group>"; };
|
||||
E180B5E52992CD9100425DB0 /* Soyuz.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Soyuz.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
E180B5E82992CD9100425DB0 /* SoyuzApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoyuzApp.swift; sourceTree = "<group>"; };
|
||||
@ -141,7 +139,6 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E180B5FF2992CD9300425DB0 /* SoyuzTests.swift */,
|
||||
E16378B129A43CE1002F05E9 /* SoyuzScratchTests.swift */,
|
||||
E1A93C6829CD627100BAE750 /* BonjourBrowserTests.swift */,
|
||||
E16378B329A491E6002F05E9 /* MoonrakerSocketManagerTests.swift */,
|
||||
);
|
||||
@ -330,7 +327,6 @@
|
||||
E180B6002992CD9300425DB0 /* SoyuzTests.swift in Sources */,
|
||||
E16378B429A491E6002F05E9 /* MoonrakerSocketManagerTests.swift in Sources */,
|
||||
E1A93C6929CD627100BAE750 /* BonjourBrowserTests.swift in Sources */,
|
||||
E16378B229A43CE1002F05E9 /* SoyuzScratchTests.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/100.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/102.png
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/1024.png
Normal file
After Width: | Height: | Size: 62 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/114.png
Normal file
After Width: | Height: | Size: 5.4 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/120.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/128.png
Normal file
After Width: | Height: | Size: 6.2 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/144.png
Normal file
After Width: | Height: | Size: 7.1 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/152.png
Normal file
After Width: | Height: | Size: 7.6 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/16.png
Normal file
After Width: | Height: | Size: 624 B |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/167.png
Normal file
After Width: | Height: | Size: 8.5 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/172.png
Normal file
After Width: | Height: | Size: 8.8 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/180.png
Normal file
After Width: | Height: | Size: 9.2 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/196.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/20.png
Normal file
After Width: | Height: | Size: 791 B |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/216.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/256.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/29.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/32.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/40.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/48.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/50.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/512.png
Normal file
After Width: | Height: | Size: 33 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/55.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/57.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/58.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/60.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/64.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/66.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/72.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/76.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/80.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/87.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/88.png
Normal file
After Width: | Height: | Size: 4.0 KiB |
BIN
Soyuz/Assets.xcassets/AppIcon.appiconset/92.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
289
Soyuz/Assets.xcassets/AppIcon.appiconset/Contents.json
Executable file → Normal file
@ -1,54 +1,343 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "40.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "60.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "29.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "1x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "58.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "87.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "80.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "120.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "57.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "1x",
|
||||
"size" : "57x57"
|
||||
},
|
||||
{
|
||||
"filename" : "114.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "57x57"
|
||||
},
|
||||
{
|
||||
"filename" : "120.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"filename" : "180.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"filename" : "20.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "40.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "29.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "58.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "40.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "80.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "50.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "50x50"
|
||||
},
|
||||
{
|
||||
"filename" : "100.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "50x50"
|
||||
},
|
||||
{
|
||||
"filename" : "72.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "72x72"
|
||||
},
|
||||
{
|
||||
"filename" : "144.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "72x72"
|
||||
},
|
||||
{
|
||||
"filename" : "76.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "76x76"
|
||||
},
|
||||
{
|
||||
"filename" : "152.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "76x76"
|
||||
},
|
||||
{
|
||||
"filename" : "167.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "83.5x83.5"
|
||||
},
|
||||
{
|
||||
"filename" : "1024.png",
|
||||
"idiom" : "ios-marketing",
|
||||
"scale" : "1x",
|
||||
"size" : "1024x1024"
|
||||
},
|
||||
{
|
||||
"filename" : "16.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "16x16"
|
||||
},
|
||||
{
|
||||
"filename" : "32.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "16x16"
|
||||
},
|
||||
{
|
||||
"filename" : "32.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "32x32"
|
||||
},
|
||||
{
|
||||
"filename" : "64.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "32x32"
|
||||
},
|
||||
{
|
||||
"filename" : "128.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "128x128"
|
||||
},
|
||||
{
|
||||
"filename" : "256.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "128x128"
|
||||
},
|
||||
{
|
||||
"filename" : "256.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "256x256"
|
||||
},
|
||||
{
|
||||
"filename" : "512.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "256x256"
|
||||
},
|
||||
{
|
||||
"filename" : "512.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "512x512"
|
||||
},
|
||||
{
|
||||
"filename" : "1024.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "512x512"
|
||||
},
|
||||
{
|
||||
"filename" : "48.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "notificationCenter",
|
||||
"scale" : "2x",
|
||||
"size" : "24x24",
|
||||
"subtype" : "38mm"
|
||||
},
|
||||
{
|
||||
"filename" : "55.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "notificationCenter",
|
||||
"scale" : "2x",
|
||||
"size" : "27.5x27.5",
|
||||
"subtype" : "42mm"
|
||||
},
|
||||
{
|
||||
"filename" : "58.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "companionSettings",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "87.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "companionSettings",
|
||||
"scale" : "3x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "66.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "notificationCenter",
|
||||
"scale" : "2x",
|
||||
"size" : "33x33",
|
||||
"subtype" : "45mm"
|
||||
},
|
||||
{
|
||||
"filename" : "80.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "appLauncher",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40",
|
||||
"subtype" : "38mm"
|
||||
},
|
||||
{
|
||||
"filename" : "88.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "appLauncher",
|
||||
"scale" : "2x",
|
||||
"size" : "44x44",
|
||||
"subtype" : "40mm"
|
||||
},
|
||||
{
|
||||
"filename" : "92.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "appLauncher",
|
||||
"scale" : "2x",
|
||||
"size" : "46x46",
|
||||
"subtype" : "41mm"
|
||||
},
|
||||
{
|
||||
"filename" : "100.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "appLauncher",
|
||||
"scale" : "2x",
|
||||
"size" : "50x50",
|
||||
"subtype" : "44mm"
|
||||
},
|
||||
{
|
||||
"filename" : "102.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "appLauncher",
|
||||
"scale" : "2x",
|
||||
"size" : "51x51",
|
||||
"subtype" : "45mm"
|
||||
},
|
||||
{
|
||||
"idiom" : "watch",
|
||||
"role" : "appLauncher",
|
||||
"scale" : "2x",
|
||||
"size" : "54x54",
|
||||
"subtype" : "49mm"
|
||||
},
|
||||
{
|
||||
"filename" : "172.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "quickLook",
|
||||
"scale" : "2x",
|
||||
"size" : "86x86",
|
||||
"subtype" : "38mm"
|
||||
},
|
||||
{
|
||||
"filename" : "196.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "quickLook",
|
||||
"scale" : "2x",
|
||||
"size" : "98x98",
|
||||
"subtype" : "42mm"
|
||||
},
|
||||
{
|
||||
"filename" : "216.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "quickLook",
|
||||
"scale" : "2x",
|
||||
"size" : "108x108",
|
||||
"subtype" : "44mm"
|
||||
},
|
||||
{
|
||||
"idiom" : "watch",
|
||||
"role" : "quickLook",
|
||||
"scale" : "2x",
|
||||
"size" : "117x117",
|
||||
"subtype" : "45mm"
|
||||
},
|
||||
{
|
||||
"idiom" : "watch",
|
||||
"role" : "quickLook",
|
||||
"scale" : "2x",
|
||||
"size" : "129x129",
|
||||
"subtype" : "49mm"
|
||||
},
|
||||
{
|
||||
"filename" : "1024.png",
|
||||
"idiom" : "watch-marketing",
|
||||
"scale" : "1x",
|
||||
"size" : "1024x1024"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
|
@ -2,6 +2,8 @@
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.utilities</string>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<key>NSAllowsArbitraryLoads</key>
|
||||
|
@ -15,6 +15,12 @@ class DummyEngine: Engine {
|
||||
var delegate: Starscream.EngineDelegate?
|
||||
|
||||
@Published var startCalled = false
|
||||
@Published var stopCalled = false
|
||||
|
||||
func resetForNextTest() {
|
||||
self.startCalled = false
|
||||
self.stopCalled = false
|
||||
}
|
||||
|
||||
func register(delegate: Starscream.EngineDelegate) {
|
||||
self.delegate = delegate
|
||||
@ -25,10 +31,12 @@ class DummyEngine: Engine {
|
||||
}
|
||||
|
||||
func stop(closeCode: UInt16) {
|
||||
stopCalled = true
|
||||
return
|
||||
}
|
||||
|
||||
func forceStop() {
|
||||
stopCalled = true
|
||||
return
|
||||
}
|
||||
|
||||
@ -66,22 +74,57 @@ class MoonrakerSocketManagerTests: XCTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
func testConnectToBonjourEndpoint() {
|
||||
let endpoint = NWEndpoint.hostPort(host: "localhost", port: .http)
|
||||
print("Trying to connect to bonjour endpoint \(endpoint)")
|
||||
|
||||
let expectation = XCTestExpectation(description: "MoonrakerSocketManager.connectToBonjourEndpoint opens Starscream socket")
|
||||
// Test connecting to endpoint
|
||||
let connectExpectation = XCTestExpectation(description: "MoonrakerSocketManager.connectToBonjourEndpoint opens Starscream socket")
|
||||
|
||||
cancellable = engine.$startCalled
|
||||
.sink(receiveValue: { newValue in
|
||||
if newValue == true {
|
||||
expectation.fulfill()
|
||||
connectExpectation.fulfill()
|
||||
}
|
||||
})
|
||||
|
||||
socketManager?.connectToBonjourEndpoint(endpoint)
|
||||
wait(for: [expectation], timeout: 2)
|
||||
wait(for: [connectExpectation], timeout: 2)
|
||||
XCTAssertTrue(engine.startCalled)
|
||||
|
||||
// Test screen sleeping
|
||||
engine.resetForNextTest()
|
||||
let screenSleepExpectation = XCTestExpectation(description: "MoonrakerSocketManager.screenChangedSleepState screen sleep triggers Starscream socket disconnection")
|
||||
|
||||
let sleepNotification = Notification(name: NSWorkspace.screensDidSleepNotification)
|
||||
|
||||
cancellable = engine.$stopCalled
|
||||
.sink(receiveValue: { newValue in
|
||||
if newValue == true {
|
||||
screenSleepExpectation.fulfill()
|
||||
}
|
||||
})
|
||||
|
||||
socketManager?.screenChangedSleepState(sleepNotification)
|
||||
wait(for: [screenSleepExpectation], timeout: 2)
|
||||
XCTAssertTrue(engine.stopCalled)
|
||||
|
||||
// Test screen waking
|
||||
engine.resetForNextTest()
|
||||
let screenWakeExpectation = XCTestExpectation(description: "MoonrakerSocketManager.screenChangedSleepState screen wake triggers Starscream socket reconnection")
|
||||
|
||||
let wakeNotification = Notification(name: NSWorkspace.screensDidWakeNotification)
|
||||
|
||||
cancellable = engine.$startCalled
|
||||
.sink(receiveValue: { newValue in
|
||||
if newValue == true {
|
||||
screenWakeExpectation.fulfill()
|
||||
}
|
||||
})
|
||||
|
||||
socketManager?.screenChangedSleepState(wakeNotification)
|
||||
wait(for: [screenWakeExpectation], timeout: 2)
|
||||
XCTAssertTrue(engine.startCalled)
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,17 +0,0 @@
|
||||
//
|
||||
// KlipperMonScratchTests.swift
|
||||
// KlipperMonTests
|
||||
//
|
||||
// Created by maddiefuzz on 2/20/23.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
|
||||
class SoyuzScratchTests: XCTestCase {
|
||||
|
||||
func testOneAndOneIsEqual() {
|
||||
let a = 1
|
||||
let b = 1
|
||||
XCTAssertEqual(a, b, "1 did not equal 1.")
|
||||
}
|
||||
}
|