[0.1.0] Setup tests & fix string parsing

This commit is contained in:
Shial 2017-08-21 09:09:59 +10:00
parent 001065cd2b
commit 16040ad8e7
5 changed files with 56 additions and 32 deletions

View File

@ -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) {

View File

@ -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() {

View File

@ -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()

View File

@ -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()
}
}
}

View File

@ -9,7 +9,7 @@
import XCTest
@testable import SLChat
class testSLService: XCTestCase {
class SLServiceTests: XCTestCase {
static let allTests = [
("testSLService", testSLService)
]