Sha256: 811022947132de5348fb081055c4c3b9e55353249736ea981a50af31e229d202

Contents?: true

Size: 1.78 KB

Versions: 20

Compression:

Stored size: 1.78 KB

Contents

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

require_relative './lib/wxapp_runner'

class TimerTests < Test::Unit::TestCase

  class TimerCounterHandler < Wx::EvtHandler

    def initialize
      super
      @count = 0
      evt_timer Wx::ID_ANY, :on_timer
    end

    attr_reader :count

    private

    def on_timer(_evt)
      @count += 1
      tick
    end

    def tick
      # noop
    end

  end

  def test_one_shot

    handler = Class.new(TimerCounterHandler) do
      def initialize(loop)
        super()
        @loop = loop
      end

      def run
        @timer = Wx::Timer.new(self)
        @timer.start(200, true)
        @loop.run
      end

      def tick
        @timer.stop
        @loop.exit
      end
    end.new(Wx::EventLoop.new)

    handler.run

    assert_equal(1, handler.count)
  end

  def test_multiple


    handler = Class.new(TimerCounterHandler) do
      def initialize(loop)
        super()
        @loop = loop
      end

      def run
        @timer = Wx::Timer.new(self)
        @timer.start(100)
        # run for 2 seconds
        @tm_end = Time.now + 2
        @loop.run
      end

      def tick
        # exit after 2 seconds
        unless Time.now < @tm_end
          @timer.stop
          @loop.exit
        end
      end
    end.new(Wx::EventLoop.new)


    handler.run

    # we can't count on getting exactly 20 ticks but we shouldn't get more
    # than this
    num_ticks = handler.count
    assert( num_ticks <= 20 )

    # and we should get a decent number of them but if the system is very
    # loaded (as happens with build bot slaves running a couple of builds in
    # parallel actually) it may be much less than 20 so just check that we get
    # more than one
    assert( num_ticks > 1 )
  end
  
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
wxruby3-1.5.0 tests/test_timer.rb
wxruby3-1.4.2 tests/test_timer.rb
wxruby3-1.4.1 tests/test_timer.rb
wxruby3-1.4.0 tests/test_timer.rb
wxruby3-1.3.1 tests/test_timer.rb
wxruby3-1.3.0 tests/test_timer.rb
wxruby3-1.2.1 tests/test_timer.rb
wxruby3-1.2.0 tests/test_timer.rb
wxruby3-1.1.2 tests/test_timer.rb
wxruby3-1.1.1 tests/test_timer.rb
wxruby3-1.1.0 tests/test_timer.rb
wxruby3-1.0.1 tests/test_timer.rb
wxruby3-0.9.8 tests/test_timer.rb
wxruby3-0.9.7 tests/test_timer.rb
wxruby3-0.9.5 tests/test_timer.rb
wxruby3-0.9.4 tests/test_timer.rb
wxruby3-0.9.3 tests/test_timer.rb
wxruby3-0.9.2 tests/test_timer.rb
wxruby3-0.9.1 tests/test_timer.rb
wxruby3-0.9.0 tests/test_timer.rb