Merge fffa7a7a12f46b89851a9600902ec0e6676d4445 into 9b84b361225facd8e623f25d76f889d3dc54a879

This commit is contained in:
Taksh Kothari 2026-08-11 09:05:57 +02:00 committed by GitHub
commit 9d30787265
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -0,0 +1,87 @@
//
// BoundedIDSetTests.swift
// bitchatTests
//
// Tests for BoundedIDSet insertion-ordered eviction
//
import Testing
@testable import bitchat
struct BoundedIDSetTests {
@Test func insertReturnsTrueForNewID() {
var set = BoundedIDSet(capacity: 3)
#expect(set.insert("a") == true)
#expect(set.contains("a"))
}
@Test func insertReturnsFalseForAlreadyPresentID() {
var set = BoundedIDSet(capacity: 3)
set.insert("a")
#expect(set.insert("a") == false)
}
@Test func containsIsFalseForUnknownID() {
let set = BoundedIDSet(capacity: 3)
#expect(set.contains("missing") == false)
}
@Test func evictsOldestWhenOverCapacity() {
var set = BoundedIDSet(capacity: 2)
set.insert("a")
set.insert("b")
set.insert("c")
#expect(set.contains("a") == false)
#expect(set.contains("b"))
#expect(set.contains("c"))
}
@Test func evictedIDCanBeReinserted() {
var set = BoundedIDSet(capacity: 1)
set.insert("a")
set.insert("b") // evicts "a"
#expect(set.insert("a") == true)
#expect(set.contains("a"))
#expect(set.contains("b") == false)
}
@Test func stayingUnderCapacityKeepsEverything() {
var set = BoundedIDSet(capacity: 5)
for id in ["a", "b", "c"] {
set.insert(id)
}
#expect(set.contains("a"))
#expect(set.contains("b"))
#expect(set.contains("c"))
}
@Test func capacityOneKeepsOnlyMostRecentID() {
var set = BoundedIDSet(capacity: 1)
set.insert("a")
set.insert("b")
set.insert("c")
#expect(set.contains("a") == false)
#expect(set.contains("b") == false)
#expect(set.contains("c"))
}
@Test func duplicateInsertDoesNotDisturbEvictionOrder() {
// Re-inserting an already-present ID is a no-op (returns false) and
// must not move it in the eviction queue or add a second entry.
var set = BoundedIDSet(capacity: 2)
set.insert("a")
set.insert("b")
set.insert("a") // no-op: "a" is already present
set.insert("c") // over capacity: should evict "a" (still the oldest)
#expect(set.contains("a") == false)
#expect(set.contains("b"))
#expect(set.contains("c"))
}
}