gioui.org@v0.6.1-0.20240506124620-7a9ce51988ce/widget/icon_test.go (about) 1 // SPDX-License-Identifier: Unlicense OR MIT 2 3 package widget 4 5 import ( 6 "image" 7 "image/color" 8 "testing" 9 10 "gioui.org/layout" 11 "gioui.org/op" 12 13 "golang.org/x/exp/shiny/materialdesign/icons" 14 ) 15 16 func TestIcon_Alpha(t *testing.T) { 17 icon, err := NewIcon(icons.ToggleCheckBox) 18 if err != nil { 19 t.Fatal(err) 20 } 21 22 col := color.NRGBA{B: 0xff, A: 0x40} 23 24 gtx := layout.Context{ 25 Ops: new(op.Ops), 26 Constraints: layout.Exact(image.Pt(100, 100)), 27 } 28 29 _ = icon.Layout(gtx, col) 30 } 31 32 // TestWidgetConstraints tests that widgets returns dimensions within their constraints. 33 func TestWidgetConstraints(t *testing.T) { 34 _cs := func(v ...layout.Constraints) []layout.Constraints { return v } 35 for _, tc := range []struct { 36 label string 37 widget layout.Widget 38 constraints []layout.Constraints 39 }{ 40 { 41 label: "Icon", 42 widget: func(gtx layout.Context) layout.Dimensions { 43 ic, _ := NewIcon(icons.ToggleCheckBox) 44 return ic.Layout(gtx, color.NRGBA{A: 0xff}) 45 }, 46 constraints: _cs( 47 layout.Constraints{ 48 Min: image.Pt(20, 0), 49 Max: image.Pt(100, 100), 50 }, 51 layout.Constraints{ 52 Max: image.Pt(100, 100), 53 }, 54 ), 55 }, 56 } { 57 t.Run(tc.label, func(t *testing.T) { 58 for _, cs := range tc.constraints { 59 gtx := layout.Context{ 60 Constraints: cs, 61 Ops: new(op.Ops), 62 } 63 dims := tc.widget(gtx) 64 csr := image.Rectangle{ 65 Min: cs.Min, 66 Max: cs.Max, 67 } 68 if !dims.Size.In(csr) { 69 t.Errorf("dims size %v not within constraints %v", dims.Size, csr) 70 } 71 } 72 }) 73 } 74 }