GeoIP2-swift/Tests/Unit/MetadataReaderTests/FunctionDecodeTest.swift

113 lines
4.5 KiB
Swift

import Foundation
import XCTest
import TestResources
@testable import MetadataReader
class FunctionDecodeTest: XCTestCase {
func testInit_nilIfCantCreateIterator() {
XCTAssertNil(decode(Data(), metadataSectionSize: 0, databaseSize: 0))
}
func testInit_nilIfCantFetchFirstControlByte() {
XCTAssertNil(decode(Data([0b0000_1111]), metadataSectionSize: 0, databaseSize: 0))
}
func testInit_nilIfFirstControlByteIsNotMap() {
XCTAssertNil(decode(Data([0b0010_1111]), metadataSectionSize: 0, databaseSize: 0))
}
func testInit_withBinary() {
guard let metadata = decode(binaryMetaData, metadataSectionSize: 0, databaseSize: 0) else {
XCTFail("Input binary is valid. Should have constructed a proper struct.")
return
}
XCTAssertEqual(expectedMetaData, metadata)
XCTAssertEqual(expectedMetaData.nodeByteSize, metadata.nodeByteSize)
XCTAssertEqual(expectedMetaData.searchTreeSize, metadata.searchTreeSize)
XCTAssertEqual(expectedMetaData.dataSectionSize, metadata.dataSectionSize)
}
}
fileprivate let expectedMetaData = Metadata(
nodeCount: 618459,
recordSize: 24,
ipVersion: 6,
databaseType: "GeoLite2-Country",
languages: ["de", "en", "es", "fr", "ja", "pt-BR", "ru", "zh-CN"],
binaryFormatMajorVersion: 2,
binaryFormatMinorVersion: 0,
buildEpoch: 1587472614,
description: ["en": "GeoLite2 Country database"],
metadataSectionSize: 0,
databaseSize: 0
)
fileprivate let binaryMetaData = Data(
[
0b11101001, // control byte
0b01011011, 0b01100010, 0b01101001, 0b01101110,
0b01100001, 0b01110010, 0b01111001, 0b01011111,
0b01100110, 0b01101111, 0b01110010, 0b01101101,
0b01100001, 0b01110100, 0b01011111, 0b01101101,
0b01100001, 0b01101010, 0b01101111, 0b01110010,
0b01011111, 0b01110110, 0b01100101, 0b01110010,
0b01110011, 0b01101001, 0b01101111, 0b01101110,
0b10100001, 0b00000010, 0b01011011, 0b01100010,
0b01101001, 0b01101110, 0b01100001, 0b01110010,
0b01111001, 0b01011111, 0b01100110, 0b01101111,
0b01110010, 0b01101101, 0b01100001, 0b01110100,
0b01011111, 0b01101101, 0b01101001, 0b01101110,
0b01101111, 0b01110010, 0b01011111, 0b01110110,
0b01100101, 0b01110010, 0b01110011, 0b01101001,
0b01101111, 0b01101110, 0b10100000, 0b01001011,
0b01100010, 0b01110101, 0b01101001, 0b01101100,
0b01100100, 0b01011111, 0b01100101, 0b01110000,
0b01101111, 0b01100011, 0b01101000, 0b00000100,
0b00000010, 0b01011110, 0b10011110, 0b11101000,
0b11100110, 0b01001101, 0b01100100, 0b01100001,
0b01110100, 0b01100001, 0b01100010, 0b01100001,
0b01110011, 0b01100101, 0b01011111, 0b01110100,
0b01111001, 0b01110000, 0b01100101, 0b01010000,
0b01000111, 0b01100101, 0b01101111, 0b01001100,
0b01101001, 0b01110100, 0b01100101, 0b00110010,
0b00101101, 0b01000011, 0b01101111, 0b01110101,
0b01101110, 0b01110100, 0b01110010, 0b01111001,
0b01001011, 0b01100100, 0b01100101, 0b01110011,
0b01100011, 0b01110010, 0b01101001, 0b01110000,
0b01110100, 0b01101001, 0b01101111, 0b01101110,
0b11100001, 0b01000010, 0b01100101, 0b01101110,
0b01011001, 0b01000111, 0b01100101, 0b01101111,
0b01001100, 0b01101001, 0b01110100, 0b01100101,
0b00110010, 0b00100000, 0b01000011, 0b01101111,
0b01110101, 0b01101110, 0b01110100, 0b01110010,
0b01111001, 0b00100000, 0b01100100, 0b01100001,
0b01110100, 0b01100001, 0b01100010, 0b01100001,
0b01110011, 0b01100101, 0b01001010, 0b01101001,
0b01110000, 0b01011111, 0b01110110, 0b01100101,
0b01110010, 0b01110011, 0b01101001, 0b01101111,
0b01101110, 0b10100001, 0b00000110, 0b01001001,
0b01101100, 0b01100001, 0b01101110, 0b01100111,
0b01110101, 0b01100001, 0b01100111, 0b01100101,
0b01110011, 0b00001000, 0b00000100, 0b01000010,
0b01100100, 0b01100101, 0b01000010, 0b01100101,
0b01101110, 0b01000010, 0b01100101, 0b01110011,
0b01000010, 0b01100110, 0b01110010, 0b01000010,
0b01101010, 0b01100001, 0b01000101, 0b01110000,
0b01110100, 0b00101101, 0b01000010, 0b01010010,
0b01000010, 0b01110010, 0b01110101, 0b01000101,
0b01111010, 0b01101000, 0b00101101, 0b01000011,
0b01001110, 0b01001010, 0b01101110, 0b01101111,
0b01100100, 0b01100101, 0b01011111, 0b01100011,
0b01101111, 0b01110101, 0b01101110, 0b01110100,
0b11000011, 0b00001001, 0b01101111, 0b11011011,
0b01001011, 0b01110010, 0b01100101, 0b01100011,
0b01101111, 0b01110010, 0b01100100, 0b01011111,
0b01110011, 0b01101001, 0b01111010, 0b01100101,
0b10100001, 0b00011000
]
)