| 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},
|
| {"no rounding needed", 1.23, 1.23},
|
| {"negative number", -1.235, -1.24},
|
| {"zero", 0.0, 0.0},
|
| {"large number", 123.456, 123.46},
|
| }
|
|
|
| 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},
|
| }
|
|
|
| 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"
|
|
|
|
|
| assert.False(t, FileExists(testFilePath))
|
|
|
|
|
| content, ok := ReadStringFileOK(testFilePath)
|
| assert.False(t, ok)
|
| assert.Empty(t, content)
|
|
|
|
|
| assert.Empty(t, ReadStringFile(testFilePath))
|
|
|
|
|
| err := os.WriteFile(testFilePath, []byte(testContent+"\n "), 0644)
|
| assert.NoError(t, err)
|
|
|
|
|
| assert.True(t, FileExists(testFilePath))
|
|
|
|
|
| content, ok = ReadStringFileOK(testFilePath)
|
| assert.True(t, ok)
|
| assert.Equal(t, testContent, 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)
|
| })
|
| }
|
|
|