Files
suixinkan_uikit/suixinkanTests/MediaPreviewModelsTests.swift

56 lines
2.3 KiB
Swift

//
// MediaPreviewModelsTests.swift
// suixinkanTests
//
import UIKit
import XCTest
@testable import suixinkan
///
final class MediaPreviewModelsTests: XCTestCase {
func testClampedStartIndexKeepsIndexInBounds() {
XCTAssertEqual(MediaPreviewItem.clampedStartIndex(-3, itemCount: 4), 0)
XCTAssertEqual(MediaPreviewItem.clampedStartIndex(2, itemCount: 4), 2)
XCTAssertEqual(MediaPreviewItem.clampedStartIndex(8, itemCount: 4), 3)
XCTAssertEqual(MediaPreviewItem.clampedStartIndex(8, itemCount: 0), 0)
}
func testRemoteImageAndVideoURLConstructionFiltersInvalidText() {
let image = MediaPreviewItem.remoteImage(" https://cdn.example.com/a.jpg ")
let video = MediaPreviewItem.remoteVideo("https://cdn.example.com/a.mp4")
XCTAssertEqual(image?.mediaType, .image)
XCTAssertEqual(video?.mediaType, .video)
XCTAssertNil(MediaPreviewItem.remoteImage(""))
XCTAssertNil(MediaPreviewItem.remoteImage(" "))
XCTAssertNil(MediaPreviewItem.remoteVideo("file:///tmp/a.mp4"))
XCTAssertNil(MediaPreviewItem.remoteVideo("not a url"))
}
func testLocalImageAndVideoTypeRecognition() {
let localImage = MediaPreviewItem.localImage(url: URL(fileURLWithPath: "/tmp/a.jpg"))
let memoryImage = MediaPreviewItem.image(UIImage())
let localVideo = MediaPreviewItem.localVideo(url: URL(fileURLWithPath: "/tmp/a.mp4"))
XCTAssertTrue(localImage.isImage)
XCTAssertTrue(memoryImage.isImage)
XCTAssertTrue(localVideo.isVideo)
XCTAssertEqual(localVideo.mediaType, .video)
}
func testCurrentItemReadsClampedItemFromMixedMedia() {
let items = [
MediaPreviewItem.localImage(url: URL(fileURLWithPath: "/tmp/a.jpg")),
MediaPreviewItem.localVideo(url: URL(fileURLWithPath: "/tmp/a.mp4")),
MediaPreviewItem.remoteImage("https://cdn.example.com/b.jpg")!,
]
XCTAssertEqual(MediaPreviewItem.currentItem(in: items, startIndex: -1)?.mediaType, .image)
XCTAssertEqual(MediaPreviewItem.currentItem(in: items, startIndex: 1)?.mediaType, .video)
XCTAssertEqual(MediaPreviewItem.currentItem(in: items, startIndex: 99)?.mediaType, .image)
XCTAssertNil(MediaPreviewItem.currentItem(in: [], startIndex: 0))
}
}