Files
Dimitris C cb72197f8e feature(Mp4): Support for non-optimised mp4 (#67)
* 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
2024-04-01 16:02:51 +03:00

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
}
}