github.com/kubri/kubri@v0.5.1-0.20240317001612-bda2aaef967e/integrations/sparkle/os_test.go (about) 1 package sparkle_test 2 3 import ( 4 "errors" 5 "testing" 6 7 "github.com/kubri/kubri/integrations/sparkle" 8 ) 9 10 func TestOS_MarshalText(t *testing.T) { 11 tests := []struct { 12 in sparkle.OS 13 want string 14 err error 15 }{ 16 {sparkle.MacOS, "macos", nil}, 17 {sparkle.Windows, "windows", nil}, 18 {sparkle.Windows64, "windows-x64", nil}, 19 {sparkle.Windows32, "windows-x86", nil}, 20 {sparkle.Unknown, "", nil}, 21 {99, "", sparkle.ErrUnknownOS}, 22 } 23 24 for _, test := range tests { 25 got, err := test.in.MarshalText() 26 if !errors.Is(err, test.err) { 27 t.Errorf("%T(%d): want error '%v' got '%v'", test.in, test.in, test.err, err) 28 } else if string(got) != test.want { 29 t.Errorf("%T(%d): want '%s' got '%s'", test.in, test.in, test.want, got) 30 } 31 } 32 } 33 34 func TestOS_UnmarshalText(t *testing.T) { 35 tests := []struct { 36 in string 37 want sparkle.OS 38 err error 39 }{ 40 {"macos", sparkle.MacOS, nil}, 41 {"windows", sparkle.Windows, nil}, 42 {"windows-x64", sparkle.Windows64, nil}, 43 {"windows-x86", sparkle.Windows32, nil}, 44 {"", sparkle.Unknown, nil}, 45 {"foo", sparkle.Unknown, sparkle.ErrUnknownOS}, 46 } 47 48 for _, test := range tests { 49 var got sparkle.OS 50 err := got.UnmarshalText([]byte(test.in)) 51 if !errors.Is(err, test.err) { 52 t.Errorf("%s: want error '%v' got '%v'", test.in, test.err, err) 53 } else if got != test.want { 54 t.Errorf("%s: want '%s' got '%s'", test.in, test.want, got) 55 } 56 } 57 } 58 59 func TestIsOS(t *testing.T) { 60 tests := []struct { 61 a, b sparkle.OS 62 want bool 63 }{ 64 {sparkle.MacOS, sparkle.MacOS, true}, 65 {sparkle.MacOS, sparkle.Windows, false}, 66 {sparkle.Windows32, sparkle.Windows, true}, 67 {sparkle.Windows64, sparkle.Windows, true}, 68 {sparkle.Unknown, sparkle.MacOS, false}, 69 {sparkle.MacOS, sparkle.Unknown, true}, 70 } 71 72 for _, test := range tests { 73 if got := sparkle.IsOS(test.a, test.b); got != test.want { 74 t.Errorf("%s == %s: want '%t' got '%t'", test.a, test.b, test.want, got) 75 } 76 } 77 } 78 79 func TestDetectOS(t *testing.T) { 80 tests := []struct { 81 in string 82 want sparkle.OS 83 }{ 84 {"test", sparkle.Unknown}, 85 {"test.dmg", sparkle.MacOS}, 86 {"test.pkg", sparkle.MacOS}, 87 {"test.exe", sparkle.Windows}, 88 {"test.msi", sparkle.Windows}, 89 {"test_32bit.exe", sparkle.Windows32}, 90 {"test_x86.msi", sparkle.Windows32}, 91 {"test_i386.msi", sparkle.Windows32}, 92 {"test_ia32.msi", sparkle.Windows32}, 93 {"test_64-bit.exe", sparkle.Windows64}, 94 {"test_x86_64.msi", sparkle.Windows64}, 95 {"test_x64.msi", sparkle.Windows64}, 96 {"test_amd64.msi", sparkle.Windows64}, 97 } 98 99 for _, test := range tests { 100 if got := sparkle.DetectOS(test.in); got != test.want { 101 t.Errorf("%s: want '%s' got '%s'", test.in, test.want, got) 102 } 103 } 104 }