Files
StickerSlack/StickerSlackTests/StickerSlackTests.swift
neon443 ff123811a0 ultra parallelised download all in sticker vailidation performance Test
the issue is that the counter doesnt work, and that it does crash if the network request times out 😭
2025-10-30 22:30:54 +00:00

88 lines
2.8 KiB
Swift

//
// StickerSlackTests.swift
// StickerSlackTests
//
// Created by neon443 on 29/10/2025.
//
import Testing
import Foundation
struct StickerSlackTests {
var hoarder = EmojiHoarder()
@Test func MSStickerValidation() async throws {
let goodEmoji = Emoji(apiEmoji: ApiEmoji(name: "name", url: "https://neon443.github.io/images/fav.ico"), id: UUID(uuidString: "0c48f4c3-1c63-41ed-96db-909e50e35dfc")!)
let _ = try! await goodEmoji.downloadImage()
#expect(goodEmoji.sticker!.validate(), "should be true")
let badEmoji = Emoji(apiEmoji: ApiEmoji(name: "160chars:shttps://emoji.slack-edge.com/T0266FRGM/100906/ddeb22d813b83b0f.pngs,sexpirationfds2025-10-28T08:00:02.011Zs},{gtypeh:jemojieeeidggg9cab2003-ad74-492a-", url: "https://files.catbox.moe/ifh710.png"), id: UUID(uuidString: "0c48f4c3-1c63-41ed-96db-909e50e35dfc")!)
let _ = try! await badEmoji.downloadImage()
#expect(goodEmoji.sticker!.validate(), "should be true")
badEmoji.deleteImage()
}
}
struct PerformanceTests {
var hoarder = EmojiHoarder()
@Test func stickerConversion() async throws {
// Write your test here and use APIs like `#expect(...)` to check expected conditions.
for emoji in hoarder.emojis {
let _ = emoji.sticker
}
}
@Test func localImageURL() async throws {
for emoji in hoarder.emojis {
let _ = emoji.localImageURL
}
}
@Test func filteringEmojis() async throws {
let searchQueries = ["heavysob", "yay", "afsdjk", "afhjskf", "g4", "aqua-osx", "neotunes", "", "", ""]
for query in searchQueries {
print(query)
hoarder.filteredEmojis = []
hoarder.filterEmojis(by: query)
print(hoarder.filteredEmojis.count)
}
}
@Test func MSStickerValidation() async throws {
let downloadedEmojisBefore = hoarder.emojis.filter { $0.isLocal }.map { $0.id }
await withDiscardingTaskGroup { group in
var i = 0
for emoji in hoarder.emojis {
i+=1
group.addTask {
try? await Task.sleep(nanoseconds: 1)
async let (data, _) = try! URLSession.shared.data(from: emoji.remoteImageURL)
try! await data.write(to: emoji.localImageURL)
let _ = emoji.sticker?.validate()
print("\(i)/\(hoarder.emojis.count) \(emoji.name)")
}
}
}
// var i = 0
// for emoji in hoarder.emojis {
// i+=1
// async let (data, _) = try! URLSession.shared.data(from: emoji.remoteImageURL)
// try! await data.write(to: emoji.localImageURL)
// let _ = emoji.sticker?.validate()
// print("\(i)/\(hoarder.emojis.count) \(emoji.name)")
// }
var i = 0
for emoji in hoarder.emojis {
emoji.deleteImage()
guard downloadedEmojisBefore.contains(emoji.id) else { continue }
async let (data, _) = try! URLSession.shared.data(from: emoji.remoteImageURL)
try! await data.write(to: emoji.localImageURL)
print("\(i)/\(downloadedEmojisBefore) \(emoji.name)")
}
}
}