Made Stack.SetStretchy() panic on invalid index, ending that group of functions. Also added the tests for those functions who did not have tests already written.
This commit is contained in:
parent
92fb9efce9
commit
cdd535cc71
7
stack.go
7
stack.go
|
@ -48,7 +48,7 @@ func NewVerticalStack(controls ...Control) *Stack {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetStretchy marks a control in a Stack as stretchy. This cannot be called once the Window containing the Stack has been opened.
|
// SetStretchy marks a control in a Stack as stretchy. This cannot be called once the Window containing the Stack has been opened.
|
||||||
// (TODO action on invalid index)
|
// It panics if index is out of range.
|
||||||
func (s *Stack) SetStretchy(index int) {
|
func (s *Stack) SetStretchy(index int) {
|
||||||
s.lock.Lock()
|
s.lock.Lock()
|
||||||
defer s.lock.Unlock()
|
defer s.lock.Unlock()
|
||||||
|
@ -56,7 +56,10 @@ func (s *Stack) SetStretchy(index int) {
|
||||||
if s.created {
|
if s.created {
|
||||||
panic("call to Stack.SetStretchy() after Stack has been created")
|
panic("call to Stack.SetStretchy() after Stack has been created")
|
||||||
}
|
}
|
||||||
s.stretchy[index] = true // TODO explicitly check for index out of bounds?
|
if index < 0 || index > len(s.stretchy) {
|
||||||
|
panic(fmt.Errorf("index %d out of range in Stack.SetStretchy()", index))
|
||||||
|
}
|
||||||
|
s.stretchy[index] = true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Stack) make(window *sysData) error {
|
func (s *Stack) make(window *sysData) error {
|
||||||
|
|
40
test/main.go
40
test/main.go
|
@ -37,7 +37,7 @@ func gridWindow() (*Window, error) {
|
||||||
|
|
||||||
var macCrashTest = flag.Bool("maccrash", false, "attempt crash on Mac OS X on deleting too far (debug lack of panic on 32-bit)")
|
var macCrashTest = flag.Bool("maccrash", false, "attempt crash on Mac OS X on deleting too far (debug lack of panic on 32-bit)")
|
||||||
|
|
||||||
func invalidTest(c *Combobox, l *Listbox) {
|
func invalidTest(c *Combobox, l *Listbox, s *Stack, g *Grid) {
|
||||||
x := func(what string ) {
|
x := func(what string ) {
|
||||||
if j := recover(); j == nil {
|
if j := recover(); j == nil {
|
||||||
MsgBoxError("test", "%s: no panic", what)
|
MsgBoxError("test", "%s: no panic", what)
|
||||||
|
@ -71,6 +71,40 @@ func invalidTest(c *Combobox, l *Listbox) {
|
||||||
func() {
|
func() {
|
||||||
defer x("Listbox.Delete > len"); l.Delete(c.Len() + 5); panic(nil)
|
defer x("Listbox.Delete > len"); l.Delete(c.Len() + 5); panic(nil)
|
||||||
}()
|
}()
|
||||||
|
if s != nil {
|
||||||
|
func() {
|
||||||
|
defer x("Stack.SetStretchy < 0"); s.SetStretchy(-5); panic(nil)
|
||||||
|
}()
|
||||||
|
func() {
|
||||||
|
defer x("Stack.SetStretchy > len"); s.SetStretchy(5555); panic(nil)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if g != nil {
|
||||||
|
func() {
|
||||||
|
defer x("Grid.SetFilling x < 0"); g.SetFilling(-5, 0); panic(nil)
|
||||||
|
}()
|
||||||
|
func() {
|
||||||
|
defer x("Grid.SetFilling x > len"); g.SetFilling(5555, 0); panic(nil)
|
||||||
|
}()
|
||||||
|
func() {
|
||||||
|
defer x("Grid.SetFilling y < 0"); g.SetFilling(0, -5); panic(nil)
|
||||||
|
}()
|
||||||
|
func() {
|
||||||
|
defer x("Grid.SetFilling y > len"); g.SetFilling(0, 5555); panic(nil)
|
||||||
|
}()
|
||||||
|
func() {
|
||||||
|
defer x("Grid.SetStretchy x < 0"); g.SetStretchy(-5, 0); panic(nil)
|
||||||
|
}()
|
||||||
|
func() {
|
||||||
|
defer x("Grid.SetStretchy x > len"); g.SetStretchy(5555, 0); panic(nil)
|
||||||
|
}()
|
||||||
|
func() {
|
||||||
|
defer x("Grid.SetStretchy y < 0"); g.SetStretchy(0, -5); panic(nil)
|
||||||
|
}()
|
||||||
|
func() {
|
||||||
|
defer x("Grid.SetStretchy y > len"); g.SetStretchy(0, 5555); panic(nil)
|
||||||
|
}()
|
||||||
|
}
|
||||||
MsgBox("test", "all working as intended")
|
MsgBox("test", "all working as intended")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,7 +154,7 @@ func myMain() {
|
||||||
s.SetStretchy(0)
|
s.SetStretchy(0)
|
||||||
s.SetStretchy(1)
|
s.SetStretchy(1)
|
||||||
if *invalidBefore {
|
if *invalidBefore {
|
||||||
invalidTest(cb1, lb1)
|
invalidTest(cb1, lb1, s, NewGrid(1, Space()))
|
||||||
}
|
}
|
||||||
err := w.Open(s)
|
err := w.Open(s)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -187,7 +221,7 @@ mainloop:
|
||||||
}
|
}
|
||||||
pbar.SetProgress(prog)
|
pbar.SetProgress(prog)
|
||||||
case <-invalidButton.Clicked:
|
case <-invalidButton.Clicked:
|
||||||
invalidTest(cb1, lb1)
|
invalidTest(cb1, lb1, nil, nil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
w.Hide()
|
w.Hide()
|
||||||
|
|
1
todo.md
1
todo.md
|
@ -17,7 +17,6 @@ so I don't forget:
|
||||||
- Combobox/Listbox.Select (with Listbox.Select allowing bulk)
|
- Combobox/Listbox.Select (with Listbox.Select allowing bulk)
|
||||||
- Checkbox.Check or Checkbox.SetChecked
|
- Checkbox.Check or Checkbox.SetChecked
|
||||||
- Listbox.SelectAll
|
- Listbox.SelectAll
|
||||||
- have methods that take indices panic on invalid index, like the Stack and Grid stretchy methods
|
|
||||||
- make the Windows implementation of message boxes run on uitask
|
- make the Windows implementation of message boxes run on uitask
|
||||||
- ensure MsgBoxError can run if initialization failed if things change ever
|
- ensure MsgBoxError can run if initialization failed if things change ever
|
||||||
- should Labels be selectable?
|
- should Labels be selectable?
|
||||||
|
|
Loading…
Reference in New Issue