Sha256: 878cc0b990ae846c21cb6066dd707dee0cf5a319dd508653ddd53e3af03488a5

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 KB

Contents

# Copyright (c) 2023 M.J.N. Corino, The Netherlands
#
# This software is released under the MIT license.

require_relative './lib/wxframe_runner'

class SizerTests < WxRuby::Test::GUITests

  def setup
    super
    frame_win.set_sizer(Wx::VBoxSizer.new)
  end

  def cleanup
    super
    GC.start
  end

  def test_detach
    frame_win.get_sizer.add(Wx::HBoxSizer.new)
    frame_win.get_sizer.add_spacer(5)
    # detaches HBoxSizer transferring ownership to Ruby; should not cause segfaults at GC
    frame_win.get_sizer.detach(0)
  end

  def test_sizer_item_detach_and_re_attach
    frame_win.get_sizer.add(Wx::HBoxSizer.new)
    frame_win.get_sizer.add_spacer(5)
    # get and detach
    szr_itm = frame_win.get_sizer.get_item(0)
    assert_not_nil(szr_itm)
    assert_true(szr_itm.is_sizer)
    szr = szr_itm.get_sizer
    assert_not_nil(szr)
    szr_itm.detach_sizer
    assert_nil(szr_itm.get_sizer)
    # remove sizer item
    assert_true(frame_win.get_sizer.remove(0))
    # re-attach detached sizer (should not cause segfaults at close due to incorrect ownership transfers)
    assert_not_nil(frame_win.get_sizer.prepend(szr))
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
wxruby3-0.9.1 tests/test_sizer.rb