1package bootloader
2
3import (
4 "testing"
5)
6
7func TestNewBootloader_Valid(t *testing.T) {
8 bootloader, err := NewBootloader(BootloaderTypeLimine, 0, "ArchUp")
9
10 if err != nil {
11 t.Fatalf("expected no error, got %v", err)
12 }
13
14 if bootloader.Type() != BootloaderTypeLimine {
15 t.Errorf("expected Limine type")
16 }
17
18 if bootloader.Timeout() != 0 {
19 t.Errorf("expected timeout 0")
20 }
21
22 if bootloader.Branding() != "ArchUp" {
23 t.Errorf("expected branding ArchUp")
24 }
25}
26
27func TestNewBootloader_InvalidTimeout(t *testing.T) {
28 tests := []struct {
29 name string
30 timeout int
31 shouldErr bool
32 }{
33 {"negative timeout", -1, true},
34 {"zero timeout", 0, false},
35 {"valid timeout", 5, false},
36 {"max timeout", 600, false},
37 {"exceed max", 601, true},
38 }
39
40 for _, tt := range tests {
41 t.Run(tt.name, func(t *testing.T) {
42 _, err := NewBootloader(BootloaderTypeLimine, tt.timeout, "Test")
43 if (err != nil) != tt.shouldErr {
44 t.Errorf("expected error=%v, got %v", tt.shouldErr, err)
45 }
46 })
47 }
48}
49
50func TestNewBootloader_InvalidBranding(t *testing.T) {
51 tests := []struct {
52 name string
53 branding string
54 shouldErr bool
55 }{
56 {"empty branding", "", true},
57 {"valid branding", "MyBrand", false},
58 {"too long", "a" + string(make([]byte, 100)), true},
59 }
60
61 for _, tt := range tests {
62 t.Run(tt.name, func(t *testing.T) {
63 _, err := NewBootloader(BootloaderTypeLimine, 0, tt.branding)
64 if (err != nil) != tt.shouldErr {
65 t.Errorf("expected error=%v, got %v", tt.shouldErr, err)
66 }
67 })
68 }
69}
70
71func TestBootloaderType_String(t *testing.T) {
72 tests := []struct {
73 btype BootloaderType
74 want string
75 }{
76 {BootloaderTypeLimine, "Limine"},
77 }
78
79 for _, tt := range tests {
80 if got := tt.btype.String(); got != tt.want {
81 t.Errorf("expected %s, got %s", tt.want, got)
82 }
83 }
84}
85
86func TestBootloader_IsLimine(t *testing.T) {
87 limine, _ := NewBootloader(BootloaderTypeLimine, 0, "Test")
88
89 if !limine.IsLimine() {
90 t.Error("expected Limine")
91 }
92}
93
94func TestBootloader_Equals(t *testing.T) {
95 b1, _ := NewBootloader(BootloaderTypeLimine, 0, "Test")
96 b2, _ := NewBootloader(BootloaderTypeLimine, 0, "Test")
97
98 if !b1.Equals(b2) {
99 t.Error("expected equal bootloaders")
100 }
101
102 if b1.Equals(nil) {
103 t.Error("expected nil to not be equal")
104 }
105}