1package ansiterm
2
3import (
4	"testing"
5)
6
7func createTestParser(s string) (*AnsiParser, *TestAnsiEventHandler) {
8	evtHandler := CreateTestAnsiEventHandler()
9	parser := CreateParser(s, evtHandler)
10
11	return parser, evtHandler
12}
13
14func validateState(t *testing.T, actualState state, expectedStateName string) {
15	actualName := "Nil"
16
17	if actualState != nil {
18		actualName = actualState.Name()
19	}
20
21	if actualName != expectedStateName {
22		t.Errorf("Invalid state: '%s' != '%s'", actualName, expectedStateName)
23	}
24}
25
26func validateFuncCalls(t *testing.T, actualCalls []string, expectedCalls []string) {
27	actualCount := len(actualCalls)
28	expectedCount := len(expectedCalls)
29
30	if actualCount != expectedCount {
31		t.Errorf("Actual   calls: %v", actualCalls)
32		t.Errorf("Expected calls: %v", expectedCalls)
33		t.Errorf("Call count error: %d != %d", actualCount, expectedCount)
34		return
35	}
36
37	for i, v := range actualCalls {
38		if v != expectedCalls[i] {
39			t.Errorf("Actual   calls: %v", actualCalls)
40			t.Errorf("Expected calls: %v", expectedCalls)
41			t.Errorf("Mismatched calls: %s != %s with lengths %d and %d", v, expectedCalls[i], len(v), len(expectedCalls[i]))
42		}
43	}
44}
45
46func fillContext(context *ansiContext) {
47	context.currentChar = 'A'
48	context.paramBuffer = []byte{'C', 'D', 'E'}
49	context.interBuffer = []byte{'F', 'G', 'H'}
50}
51
52func validateEmptyContext(t *testing.T, context *ansiContext) {
53	var expectedCurrChar byte = 0x0
54	if context.currentChar != expectedCurrChar {
55		t.Errorf("Currentchar mismatch '%#x' != '%#x'", context.currentChar, expectedCurrChar)
56	}
57
58	if len(context.paramBuffer) != 0 {
59		t.Errorf("Non-empty parameter buffer: %v", context.paramBuffer)
60	}
61
62	if len(context.paramBuffer) != 0 {
63		t.Errorf("Non-empty intermediate buffer: %v", context.interBuffer)
64	}
65
66}
67