-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmain_test.go
More file actions
128 lines (108 loc) · 2.83 KB
/
main_test.go
File metadata and controls
128 lines (108 loc) · 2.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package main
import (
"runtime"
"testing"
)
func TestGetCurrentInputSource(t *testing.T) {
current := getCurrentInputSource()
if current == "" {
t.Error("getCurrentInputSource() returned empty string")
}
}
func TestGetAllInputSources(t *testing.T) {
sources := getAllInputSources()
if sources == nil {
t.Error("getAllInputSources() returned nil")
return
}
if len(sources) == 0 {
t.Error("getAllInputSources() returned empty slice")
}
}
func TestSetInputSourceWithInvalidID(t *testing.T) {
invalidID := "invalid-input-source-id-that-should-not-exist"
result := setInputSource(invalidID)
if result {
t.Error("setInputSource() should return false for invalid input source")
}
}
func TestSetInputSourceWithCurrentID(t *testing.T) {
current := getCurrentInputSource()
if current == "" {
t.Skip("Cannot get current input source, skipping test")
}
result := setInputSource(current)
if !result {
t.Error("setInputSource() should return true when setting to current input source")
}
}
func TestPlatformSpecificFunctions(t *testing.T) {
if runtime.GOOS == "darwin" {
testDarwinFunctions(t)
} else if runtime.GOOS == "linux" {
testLinuxFunctions(t)
} else {
t.Skip("Unsupported platform")
}
}
func testDarwinFunctions(t *testing.T) {
current := getCurrentInputSource()
if current == "" {
t.Error("macOS getCurrentInputSource() returned empty string")
}
sources := getAllInputSources()
if len(sources) == 0 {
t.Error("macOS getAllInputSources() returned no sources")
}
found := false
for _, source := range sources {
if source == current {
found = true
break
}
}
if !found {
t.Error("Current input source not found in available sources list")
}
}
func testLinuxFunctions(t *testing.T) {
current := getCurrentInputSource()
if current == "" {
t.Error("Linux getCurrentInputSource() returned empty string")
}
sources := getAllInputSources()
if len(sources) == 0 {
t.Error("Linux getAllInputSources() returned no sources")
}
}
func TestInputSourceToggling(t *testing.T) {
originalSource := getCurrentInputSource()
if originalSource == "" {
t.Skip("Cannot get current input source, skipping toggle test")
}
sources := getAllInputSources()
if len(sources) < 2 {
t.Skip("Need at least 2 input sources for toggle test")
}
var alternativeSource string
for _, source := range sources {
if source != originalSource {
alternativeSource = source
break
}
}
if alternativeSource == "" {
t.Skip("Could not find alternative input source")
}
if !setInputSource(alternativeSource) {
t.Error("Failed to switch to alternative input source")
return
}
current := getCurrentInputSource()
if current != alternativeSource {
t.Errorf("Expected input source %s, got %s", alternativeSource, current)
}
if !setInputSource(originalSource) {
t.Error("Failed to restore original input source")
}
}