HaishinKit.swift/Tests/ISO/TSTests.swift

40 lines
2.3 KiB
Swift

import Foundation
import XCTest
@testable import HaishinKit
final class TSTests: XCTestCase {
static let dataWithMetadata: Data = Data([71, 64, 17, 16, 0, 66, 240, 37, 0, 1, 193, 0, 0, 0, 1, 255, 0, 1, 252, 128, 20, 72, 18, 1, 6, 70, 70, 109, 112, 101, 103, 9, 83, 101, 114, 118, 105, 99, 101, 48, 49, 167, 121, 160, 3, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255])
func testTSPacket() {
let packetWithMetadata: TSPacket = TSPacket(data: TSTests.dataWithMetadata)!
XCTAssertEqual(packetWithMetadata.syncByte, TSPacket.defaultSyncByte)
XCTAssertEqual(packetWithMetadata.PID, 17)
XCTAssertEqual(packetWithMetadata.data, TSTests.dataWithMetadata)
}
func testTSReader() {
do {
let bundle: Bundle = Bundle(for: type(of: self))
let url: URL = URL(fileURLWithPath: bundle.path(forResource: "SampleVideo_360x240_5mb/000", ofType: "ts")!)
let reader: TSReader = try TSReader(url: url)
reader.read()
XCTAssertEqual(reader.numberOfPackets, 5984)
} catch {
}
}
func testTSProgramClockReference() {
let data: Data = Data([0, 1, 66, 68, 126, 0])
let (b, e) = TSProgramClockReference.decode(data)
XCTAssertEqual(data, TSProgramClockReference.encode(b, e))
}
func testTSTimestamp() {
XCTAssertEqual(0, TSTimestamp.decode(Data([49, 0, 1, 0, 1])))
XCTAssertEqual(0, TSTimestamp.decode(Data([17, 0, 1, 0, 1])))
XCTAssertEqual(Data([49, 0, 1, 0, 1]), TSTimestamp.encode(0, TSTimestamp.PTSDTSMask))
XCTAssertEqual(Data([17, 0, 1, 0, 1]), TSTimestamp.encode(0, TSTimestamp.PTSMask))
}
}