VT_Player/third_party/gotk3/glib/menu_test.go
Stu d4efa91ce1 Add vendored gotk3 GTK3 bindings for Go
Vendor gotk3 library to ensure consistent GTK3 bindings across
environments and simplify dependency management.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-15 05:40:43 -05:00

144 lines
3.7 KiB
Go

package glib_test
import (
"testing"
"github.com/gotk3/gotk3/glib"
)
func TestGetSetAttributeValueCustomBool(t *testing.T) {
testCases := []struct {
desc string
value bool
}{
{
desc: "true",
value: true,
},
{
desc: "false",
value: false,
},
}
menuItem := glib.MenuItemNew()
for _, tC := range testCases {
t.Run(tC.desc, func(t *testing.T) {
variant := glib.VariantFromBoolean(tC.value)
menuItem.SetAttributeValue("custom-bool-attribute", variant)
actual := menuItem.GetAttributeValue("custom-bool-attribute", glib.VARIANT_TYPE_BOOLEAN)
if !actual.IsType(glib.VARIANT_TYPE_BOOLEAN) {
t.Error("Expected value of type", glib.VARIANT_TYPE_BOOLEAN, "got", actual.Type())
}
if tC.value != actual.GetBoolean() {
t.Error("Expected", tC.value, "got", actual)
}
})
}
}
func TestUnsetLabel(t *testing.T) {
menuItem := glib.MenuItemNewWithLabel("unit_label")
menuItem.UnsetLabel()
value := menuItem.GetAttributeValue(glib.MENU_ATTRIBUTE_LABEL, glib.VARIANT_TYPE_STRING)
actual := value.GetString()
if "" != actual {
t.Error("Expected empty string, got", actual)
}
}
func TestSetLabel(t *testing.T) {
menuItem := glib.MenuItemNewWithLabel("unit_label")
expected := "New Label"
menuItem.SetLabel(expected)
value := menuItem.GetAttributeValue(glib.MENU_ATTRIBUTE_LABEL, glib.VARIANT_TYPE_STRING)
actual := value.GetString()
if expected != actual {
t.Error("Expected", expected, "got", actual)
}
}
func TestSetDetailedAction(t *testing.T) {
menuItem := glib.MenuItemNewWithAction("unit_action")
expected := "new-action"
menuItem.SetDetailedAction(expected)
value := menuItem.GetAttributeValue(glib.MENU_ATTRIBUTE_ACTION, glib.VARIANT_TYPE_STRING)
actual := value.GetString()
if expected != actual {
t.Error("Expected", expected, "got", actual)
}
}
func TestSetActionAndTargetValue(t *testing.T) {
menuItem := glib.MenuItemNew()
t.Run("Action, Value", func(t *testing.T) {
expectedValue := glib.VariantFromString("Hello!")
expected := "act1"
menuItem.SetActionAndTargetValue(expected, expectedValue)
// Check target value
actualValue := menuItem.GetAttributeValue(glib.MENU_ATTRIBUTE_TARGET, glib.VARIANT_TYPE_STRING)
if expectedValue.Native() != actualValue.Native() {
t.Error("Expected", expectedValue.Native(), "got", actualValue.Native())
}
// Check action value
actualAction := menuItem.GetAttributeValue(glib.MENU_ATTRIBUTE_ACTION, glib.VARIANT_TYPE_STRING).GetString()
if expected != actualAction {
t.Error("Expected", expected, "got", actualAction)
}
})
t.Run("Action, Null Value", func(t *testing.T) {
expected := "act2"
menuItem.SetActionAndTargetValue(expected, nil)
// Check target value
actualValue := menuItem.GetAttributeValue(glib.MENU_ATTRIBUTE_TARGET, glib.VARIANT_TYPE_STRING)
if actualValue != nil {
t.Error("Expected nil value got", actualValue.Native())
}
// Check action value
actualAction := menuItem.GetAttributeValue(glib.MENU_ATTRIBUTE_ACTION, glib.VARIANT_TYPE_STRING).GetString()
if expected != actualAction {
t.Error("Expected", expected, "got", actualAction)
}
})
}
func TestUnsetAction(t *testing.T) {
menuItem := glib.MenuItemNew()
initialValue := glib.VariantFromString("Hello!")
initial := "act1"
menuItem.SetActionAndTargetValue(initial, initialValue)
menuItem.UnsetAction()
// Check target value
actualValue := menuItem.GetAttributeValue(glib.MENU_ATTRIBUTE_TARGET, glib.VARIANT_TYPE_STRING)
if actualValue != nil {
t.Error("Expected nil value got", actualValue.Native())
}
// Check action value
actualAction := menuItem.GetAttributeValue(glib.MENU_ATTRIBUTE_ACTION, glib.VARIANT_TYPE_STRING)
if actualAction != nil {
t.Error("Expected nil action got", actualAction.Native())
}
}