Sha256: fbfb85e9aae41750b9e83b0e31ec67630d33d632da140c5c06990796bf30b1d9

Contents?: true

Size: 1.72 KB

Versions: 1

Compression:

Stored size: 1.72 KB

Contents

# frozen_string_literal: true

require 'test_helper'

describe Gtk::Builder do
  let(:builder) { Gtk::Builder.new }
  let(:spec) do
    <<-XML
      <interface>
      <object class="GtkButton" id="foo">
      <signal handler="on_button_clicked" name="clicked"/>
      </object>
      </interface>
    XML
  end

  describe '#add_from_string' do
    it 'takes one string as argument' do
      builder.add_from_string spec
      pass
    end
  end

  describe '#connect_signals' do
    before do
      builder.add_from_string spec
    end

    it 'passes the handler name to the block' do
      name = nil
      builder.connect_signals do |handler_name|
        name = handler_name
        nil
      end

      _(name).must_equal 'on_button_clicked'
    end

    it 'connects the signal to the proc returned by the block' do
      name = nil
      builder.connect_signals do |handler_name|
        proc { name = handler_name }
      end
      button = builder.get_object('foo')
      GObject.signal_emit button, 'clicked'
      _(name).must_equal 'on_button_clicked'
    end

    describe 'with a signal with after flag' do
      let(:spec) do
        <<-XML
          <interface>
          <object class="GtkButton" id="foo">
          <signal handler="handler_after" name="clicked" after="true"/>
          <signal handler="handler_before" name="clicked"/>
          </object>
          </interface>
        XML
      end

      it 'connects the handlers in the right order' do
        name = nil
        builder.connect_signals do |handler_name|
          proc { name = handler_name }
        end
        button = builder.get_object('foo')
        GObject.signal_emit button, 'clicked'
        _(name).must_equal 'handler_after'
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gir_ffi-gtk-0.15.0 test/gir_ffi-gtk/builder_test.rb