Added decode string

This commit is contained in:
Ben Davis
2016-03-12 18:49:20 +00:00
parent 148b68fb37
commit 8faed1ba29
3 changed files with 32 additions and 8 deletions
+11
View File
@@ -66,5 +66,16 @@ public extension BEncoder {
return byteStream.nextBytes(numberOfBytes)!
}
public class func decodeString(data: NSData) throws -> String {
return try self.decodeString(NSDataByteStream(data: data));
}
class func decodeString(byteStream: ByteStream) throws -> String {
let data = try self.decodeByteString(byteStream)
guard let result = String(asciiData: data) else {
throw AsciiError.Invalid
}
return result
}
}
+7 -8
View File
@@ -111,16 +111,15 @@ extension Character {
extension String {
init?(asciiData: NSData) {
self.init(data: asciiData, encoding: NSASCIIStringEncoding)
}
func asciiValue() throws -> NSData {
let data = NSMutableData()
for character in self.utf8 {
if UnicodeScalar(character).isASCII() {
data.appendData(character.toData())
} else {
throw AsciiError.Invalid
}
guard let result = (self as NSString).dataUsingEncoding(NSASCIIStringEncoding) else {
throw AsciiError.Invalid
}
return data
return result
}
}
@@ -117,5 +117,19 @@ class BEncoderDecodeTests: XCTestCase {
}
}
func testDecodeEmptyString() {
let emptyString = ""
let input = BEncoder.encodeString(emptyString)
let result = try! BEncoder.decodeString(input)
XCTAssertEqual(emptyString, result)
}
func testDecodeString() {
let string = "A simple test string"
let input = BEncoder.encodeString(string)
let result = try! BEncoder.decodeString(input)
XCTAssertEqual(string, result)
}
}