Sha256: 53e7f08ff177b332fcd5a123eee72ba9fb4970dd629b03202aebc777e3d0e202

Contents?: true

Size: 1.55 KB

Versions: 4

Compression:

Stored size: 1.55 KB

Contents

require File.expand_path('../gir_ffi_test_helper.rb', File.dirname(__FILE__))

describe GLib::PtrArray do
  it "knows its element type" do
    arr = GLib::PtrArray.new :utf8
    assert_equal :utf8, arr.element_type
  end

  describe "::add" do
    it "correctly takes the type into account" do
      arr = GLib::PtrArray.new :utf8
      str = "test"
      GLib::PtrArray.add arr, str

      assert_equal str, arr.pdata.read_pointer.read_string
    end
  end

  describe "#each" do
    it "works normally" do
      arr = GLib::PtrArray.new :utf8

      GLib::PtrArray.add arr, "test1"
      GLib::PtrArray.add arr, "test2"
      GLib::PtrArray.add arr, "test3"

      a = []
      arr.each {|v| a << v}

      assert_equal ["test1", "test2", "test3"], a
    end

    it "works when exiting the loop prematurely" do
      arr = GLib::PtrArray.new :utf8

      GLib::PtrArray.add arr, "test1"
      GLib::PtrArray.add arr, "test2"
      GLib::PtrArray.add arr, "test3"

      a = []
      arr.each do |v|
        a << v
        break if v == "test2"
      end

      assert_equal ["test1", "test2"], a
    end
  end

  it "includes Enumerable" do
    GLib::PtrArray.must_include Enumerable
  end

  it "has a working #to_a method" do
    arr = GLib::PtrArray.new :utf8

    GLib::PtrArray.add arr, "test1"
    GLib::PtrArray.add arr, "test2"
    GLib::PtrArray.add arr, "test3"

    assert_equal ["test1", "test2", "test3"], arr.to_a
  end

  it "has #add as an instance method too" do
    arr = GLib::PtrArray.new :utf8
    arr.add "test1"
    assert_equal ["test1"], arr.to_a
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
gir_ffi-0.4.0 test/ffi-glib/ptr_array_test.rb
gir_ffi-0.3.2 test/ffi-glib/ptr_array_test.rb
gir_ffi-0.3.1 test/ffi-glib/ptr_array_test.rb
gir_ffi-0.3.0 test/ffi-glib/ptr_array_test.rb