forked from ParisiLabs/wire-ios
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUserClientFingerprintTests.swift
85 lines (70 loc) · 4.13 KB
/
UserClientFingerprintTests.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//
// Wire
// Copyright (C) 2016 Wire Swiss GmbH
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see http://www.gnu.org/licenses/.
//
import XCTest
@testable import Wire
class UserClientFingerprintTests: XCTestCase {
func testThatItMapsOctetCorrectly() {
// given
guard let data = Data(base64Encoded: "VUhVVQ==", options: []) else {
XCTFail()
return
} // String "UHUU"
// when
let result = data.mapBytes(callback: { (char: UInt8) -> (String) in
return String(UnicodeScalar(char))
}).joined(separator: "")
// then
XCTAssertEqual(result, "UHUU")
}
func testThatItMapsWordCorrectly() {
// given
guard let data = Data(base64Encoded: "VUhVVQ==", options: []) else {
XCTFail()
return
} // String "UHUU"
// when
let result = data.mapBytes(callback: { (char: UInt16) -> (String) in
return String(UnicodeScalar(UInt8(truncatingBitPattern: char))) + String(UnicodeScalar(UInt8(truncatingBitPattern: char>>8)))
}).joined(separator: "")
// then
XCTAssertEqual(result, "UHUU")
}
func testThatItMapsLongWordCorrectly() {
// given
let longStringAsText = "Maecenas euismod sollicitudin magna. Nullam pharetra ultricies eros, nec tincidunt nisi auctor id. Nullam pharetra ipsum eget gravida ornare. Curabitur finibus purus libero, at imperdiet massa volutpat ac. Aliquam erat volutpat. Integer at enim sit amet tellus euismod sollicitudin eget et ante. Vestibulum ut pretium turpis, in maximus arcu. Vivamus diam mauris, bibendum mollis est egestas, imperdiet viverra nunc. Quisque consequat purus et purus vehicula placerat. Aenean vitae quam ut lacus rhoncus euismod ac vel tellus. Fusce tellus sapien, pellentesque nec faucibus quis, sodales nec enim. Ut non turpis enim. Fusce fermentum leo nec urna faucibus luctus?."
guard let data = Data(base64Encoded: "TWFlY2VuYXMgZXVpc21vZCBzb2xsaWNpdHVkaW4gbWFnbmEuIE51bGxhbSBwaGFyZXRyYSB1bHRyaWNpZXMgZXJvcywgbmVjIHRpbmNpZHVudCBuaXNpIGF1Y3RvciBpZC4gTnVsbGFtIHBoYXJldHJhIGlwc3VtIGVnZXQgZ3JhdmlkYSBvcm5hcmUuIEN1cmFiaXR1ciBmaW5pYnVzIHB1cnVzIGxpYmVybywgYXQgaW1wZXJkaWV0IG1hc3NhIHZvbHV0cGF0IGFjLiBBbGlxdWFtIGVyYXQgdm9sdXRwYXQuIEludGVnZXIgYXQgZW5pbSBzaXQgYW1ldCB0ZWxsdXMgZXVpc21vZCBzb2xsaWNpdHVkaW4gZWdldCBldCBhbnRlLiBWZXN0aWJ1bHVtIHV0IHByZXRpdW0gdHVycGlzLCBpbiBtYXhpbXVzIGFyY3UuIFZpdmFtdXMgZGlhbSBtYXVyaXMsIGJpYmVuZHVtIG1vbGxpcyBlc3QgZWdlc3RhcywgaW1wZXJkaWV0IHZpdmVycmEgbnVuYy4gUXVpc3F1ZSBjb25zZXF1YXQgcHVydXMgZXQgcHVydXMgdmVoaWN1bGEgcGxhY2VyYXQuIEFlbmVhbiB2aXRhZSBxdWFtIHV0IGxhY3VzIHJob25jdXMgZXVpc21vZCBhYyB2ZWwgdGVsbHVzLiBGdXNjZSB0ZWxsdXMgc2FwaWVuLCBwZWxsZW50ZXNxdWUgbmVjIGZhdWNpYnVzIHF1aXMsIHNvZGFsZXMgbmVjIGVuaW0uIFV0IG5vbiB0dXJwaXMgZW5pbS4gRnVzY2UgZmVybWVudHVtIGxlbyBuZWMgdXJuYSBmYXVjaWJ1cyBsdWN0dXM/Lg==", options: []) else {
XCTFail()
return
} // Long String
// when
let result = data.mapBytes(callback: { (char: UInt16) -> (String) in
let char1 = UInt8(truncatingBitPattern: char)
let char2 = UInt8(truncatingBitPattern: char>>8)
var result = ""
if (char1 != 0) {
result = result + String(UnicodeScalar(char1))
}
if (char2 != 0) {
result = result + String(UnicodeScalar(char2))
}
return result
}).joined(separator: "")
// then
XCTAssertEqual(result, longStringAsText)
}
}