cb72197f8e
* initial work for supporting non-optimised mp4 * Update AppCoordinator.swift * some refactor and fixed seek for a restructured mp4 * nit * nit * nit * runs swiftlint * improvements * improvements * handles case where we the stream is not seekable for an mp4 file * better check for mp4, seekable and moov atom * nit * fix an issue with seek * some refactoring
101 lines
2.5 KiB
Swift
101 lines
2.5 KiB
Swift
//
|
|
// BiMapTests.swift
|
|
// AudioStreamingTests
|
|
//
|
|
// Created by Dimitrios Chatzieleftheriou on 26/05/2020.
|
|
// Copyright © 2020 Decimal. All rights reserved.
|
|
//
|
|
|
|
import XCTest
|
|
|
|
@testable import AudioStreaming
|
|
|
|
class BiMapTests: XCTestCase {
|
|
func test_BiMap_Can_Store_And_Retrieve_Values() {
|
|
var map = BiMap<SomeClass, SomeOtherClass>()
|
|
let someClass = SomeClass(item: 0)
|
|
let someOtherClass = SomeOtherClass(item: 0)
|
|
map[someClass] = someOtherClass
|
|
|
|
XCTAssertEqual(map[someClass], someOtherClass)
|
|
XCTAssertEqual(map[someOtherClass], someClass)
|
|
}
|
|
|
|
func test_BiMap_Can_Retrieve_LeftAndRight_Values() {
|
|
var map = BiMap<SomeClass, SomeOtherClass>()
|
|
let someClass = SomeClass(item: 0)
|
|
let someOtherClass = SomeOtherClass(item: 0)
|
|
map[someClass] = someOtherClass
|
|
|
|
XCTAssertEqual(map.leftValues, [someClass])
|
|
XCTAssertEqual(map.rightValues, [someOtherClass])
|
|
}
|
|
|
|
func test_BiMap_Can_Store_Using_Either_Value_As_Key() {
|
|
var map = BiMap<SomeClass, SomeOtherClass>()
|
|
let someClass = SomeClass(item: 0)
|
|
let someOtherClass = SomeOtherClass(item: 0)
|
|
|
|
// Storing using the right value as key
|
|
map[someOtherClass] = someClass
|
|
|
|
// Storing using the left value as key
|
|
map[someClass] = someOtherClass
|
|
|
|
XCTAssertEqual(map[someOtherClass], someClass)
|
|
XCTAssertEqual(map[someClass], someOtherClass)
|
|
}
|
|
|
|
func test_BiMap_Can_Remove_Value_When_Passing_Nil() {
|
|
var map = BiMap<SomeClass, SomeOtherClass>()
|
|
let someClass = SomeClass(item: 0)
|
|
let someOtherClass = SomeOtherClass(item: 0)
|
|
|
|
// Storing using the right value as key
|
|
map[someOtherClass] = someClass
|
|
|
|
// Storing using the left value as key
|
|
map[someClass] = someOtherClass
|
|
|
|
// Setting to nil
|
|
map[someClass] = nil
|
|
|
|
XCTAssert(map.leftValues.isEmpty)
|
|
XCTAssert(map.rightValues.isEmpty)
|
|
}
|
|
}
|
|
|
|
// For Convenience
|
|
|
|
class SomeClass: Hashable {
|
|
static func == (lhs: SomeClass, rhs: SomeClass) -> Bool {
|
|
lhs.item == rhs.item
|
|
}
|
|
|
|
func hash(into hasher: inout Hasher) {
|
|
hasher.combine(item)
|
|
}
|
|
|
|
var item: Int
|
|
|
|
init(item: Int) {
|
|
self.item = item
|
|
}
|
|
}
|
|
|
|
class SomeOtherClass: Hashable {
|
|
static func == (lhs: SomeOtherClass, rhs: SomeOtherClass) -> Bool {
|
|
lhs.item == rhs.item
|
|
}
|
|
|
|
func hash(into hasher: inout Hasher) {
|
|
hasher.combine(item)
|
|
}
|
|
|
|
var item: Int
|
|
|
|
init(item: Int) {
|
|
self.item = item
|
|
}
|
|
}
|