Added decode string
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user