2024-MacC-M14-Medio / ShazamExtractor / Tests / ShazamExtractorTests / GenerateSignaturesTest.swift
GenerateSignaturesTest.swift
Raw
//
//  GenerateSignaturesTest.swift
//  ShazamExtractor
//
//  Created by  on 11/1/24.
//

import Foundation
@testable import ShazamExtractor
import ShazamKit
import Testing

struct GenerateSignaturesTestCase {
    let youtubeURLString: String
    let videoID: String
    let totalLength: Int
}

struct GenerateSignaturesTest {
    
    @Test("Generate Signatures of External Audio File", arguments: testCases)
    func generateSignaturesTest(testCase: GenerateSignaturesTestCase) async throws {
        guard let externalURL = try await URLConverter(urlString: testCase.youtubeURLString).convert() else {
            throw SqooperError.urlConverterError
        }
        
        let signatureGenerator = SignatureGenerator(
            videoID: testCase.videoID,
            totalLength: testCase.totalLength
        )
        
        let signatures = try await signatureGenerator.generateSignatures(
            audioURL: externalURL,
            splittingMinute: 2.0,
            segmentDuration: 12.0
        )
        
        #expect(type(of: signatures) == Array<SHSignature>.self)
    }
    
    static let testCases = [
        GenerateSignaturesTestCase(
            youtubeURLString: "https://www.youtube.com/watch?v=4HZ8wh2MMpQ",
            videoID: "4HZ8wh2MMpQ",
            totalLength: 204
        ),
        GenerateSignaturesTestCase(
            youtubeURLString: "https://www.youtube.com/watch?v=YyY1T6IkOYg",
            videoID: "YyY1T6IkOYg",
            totalLength: 3675
        )
    ]
}