40 lines
1.2 KiB
Go
40 lines
1.2 KiB
Go
// Copyright (c) 2026 Storm Dragon
|
|
// Authors: Storm Dragon, Angus Kola
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
package atspi
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
func TestDeferredLiveRegionLifetime(t *testing.T) {
|
|
var store deferredLiveRegionStore
|
|
for index := range 40 {
|
|
store.remember(testID(fmt.Sprintf("/region/%d", index)), testID("/document"))
|
|
}
|
|
if len(store) != 32 {
|
|
t.Fatalf("unbounded deferred state: %d", len(store))
|
|
}
|
|
if _, found := store.take(testID("/region/0")); found {
|
|
t.Fatal("oldest entry not evicted")
|
|
}
|
|
store.remember(testID("/region/39"), testID("/document"))
|
|
if len(store) != 32 {
|
|
t.Fatal("duplicate added a second entry")
|
|
}
|
|
document, found := store.take(testID("/region/39"))
|
|
if !found || document != testID("/document") {
|
|
t.Fatal("lost deferred owner")
|
|
}
|
|
if _, found = store.take(testID("/region/39")); found {
|
|
t.Fatal("completed update remained deferred")
|
|
}
|
|
store.remember(testID("/other_region"), testID("/other_document"))
|
|
store.forget_document(testID("/document"))
|
|
if len(store) != 1 || store[0].document != testID("/other_document") {
|
|
t.Fatal("document retirement retained old entries or removed another document")
|
|
}
|
|
}
|