Add more tests
This commit is contained in:
parent
7bc4040dd9
commit
1823b71a51
|
@ -43,7 +43,7 @@ extension Data {
|
||||||
base32String.removeLast()
|
base32String.removeLast()
|
||||||
}
|
}
|
||||||
|
|
||||||
let result: Data? = base32String.withCString(encodedAs: Unicode.ASCII.self) { (src) in
|
let result: Data? = base32String.withCString(encodedAs: Unicode.UTF8.self) { (src) in
|
||||||
func _strlen(_ str: UnsafePointer<UInt8>) -> Int {
|
func _strlen(_ str: UnsafePointer<UInt8>) -> Int {
|
||||||
var str = str
|
var str = str
|
||||||
var i = 0
|
var i = 0
|
||||||
|
|
|
@ -31,7 +31,9 @@ public struct ULID: Hashable, Equatable, Comparable, CustomStringConvertible {
|
||||||
guard string.count == 26, let data = Data(base32Encoded: "000000" + string) else {
|
guard string.count == 26, let data = Data(base32Encoded: "000000" + string) else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
self.init(ulidData: data.dropFirst(4))
|
withUnsafeMutableBytes(of: &ulid) {
|
||||||
|
$0.copyBytes(from: data.dropFirst(4))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public init(timestamp: Date = Date()) {
|
public init(timestamp: Date = Date()) {
|
||||||
|
|
|
@ -134,6 +134,15 @@ final class Base32Tests: XCTestCase {
|
||||||
XCTAssertEqual("GGGGGGG=", data.base32EncodedString())
|
XCTAssertEqual("GGGGGGG=", data.base32EncodedString())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func testEncodeNoPad() {
|
||||||
|
let bytes: [UInt8] = [
|
||||||
|
0b10000100
|
||||||
|
]
|
||||||
|
let data = Data(bytes: bytes)
|
||||||
|
|
||||||
|
XCTAssertEqual("GG", data.base32EncodedString(padding: false))
|
||||||
|
}
|
||||||
|
|
||||||
// MARK: -
|
// MARK: -
|
||||||
// MARK: Decode
|
// MARK: Decode
|
||||||
|
|
||||||
|
@ -203,6 +212,18 @@ final class Base32Tests: XCTestCase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func testDecodePadding() {
|
||||||
|
let data = Data(base32Encoded: "AM======")
|
||||||
|
XCTAssertNotNil(data)
|
||||||
|
XCTAssertEqual(1, data!.count)
|
||||||
|
XCTAssertEqual(0b01010101, data![0])
|
||||||
|
}
|
||||||
|
|
||||||
|
func testDecodeIncorrectLength() {
|
||||||
|
let data = Data(base32Encoded: "0")
|
||||||
|
XCTAssertNil(data)
|
||||||
|
}
|
||||||
|
|
||||||
// MARK: -
|
// MARK: -
|
||||||
|
|
||||||
static var allTests = [
|
static var allTests = [
|
||||||
|
@ -219,9 +240,12 @@ final class Base32Tests: XCTestCase {
|
||||||
("testEncodePad2", testEncodePad2),
|
("testEncodePad2", testEncodePad2),
|
||||||
("testEncodePad3", testEncodePad3),
|
("testEncodePad3", testEncodePad3),
|
||||||
("testEncodePad4", testEncodePad4),
|
("testEncodePad4", testEncodePad4),
|
||||||
|
("testEncodeNoPad", testEncodeNoPad),
|
||||||
("testDecodeBase32", testDecodeBase32),
|
("testDecodeBase32", testDecodeBase32),
|
||||||
("testDecodeTable", testDecodeTable),
|
("testDecodeTable", testDecodeTable),
|
||||||
("testDecodeInvalidCharacter", testDecodeInvalidCharacter)
|
("testDecodeInvalidCharacter", testDecodeInvalidCharacter),
|
||||||
|
("testDecodePadding", testDecodePadding),
|
||||||
|
("testDecodeIncorrectLength", testDecodeIncorrectLength)
|
||||||
]
|
]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -130,13 +130,13 @@ final class ULIDTests: XCTestCase {
|
||||||
|
|
||||||
func testComparable1() {
|
func testComparable1() {
|
||||||
let lhs = ULID(ulid: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
|
let lhs = ULID(ulid: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
|
||||||
let rhs = ULID(ulid: (0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
|
let rhs = ULID(ulid: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1))
|
||||||
XCTAssertTrue(lhs < rhs)
|
XCTAssertTrue(lhs < rhs)
|
||||||
XCTAssertFalse(lhs > rhs)
|
XCTAssertFalse(lhs > rhs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func testComparable2() {
|
func testComparable2() {
|
||||||
let lhs = ULID(ulid: (0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
|
let lhs = ULID(ulid: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1))
|
||||||
let rhs = ULID(ulid: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
|
let rhs = ULID(ulid: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
|
||||||
XCTAssertFalse(lhs < rhs)
|
XCTAssertFalse(lhs < rhs)
|
||||||
XCTAssertTrue(lhs > rhs)
|
XCTAssertTrue(lhs > rhs)
|
||||||
|
|
Loading…
Reference in New Issue