Cthulhu is no longer a fork. Now it is a screen reader written in Golang.
This commit is contained in:
1 parent
a998fe67de
commit
069fc674dc
708 files changed
+112482
-532
No files matched your search
@@ -0,0 +1,46 @@
|
||||
// Copyright (c) 2026 Storm Dragon
|
||||
// Authors: Storm Dragon, Angus Kola
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
package atspi
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestDocumentLinesAreTokens(t *testing.T) {
|
||||
for _, test := range []struct {
|
||||
name, text string
|
||||
lines []TextRange
|
||||
want bool
|
||||
}{
|
||||
{"words", "What's on your mind?", []TextRange{{Start: 0, End: 7, Text: "What's "}, {Start: 7, End: 10, Text: "on "}, {Start: 10, End: 15, Text: "your "}, {Start: 15, End: 20, Text: "mind?"}}, true},
|
||||
{"unicode characters", "é 文", []TextRange{{Start: 0, End: 1, Text: "é"}, {Start: 1, End: 2, Text: " "}, {Start: 2, End: 3, Text: "文"}}, true},
|
||||
{"ordinary lines", "First line\nSecond line", []TextRange{{Start: 0, End: 11, Text: "First line\n"}, {Start: 11, End: 22, Text: "Second line"}}, false},
|
||||
{"one word", "autocomplete", []TextRange{{Start: 0, End: 12, Text: "autocomplete"}}, false},
|
||||
{"embedded objects", "\ufffc\ufffc\ufffc hello", nil, false},
|
||||
{"non advancing provider", "one two", []TextRange{{Start: 0, End: 0, Text: "one"}}, false},
|
||||
} {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
source := fakeReviewText{lines: make(map[int]TextRange)}
|
||||
for _, line := range test.lines {
|
||||
source.lines[line.Start] = line
|
||||
}
|
||||
got, err := documentLinesAreTokens(context.Background(), source, test.text)
|
||||
if err != nil || got != test.want {
|
||||
t.Fatalf("repair = %v, %v; want %v", got, err, test.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestDocumentLinesProbeHonorsCancellation(t *testing.T) {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
source := fakeReviewText{cancel: cancel, lines: map[int]TextRange{0: {Start: 0, End: 2, Text: "a "}, 2: {Start: 2, End: 3, Text: "b"}}}
|
||||
_, err := documentLinesAreTokens(ctx, source, "a b")
|
||||
if !errors.Is(err, context.Canceled) {
|
||||
t.Fatalf("probe error = %v", err)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user