karmada/pkg/util/lifted/lua_oslib_safe_test.go

109 lines
2.4 KiB
Go

package lifted
import (
"testing"
"time"
lua "github.com/yuin/gopher-lua"
)
func TestOpenSafeOs(t *testing.T) {
L := lua.NewState()
defer L.Close()
expect := 1
actual := OpenSafeOs(L)
if actual != expect {
t.Errorf("OpenSafeOs returned %v, expected %v", actual, expect)
}
}
func TestSafeOsLoader(t *testing.T) {
L := lua.NewState()
defer L.Close()
expect := 1
actual := SafeOsLoader(L)
if actual != expect {
t.Errorf("SafeOsLoader returned %v, expected %v", actual, expect)
}
}
func TestOsTime(t *testing.T) {
L := lua.NewState()
defer L.Close()
actual := osTime(L)
if actual != 1 {
t.Errorf("osTime returned %v, expected %v", actual, 1)
}
}
func TestGetIntField(t *testing.T) {
tb := &lua.LTable{}
tb.RawSetString("min", lua.LNumber(15))
tb.RawSetString("day", lua.LString("a"))
// Test with valid key
expected := 15
if v := getIntField(tb, "min", 0); v != expected {
t.Errorf("getIntField(tb, \"min\", 0) returned %d, expected %d", v, expected)
}
// Test with non-number value
expected = 0
if v := getIntField(tb, "day", 0); v != expected {
t.Errorf("getIntField(tb, \"day\", 0) returned %d, expected %d", v, expected)
}
}
func TestGetBoolField(t *testing.T) {
tb := &lua.LTable{}
tb.RawSetString("min", lua.LNumber(15))
tb.RawSetString("isdst", lua.LBool(false))
// Test with valid key
if v := getBoolField(tb, "isdst", false); v {
t.Errorf("getBoolField(tb, \"isdst\", false) returned %v, expected %v", v, false)
}
// Test with non-number value
if v := getBoolField(tb, "min", true); !v {
t.Errorf("getBoolField(tb, \"min\", true) returned %v, expected %v", v, true)
}
}
func TestStrftime(t *testing.T) {
tests := []struct {
name string
time time.Time
cfmt string
want string
}{
{
name: "character in cDateFlagToGo",
time: time.Date(2022, time.February, 16, 15, 45, 27, 0, time.UTC),
cfmt: "%Y/%m/%d %H:%M:%S",
want: "2022/02/16 15:45:27",
},
{
name: "character not in cDateFlagToGo",
time: time.Date(2022, time.February, 16, 15, 45, 27, 0, time.FixedZone("", -8*60*60)),
cfmt: "%A, %w %B %Y %I:%M:%S %p %Z %e",
want: "Wednesday, 3 February 2022 03:45:27 PM -0800 %e",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := strftime(tt.time, tt.cfmt); got != tt.want {
t.Errorf("strftime(%v, %q) got %q, want %q", tt.time, tt.cfmt, got, tt.want)
}
})
}
}