Fix #667 Make no ack an enum case
This commit is contained in:
parent
58f51d07a2
commit
23c76417d2
@ -9,18 +9,43 @@
|
|||||||
import XCTest
|
import XCTest
|
||||||
@testable import SocketIO
|
@testable import SocketIO
|
||||||
|
|
||||||
class SocketAckManagerTest: XCTestCase {
|
class SocketAckManagerTest : XCTestCase {
|
||||||
var ackManager = SocketAckManager()
|
var ackManager = SocketAckManager()
|
||||||
|
|
||||||
func testAddAcks() {
|
func testAddAcks() {
|
||||||
let callbackExpection = self.expectation(description: "callbackExpection")
|
let callbackExpection = expectation(description: "callbackExpection")
|
||||||
let itemsArray = ["Hi", "ho"]
|
let itemsArray = ["Hi", "ho"]
|
||||||
|
|
||||||
func callback(_ items: [Any]) {
|
func callback(_ items: [Any]) {
|
||||||
callbackExpection.fulfill()
|
callbackExpection.fulfill()
|
||||||
}
|
}
|
||||||
|
|
||||||
ackManager.addAck(1, callback: callback)
|
ackManager.addAck(1, callback: callback)
|
||||||
ackManager.executeAck(1, with: itemsArray, onQueue: DispatchQueue.main)
|
ackManager.executeAck(1, with: itemsArray, onQueue: DispatchQueue.main)
|
||||||
|
|
||||||
waitForExpectations(timeout: 3.0, handler: nil)
|
waitForExpectations(timeout: 3.0, handler: nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func testManagerTimeoutAck() {
|
||||||
|
let callbackExpection = expectation(description: "Manager should timeout ack with noAck status")
|
||||||
|
let itemsArray = ["Hi", "ho"]
|
||||||
|
|
||||||
|
func callback(_ items: [Any]) {
|
||||||
|
XCTAssertEqual(items.count, 1, "Timed out ack should have one value")
|
||||||
|
guard let timeoutReason = items[0] as? String else {
|
||||||
|
XCTFail("Timeout reason should be a string")
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
XCTAssertEqual(timeoutReason, SocketAckStatus.noAck.rawValue)
|
||||||
|
|
||||||
|
callbackExpection.fulfill()
|
||||||
|
}
|
||||||
|
|
||||||
|
ackManager.addAck(1, callback: callback)
|
||||||
|
ackManager.timeoutAck(1, onQueue: DispatchQueue.main)
|
||||||
|
|
||||||
|
waitForExpectations(timeout: 0.2, handler: nil)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,8 +22,13 @@
|
|||||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
// THE SOFTWARE.
|
// THE SOFTWARE.
|
||||||
|
|
||||||
|
import Dispatch
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
|
public enum SocketAckStatus : String {
|
||||||
|
case noAck = "NO ACK"
|
||||||
|
}
|
||||||
|
|
||||||
private struct SocketAck : Hashable {
|
private struct SocketAck : Hashable {
|
||||||
let ack: Int
|
let ack: Int
|
||||||
var callback: AckCallback!
|
var callback: AckCallback!
|
||||||
@ -73,7 +78,7 @@ struct SocketAckManager {
|
|||||||
let ack = acks.remove(SocketAck(ack: ack))
|
let ack = acks.remove(SocketAck(ack: ack))
|
||||||
|
|
||||||
onQueue.async() {
|
onQueue.async() {
|
||||||
ack?.callback?(["NO ACK"])
|
ack?.callback?([SocketAckStatus.noAck.rawValue])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user