Decoder approach is kept.

Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
This commit is contained in:
Adam Rocska 2020-05-05 13:33:20 +02:00
parent a3eaa2b8c9
commit d71a736207
4 changed files with 21 additions and 15 deletions

View File

@ -0,0 +1,11 @@
import Foundation
class MaxMindDecoder {
enum Endianness { case big, little }
let input: Endianness
init(inputEndianness: Endianness) { self.input = inputEndianness }
}

View File

@ -1,17 +1,6 @@
import Foundation
/**
# NumericDecoder
Unit capable of decoding MaxMind DB's specific unorthodox way of storing data.
It's able to unpack the php style random byte sized "strongly typed" values.
*/
class NumericDecoder {
enum Endianness { case big, little }
private let input: Endianness
init(inputEndianness: Endianness) { self.input = inputEndianness }
extension MaxMindDecoder {
private func getLeadingByte(_ data: Data) -> Data.Element? {
return input == .big ? data.first : data.last
@ -64,4 +53,3 @@ class NumericDecoder {
}
}

View File

@ -0,0 +1,7 @@
import Foundation
extension MaxMindDecoder {
func decode(_ data: Data) -> String {
return String(data: data, encoding: .utf8) ?? ""
}
}

View File

@ -4,8 +4,8 @@ import XCTest
class NumericDecoderTest: XCTestCase {
private let bigEndianDecoder = NumericDecoder(inputEndianness: .big)
private let littleEndianDecoder = NumericDecoder(inputEndianness: .little)
private let bigEndianDecoder = MaxMindDecoder(inputEndianness: .big)
private let littleEndianDecoder = MaxMindDecoder(inputEndianness: .little)
func testDecode_uInt16() {
for (expected, input) in testSpecs_uInt16 {