Files
BitTorrentSwift/BitTorrent/File Manager/TorrentFileManagerTests.swift
T

73 lines
2.2 KiB
Swift

//
// TorrentFileManagerTests.swift
// BitTorrentTests
//
// Created by Ben Davis on 13/08/2017.
// Copyright © 2017 Ben Davis. All rights reserved.
//
import XCTest
@testable import BitTorrent
class TorrentFileManagerTests: XCTestCase {
let metaInfo: TorrentMetaInfo = {
let path = Bundle(for: TorrentProgressManagerTests.self).path(forResource: "BigTorrentTest",
ofType: "torrent")
let data = try! Data(contentsOf: URL(fileURLWithPath: path!))
return TorrentMetaInfo(data: data)!
}()
let piece1: Data = {
let path = Bundle(for: TorrentProgressManagerTests.self).path(forResource: "Data",
ofType: "bin")
return try! Data(contentsOf: URL(fileURLWithPath: path!))
}()
var fileHandle: FileHandleFake!
var sut: TorrentFileManager!
override func setUp() {
super.setUp()
fileHandle = FileHandleFake(data: Data(repeating: 0, count: metaInfo.info.length))
sut = TorrentFileManager(metaInfo: metaInfo, rootDirectory: "/", fileHandles: [fileHandle])
}
func test_canSetPiece() {
// Given
let pieceLength = metaInfo.info.pieceLength
// When
sut.setPiece(at: 1, data: piece1)
// Then
XCTAssertEqualData(fileHandle.data.correctingIndicies[pieceLength..<pieceLength*2], piece1)
}
func test_canGetPiece() {
// Given
sut.setPiece(at: 1, data: piece1)
// When
let result = sut.getPiece(at: 1)
// Then
XCTAssertEqualData(result, piece1)
}
// Really slow test (takes ~3.5 seconds)
// TODO: Need to create a smaller torrent with multiple pieces to verify against
// func test_canGetProgressFromFile() {
//
// var expected = BitField(size: metaInfo.info.pieces.count)
// expected.set(at: 1)
//
// sut.setPiece(at: 1, data: piece1)
//
// let result = sut.reCheckProgress()
//
// XCTAssertEqual(result, expected)
// }
}