1package packages
2
3import (
4 "testing"
5)
6
7// Kernel Tests
8
9func TestNewKernel_Valid(t *testing.T) {
10 tests := []KernelVariant{
11 KernelStable,
12 KernelZen,
13 KernelLTS,
14 KernelHardened,
15 KernelCachyOS,
16 }
17
18 for _, variant := range tests {
19 t.Run(variant.String(), func(t *testing.T) {
20 kernel, err := NewKernel(variant)
21
22 if err != nil {
23 t.Fatalf("expected no error, got %v", err)
24 }
25
26 if kernel.Variant() != variant {
27 t.Errorf("expected variant %v", variant)
28 }
29 })
30 }
31}
32
33func TestKernelVariant_String(t *testing.T) {
34 tests := []struct {
35 variant KernelVariant
36 want string
37 }{
38 {KernelStable, "linux"},
39 {KernelZen, "linux-zen"},
40 {KernelLTS, "linux-lts"},
41 {KernelHardened, "linux-hardened"},
42 {KernelCachyOS, "linux-cachyos"},
43 }
44
45 for _, tt := range tests {
46 if got := tt.variant.String(); got != tt.want {
47 t.Errorf("expected %s, got %s", tt.want, got)
48 }
49 }
50}
51
52func TestKernel_PackageName(t *testing.T) {
53 kernel, _ := NewKernel(KernelZen)
54
55 if kernel.PackageName() != "linux-zen" {
56 t.Errorf("expected linux-zen package name")
57 }
58}
59
60func TestKernel_Equals(t *testing.T) {
61 k1, _ := NewKernel(KernelZen)
62 k2, _ := NewKernel(KernelZen)
63 k3, _ := NewKernel(KernelLTS)
64
65 if !k1.Equals(k2) {
66 t.Error("expected equal kernels")
67 }
68
69 if k1.Equals(k3) {
70 t.Error("expected different kernels")
71 }
72
73 if k1.Equals(nil) {
74 t.Error("expected nil to not be equal")
75 }
76}
77
78func TestKernelVariant_IsLTS(t *testing.T) {
79 tests := []struct {
80 variant KernelVariant
81 isLTS bool
82 }{
83 {KernelStable, false},
84 {KernelZen, false},
85 {KernelLTS, true},
86 {KernelHardened, false},
87 {KernelCachyOS, false},
88 }
89
90 for _, tt := range tests {
91 if got := tt.variant.IsLTS(); got != tt.isLTS {
92 t.Errorf("%s: expected IsLTS=%v, got %v", tt.variant, tt.isLTS, got)
93 }
94 }
95}
96
97func TestKernelVariant_IsHardened(t *testing.T) {
98 tests := []struct {
99 variant KernelVariant
100 hardened bool
101 }{
102 {KernelStable, false},
103 {KernelZen, false},
104 {KernelLTS, false},
105 {KernelHardened, true},
106 {KernelCachyOS, false},
107 }
108
109 for _, tt := range tests {
110 if got := tt.variant.IsHardened(); got != tt.hardened {
111 t.Errorf("%s: expected IsHardened=%v, got %v", tt.variant, tt.hardened, got)
112 }
113 }
114}
115
116func TestAvailableKernels(t *testing.T) {
117 kernels := AvailableKernels()
118
119 if len(kernels) != 5 {
120 t.Errorf("expected 5 kernels, got %d", len(kernels))
121 }
122
123 expected := []KernelVariant{
124 KernelStable,
125 KernelZen,
126 KernelLTS,
127 KernelHardened,
128 KernelCachyOS,
129 }
130
131 for i, exp := range expected {
132 if kernels[i] != exp {
133 t.Errorf("expected kernel %v at index %d, got %v", exp, i, kernels[i])
134 }
135 }
136}
137
138// Repository Tests
139
140func TestNewRepository_Valid(t *testing.T) {
141 repo, err := NewRepository(true, AURHelperParu)
142
143 if err != nil {
144 t.Fatalf("expected no error, got %v", err)
145 }
146
147 if !repo.EnableMultilib() {
148 t.Error("expected multilib enabled")
149 }
150
151 if repo.AURHelper() != AURHelperParu {
152 t.Error("expected paru AUR helper")
153 }
154}
155
156func TestNewRepository_AllCombinations(t *testing.T) {
157 tests := []struct {
158 name string
159 multilib bool
160 helper AURHelper
161 }{
162 {"minimal", false, AURHelperParu},
163 {"multilib", true, AURHelperParu},
164 {"with yay", true, AURHelperYay},
165 }
166
167 for _, tt := range tests {
168 t.Run(tt.name, func(t *testing.T) {
169 repo, err := NewRepository(tt.multilib, tt.helper)
170
171 if err != nil {
172 t.Fatalf("expected no error, got %v", err)
173 }
174
175 if repo.EnableMultilib() != tt.multilib {
176 t.Errorf("expected multilib=%v", tt.multilib)
177 }
178
179 if repo.AURHelper() != tt.helper {
180 t.Errorf("expected helper %v", tt.helper)
181 }
182 })
183 }
184}
185
186func TestAURHelper_String(t *testing.T) {
187 tests := []struct {
188 helper AURHelper
189 want string
190 }{
191 {AURHelperParu, "paru"},
192 {AURHelperYay, "yay"},
193 }
194
195 for _, tt := range tests {
196 if got := tt.helper.String(); got != tt.want {
197 t.Errorf("expected %s, got %s", tt.want, got)
198 }
199 }
200}
201
202func TestRepository_Equals(t *testing.T) {
203 r1, _ := NewRepository(true, AURHelperParu)
204 r2, _ := NewRepository(true, AURHelperParu)
205 r3, _ := NewRepository(true, AURHelperYay)
206
207 if !r1.Equals(r2) {
208 t.Error("expected equal repositories")
209 }
210
211 if r1.Equals(r3) {
212 t.Error("expected different repositories")
213 }
214
215 if r1.Equals(nil) {
216 t.Error("expected nil to not be equal")
217 }
218}