TM-SGNL-iOS/SignalServiceKit/tests/Util/Data+SSKTest.swift
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

61 lines
2.6 KiB
Swift

//
// Copyright 2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
import XCTest
@testable import SignalServiceKit
class DataSSKTests: XCTestCase {
func testUUID() {
let dataValue = Data(0...16)
let testCases: [(String, Data)] = [
("00010203-0405-0607-0809-0A0B0C0D0E0F", dataValue),
// Test an unaligned load
("01020304-0506-0708-090A-0B0C0D0E0F10", dataValue.dropFirst())
]
for (expectedValue, uuidData) in testCases {
XCTAssertEqual(UUID(data: uuidData)?.uuidString, expectedValue)
let tupleResult = UUID.from(data: uuidData)
XCTAssertEqual(tupleResult?.0.uuidString, expectedValue)
XCTAssertEqual(tupleResult?.1, 16)
}
}
func testFixedWidthInteger() {
let dataValue = Data(1...9)
let testCases: [(UInt64, Data)] = [
// Test byte ordering and considering all bytes
(0x01_02_03_04_05_06_07_08, dataValue),
// Test an unaligned load
(0x02_03_04_05_06_07_08_09, dataValue.dropFirst())
]
for (expectedValue, bigEndianData) in testCases {
XCTAssertEqual(UInt64(bigEndianData: bigEndianData), expectedValue)
let tupleResult = UInt64.from(bigEndianData: bigEndianData)
XCTAssertEqual(tupleResult?.0, expectedValue)
XCTAssertEqual(tupleResult?.1, 8)
}
}
func testBase64EncodedStringWithoutPadding() {
XCTAssertEqual(Data(count: 0).base64EncodedStringWithoutPadding(), "")
XCTAssertEqual(Data(count: 1).base64EncodedStringWithoutPadding(), "AA")
XCTAssertEqual(Data(count: 2).base64EncodedStringWithoutPadding(), "AAA")
XCTAssertEqual(Data(count: 3).base64EncodedStringWithoutPadding(), "AAAA")
XCTAssertEqual(Data(count: 4).base64EncodedStringWithoutPadding(), "AAAAAA")
}
// This does not confirm it's constant time. Just that it correctly checks equality.
func testConstantTimeEqual() {
XCTAssertFalse(Data(count: 5).ows_constantTimeIsEqual(to: Data([1, 2, 3, 4, 5])))
XCTAssertTrue(Data([255, 254, 253, 252]).ows_constantTimeIsEqual(to: Data([255, 254, 253, 252])))
XCTAssertFalse(Data([255, 254, 253, 252]).ows_constantTimeIsEqual(to: Data([255, 254, 253, 252, 251])))
XCTAssertFalse(Data([255, 254, 253, 252, 251]).ows_constantTimeIsEqual(to: Data([255, 254, 253, 252])))
XCTAssertFalse(Data([1]).ows_constantTimeIsEqual(to: Data()))
XCTAssertFalse(Data().ows_constantTimeIsEqual(to: Data([1])))
XCTAssertTrue(Data().ows_constantTimeIsEqual(to: Data()))
}
}