mirror of
https://github.com/henrygd/beszel.git
synced 2026-03-21 21:26:16 +01:00
159 lines
3.6 KiB
Go
159 lines
3.6 KiB
Go
package utils
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestTwoDecimals(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
input float64
|
|
expected float64
|
|
}{
|
|
{"round down", 1.234, 1.23},
|
|
{"round half up", 1.235, 1.24}, // math.Round rounds half up
|
|
{"no rounding needed", 1.23, 1.23},
|
|
{"negative number", -1.235, -1.24}, // math.Round rounds half up (more negative)
|
|
{"zero", 0.0, 0.0},
|
|
{"large number", 123.456, 123.46}, // rounds 5 up
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
result := TwoDecimals(tt.input)
|
|
assert.Equal(t, tt.expected, result)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestBytesToMegabytes(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
input float64
|
|
expected float64
|
|
}{
|
|
{"1 MB", 1048576, 1.0},
|
|
{"512 KB", 524288, 0.5},
|
|
{"zero", 0, 0},
|
|
{"large value", 1073741824, 1024}, // 1 GB = 1024 MB
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
result := BytesToMegabytes(tt.input)
|
|
assert.Equal(t, tt.expected, result)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestBytesToGigabytes(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
input uint64
|
|
expected float64
|
|
}{
|
|
{"1 GB", 1073741824, 1.0},
|
|
{"512 MB", 536870912, 0.5},
|
|
{"0 GB", 0, 0},
|
|
{"2 GB", 2147483648, 2.0},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
result := BytesToGigabytes(tt.input)
|
|
assert.Equal(t, tt.expected, result)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestFileFunctions(t *testing.T) {
|
|
tmpDir := t.TempDir()
|
|
testFilePath := filepath.Join(tmpDir, "test.txt")
|
|
testContent := "hello world"
|
|
|
|
// Test FileExists (false)
|
|
assert.False(t, FileExists(testFilePath))
|
|
|
|
// Test ReadStringFileOK (false)
|
|
content, ok := ReadStringFileOK(testFilePath)
|
|
assert.False(t, ok)
|
|
assert.Empty(t, content)
|
|
|
|
// Test ReadStringFile (empty)
|
|
assert.Empty(t, ReadStringFile(testFilePath))
|
|
|
|
// Write file
|
|
err := os.WriteFile(testFilePath, []byte(testContent+"\n "), 0644)
|
|
assert.NoError(t, err)
|
|
|
|
// Test FileExists (true)
|
|
assert.True(t, FileExists(testFilePath))
|
|
|
|
// Test ReadStringFileOK (true)
|
|
content, ok = ReadStringFileOK(testFilePath)
|
|
assert.True(t, ok)
|
|
assert.Equal(t, testContent, content)
|
|
|
|
// Test ReadStringFile (content)
|
|
assert.Equal(t, testContent, ReadStringFile(testFilePath))
|
|
}
|
|
|
|
func TestReadUintFile(t *testing.T) {
|
|
tmpDir := t.TempDir()
|
|
|
|
t.Run("valid uint", func(t *testing.T) {
|
|
path := filepath.Join(tmpDir, "uint.txt")
|
|
os.WriteFile(path, []byte(" 12345\n"), 0644)
|
|
val, ok := ReadUintFile(path)
|
|
assert.True(t, ok)
|
|
assert.Equal(t, uint64(12345), val)
|
|
})
|
|
|
|
t.Run("invalid uint", func(t *testing.T) {
|
|
path := filepath.Join(tmpDir, "invalid.txt")
|
|
os.WriteFile(path, []byte("abc"), 0644)
|
|
val, ok := ReadUintFile(path)
|
|
assert.False(t, ok)
|
|
assert.Equal(t, uint64(0), val)
|
|
})
|
|
|
|
t.Run("missing file", func(t *testing.T) {
|
|
path := filepath.Join(tmpDir, "missing.txt")
|
|
val, ok := ReadUintFile(path)
|
|
assert.False(t, ok)
|
|
assert.Equal(t, uint64(0), val)
|
|
})
|
|
}
|
|
|
|
func TestGetEnv(t *testing.T) {
|
|
key := "TEST_VAR"
|
|
prefixedKey := "BESZEL_AGENT_" + key
|
|
|
|
t.Run("prefixed variable exists", func(t *testing.T) {
|
|
t.Setenv(prefixedKey, "prefixed_val")
|
|
t.Setenv(key, "unprefixed_val")
|
|
|
|
val, exists := GetEnv(key)
|
|
assert.True(t, exists)
|
|
assert.Equal(t, "prefixed_val", val)
|
|
})
|
|
|
|
t.Run("only unprefixed variable exists", func(t *testing.T) {
|
|
t.Setenv(key, "unprefixed_val")
|
|
|
|
val, exists := GetEnv(key)
|
|
assert.True(t, exists)
|
|
assert.Equal(t, "unprefixed_val", val)
|
|
})
|
|
|
|
t.Run("neither variable exists", func(t *testing.T) {
|
|
val, exists := GetEnv(key)
|
|
assert.False(t, exists)
|
|
assert.Empty(t, val)
|
|
})
|
|
}
|