mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-01 15:45:38 +00:00
9576b659d7
These fields are no longer needed with the new text shaper. Advances is redundant to the glyph information, and Text should never be used during layout, as you should traverse the cluster list instead. This commit also removed the now-unused string field from the path LRU cache key. References: https://todo.sr.ht/~eliasnaur/gio/146 Signed-off-by: Chris Waldon <christopher.waldon.dev@gmail.com>
55 lines
1.0 KiB
Go
55 lines
1.0 KiB
Go
// SPDX-License-Identifier: Unlicense OR MIT
|
|
|
|
package text
|
|
|
|
import (
|
|
"strconv"
|
|
"testing"
|
|
|
|
"gioui.org/op/clip"
|
|
)
|
|
|
|
func TestLayoutLRU(t *testing.T) {
|
|
c := new(layoutCache)
|
|
put := func(i int) {
|
|
c.Put(layoutKey{str: strconv.Itoa(i)}, nil)
|
|
}
|
|
get := func(i int) bool {
|
|
_, ok := c.Get(layoutKey{str: strconv.Itoa(i)})
|
|
return ok
|
|
}
|
|
testLRU(t, put, get)
|
|
}
|
|
|
|
func TestPathLRU(t *testing.T) {
|
|
c := new(pathCache)
|
|
put := func(i int) {
|
|
c.Put(pathKey{gidHash: uint64(i)}, Layout{Runes: Range{Count: i}}, clip.PathSpec{})
|
|
}
|
|
get := func(i int) bool {
|
|
_, ok := c.Get(pathKey{gidHash: uint64(i)}, Layout{Runes: Range{Count: i}})
|
|
return ok
|
|
}
|
|
testLRU(t, put, get)
|
|
}
|
|
|
|
func testLRU(t *testing.T, put func(i int), get func(i int) bool) {
|
|
for i := 0; i < maxSize; i++ {
|
|
put(i)
|
|
}
|
|
for i := 0; i < maxSize; i++ {
|
|
if !get(i) {
|
|
t.Fatalf("key %d was evicted", i)
|
|
}
|
|
}
|
|
put(maxSize)
|
|
for i := 1; i < maxSize+1; i++ {
|
|
if !get(i) {
|
|
t.Fatalf("key %d was evicted", i)
|
|
}
|
|
}
|
|
if i := 0; get(i) {
|
|
t.Fatalf("key %d was not evicted", i)
|
|
}
|
|
}
|