[0.1.0] Setup tests & fix string parsing
This commit is contained in:
parent
001065cd2b
commit
16040ad8e7
|
@ -16,27 +16,6 @@ public enum SLMessageCommand: Character {
|
|||
case readMessage = "R"
|
||||
case stoppedTyping = "S"
|
||||
case startedTyping = "T"
|
||||
|
||||
init(_ command: Character) throws {
|
||||
switch command {
|
||||
case "B":
|
||||
self = .base64Message
|
||||
case "C":
|
||||
self = .connected
|
||||
case "D":
|
||||
self = .disconnected
|
||||
case "M":
|
||||
self = .textMessage
|
||||
case "R":
|
||||
self = .readMessage
|
||||
case "S":
|
||||
self = .stoppedTyping
|
||||
case "T":
|
||||
self = .startedTyping
|
||||
default:
|
||||
throw SLMessageError.unsupportedType
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum SLMessageError: Int, Error {
|
||||
|
@ -52,12 +31,13 @@ public struct SLMessage {
|
|||
|
||||
init(_ data: String) throws {
|
||||
guard data.characters.count > 1 else { throw SLMessageError.badRequest }
|
||||
guard let command = data.characters.first else { throw SLMessageError.unsupportedType }
|
||||
self.command = try SLMessageCommand(command)
|
||||
guard let command = data.characters.first,
|
||||
let messageCommand = SLMessageCommand(rawValue: command) else { throw SLMessageError.unsupportedType }
|
||||
self.command = messageCommand
|
||||
let payload = String(data.characters.dropFirst(2))
|
||||
guard let end = data.characters.index(of: "}") else { throw SLMessageError.notAcceptable }
|
||||
guard let end = payload.characters.index(of: "}") else { throw SLMessageError.notAcceptable }
|
||||
self.recipients = payload.substring(to: end).components(separatedBy: ";")
|
||||
self.content = payload.substring(from: end)
|
||||
self.content = payload.substring(from: payload.index(after: end))
|
||||
}
|
||||
|
||||
init(command: SLMessageCommand, recipients: [String]? = nil) {
|
||||
|
|
|
@ -9,10 +9,15 @@
|
|||
import XCTest
|
||||
@testable import SLChat
|
||||
|
||||
class testSLClient: XCTestCase {
|
||||
class SLClientTests: XCTestCase {
|
||||
static let allTests = [
|
||||
("testSLClient", testSLClient),
|
||||
("testSLClientProtocol", testSLClientProtocol)
|
||||
("testSLClientSendMessage", testSLClientSendMessage),
|
||||
("testSLClientStatusMessageDefault", testSLClientStatusMessageDefault),
|
||||
("testSLClientStatusMessage", testSLClientStatusMessage),
|
||||
("testSLClientProtocol", testSLClientProtocol),
|
||||
("testSLClientStatus", testSLClientStatus),
|
||||
("testSLClientMessage", testSLClientMessage)
|
||||
]
|
||||
|
||||
override func setUp() {
|
|
@ -12,9 +12,11 @@ import XCTest
|
|||
@testable import KituraNet
|
||||
@testable import Socket
|
||||
|
||||
class testSLConnection: XCTestCase {
|
||||
class SLConnectionTests: XCTestCase {
|
||||
static let allTests = [
|
||||
("testSLConnection", testSLConnection)
|
||||
("testSLConnection", testSLConnection),
|
||||
("testSLConnectionAdd", testSLConnectionAdd),
|
||||
("testSLConnectionRemove", testSLConnectionRemove),
|
||||
]
|
||||
|
||||
private var connection: SLConnections = SLConnections()
|
|
@ -9,9 +9,21 @@
|
|||
import XCTest
|
||||
@testable import SLChat
|
||||
|
||||
class testSLMessage: XCTestCase {
|
||||
class SLMessageTests: XCTestCase {
|
||||
static let allTests = [
|
||||
("testSLMessage", testSLMessage)
|
||||
("testSLMessage", testSLMessage),
|
||||
("testSLMessageBadRequest", testSLMessageBadRequest),
|
||||
("testSLMessageNotAcceptable", testSLMessageNotAcceptable),
|
||||
("testSLMessageUnsupportedType", testSLMessageUnsupportedType),
|
||||
("testSLMessageBase64", testSLMessageBase64),
|
||||
("testSLMessageConnected", testSLMessageConnected),
|
||||
("testSLMessageDisconnected", testSLMessageDisconnected),
|
||||
("testSLMessageTextMessage", testSLMessageTextMessage),
|
||||
("testSLMessageReadMessage", testSLMessageReadMessage),
|
||||
("testSLMessageStoppedTyping", testSLMessageStoppedTyping),
|
||||
("testSLMessageStart", testSLMessageStart),
|
||||
("testSLMessageRecipients", testSLMessageRecipients),
|
||||
("testSLMessageContent", testSLMessageContent)
|
||||
]
|
||||
|
||||
override func setUp() {
|
||||
|
@ -126,4 +138,29 @@ class testSLMessage: XCTestCase {
|
|||
XCTFail()
|
||||
}
|
||||
}
|
||||
|
||||
func testSLMessageRecipients() {
|
||||
do {
|
||||
let message = try SLMessage("M{A;B;C}Message")
|
||||
guard let recipients = message.recipients else {
|
||||
XCTFail()
|
||||
return
|
||||
}
|
||||
for rec in recipients {
|
||||
print(rec)
|
||||
XCTAssertTrue(["A","B","C"].contains(rec))
|
||||
}
|
||||
} catch {
|
||||
XCTFail()
|
||||
}
|
||||
}
|
||||
|
||||
func testSLMessageContent() {
|
||||
do {
|
||||
let message = try SLMessage("M{A;B;C}Message")
|
||||
XCTAssertTrue(message.content == "Message")
|
||||
} catch {
|
||||
XCTFail()
|
||||
}
|
||||
}
|
||||
}
|
|
@ -9,7 +9,7 @@
|
|||
import XCTest
|
||||
@testable import SLChat
|
||||
|
||||
class testSLService: XCTestCase {
|
||||
class SLServiceTests: XCTestCase {
|
||||
static let allTests = [
|
||||
("testSLService", testSLService)
|
||||
]
|
Loading…
Reference in New Issue