mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-04-29 03:50:18 +00:00
152 lines
3.1 KiB
Go
152 lines
3.1 KiB
Go
package system
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestIsHexString(t *testing.T) {
|
|
tests := []struct {
|
|
input string
|
|
expected bool
|
|
}{
|
|
{"0123456789abcdef", true},
|
|
{"ABCDEF", true},
|
|
{"0123456789ABCDEF", true},
|
|
{"abc123", true},
|
|
{"", true}, // empty string has no non-hex chars
|
|
{"xyz", false},
|
|
{"123g", false},
|
|
{"hello-world", false},
|
|
{"12 34", false}, // space
|
|
{"12\n34", false}, // newline
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
t.Run(tc.input, func(t *testing.T) {
|
|
result := isHexString(tc.input)
|
|
if result != tc.expected {
|
|
t.Errorf("isHexString(%q) = %v, want %v", tc.input, result, tc.expected)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestIsNumeric(t *testing.T) {
|
|
tests := []struct {
|
|
input string
|
|
expected bool
|
|
}{
|
|
{"123", true},
|
|
{"0", true},
|
|
{"9999999", true},
|
|
{" 123 ", true}, // whitespace trimmed
|
|
{"", false},
|
|
{" ", false},
|
|
{"abc", false},
|
|
{"12.3", false},
|
|
{"-1", false},
|
|
{"1a2", false},
|
|
{"12 34", false},
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
t.Run(tc.input, func(t *testing.T) {
|
|
result := isNumeric(tc.input)
|
|
if result != tc.expected {
|
|
t.Errorf("isNumeric(%q) = %v, want %v", tc.input, result, tc.expected)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestIsTruthy(t *testing.T) {
|
|
tests := []struct {
|
|
input string
|
|
expected bool
|
|
}{
|
|
// Truthy values
|
|
{"1", true},
|
|
{"true", true},
|
|
{"TRUE", true},
|
|
{"True", true},
|
|
{"t", true},
|
|
{"T", true},
|
|
{"yes", true},
|
|
{"YES", true},
|
|
{"Yes", true},
|
|
{"y", true},
|
|
{"Y", true},
|
|
{"on", true},
|
|
{"ON", true},
|
|
{"On", true},
|
|
{" true ", true}, // with whitespace
|
|
{"\ttrue\n", true},
|
|
|
|
// Falsy values
|
|
{"0", false},
|
|
{"false", false},
|
|
{"FALSE", false},
|
|
{"no", false},
|
|
{"n", false},
|
|
{"off", false},
|
|
{"", false},
|
|
{" ", false},
|
|
{"random", false},
|
|
{"2", false},
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
t.Run(tc.input, func(t *testing.T) {
|
|
result := isTruthy(tc.input)
|
|
if result != tc.expected {
|
|
t.Errorf("isTruthy(%q) = %v, want %v", tc.input, result, tc.expected)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestContainerMarkers(t *testing.T) {
|
|
// Verify all expected markers are present
|
|
expectedMarkers := []string{
|
|
"docker",
|
|
"lxc",
|
|
"containerd",
|
|
"kubepods",
|
|
"podman",
|
|
"crio",
|
|
"libpod",
|
|
"lxcfs",
|
|
}
|
|
|
|
for _, expected := range expectedMarkers {
|
|
found := false
|
|
for _, marker := range containerMarkers {
|
|
if marker == expected {
|
|
found = true
|
|
break
|
|
}
|
|
}
|
|
if !found {
|
|
t.Errorf("Expected container marker %q not found", expected)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestInContainer(t *testing.T) {
|
|
// This is an integration test that depends on the runtime environment
|
|
// We can't mock the file system easily, but we can verify it doesn't panic
|
|
result := InContainer()
|
|
t.Logf("InContainer() = %v (depends on test environment)", result)
|
|
}
|
|
|
|
func TestDetectDockerContainerName(t *testing.T) {
|
|
// This is an integration test that depends on the runtime environment
|
|
result := DetectDockerContainerName()
|
|
t.Logf("DetectDockerContainerName() = %q (depends on test environment)", result)
|
|
}
|
|
|
|
func TestDetectLXCCTID(t *testing.T) {
|
|
// This is an integration test that depends on the runtime environment
|
|
result := DetectLXCCTID()
|
|
t.Logf("DetectLXCCTID() = %q (depends on test environment)", result)
|
|
}
|