Sha256: 6a257afe920fb553d0a55fa84ccaf7d6db1e493a025c939dcf15dbe67b4154b5

Contents?: true

Size: 1.22 KB

Versions: 4

Compression:

Stored size: 1.22 KB

Contents

# frozen_string_literal: true

require "base_test_helper"

describe GObjectIntrospection::Strv do
  it "wraps a pointer" do
    strv = GObjectIntrospection::Strv.new :some_pointer
    assert_equal :some_pointer, strv.to_ptr
  end

  describe "::wrap" do
    it "takes a pointer and returns a GObjectIntrospection::Strv wrapping it" do
      strv = GObjectIntrospection::Strv.wrap :some_pointer
      assert_instance_of GObjectIntrospection::Strv, strv
      assert_equal :some_pointer, strv.to_ptr
    end
  end

  describe "#each" do
    it "yields each string element" do
      ary = %w(one two three)
      ptrs = ary.map { |a| FFI::MemoryPointer.from_string(a) }
      ptrs << nil
      block = FFI::MemoryPointer.new(:pointer, ptrs.length)
      block.write_array_of_pointer ptrs

      strv = GObjectIntrospection::Strv.new block
      arr = []
      strv.each do |str|
        arr << str
      end
      assert_equal %w(one two three), arr
    end

    it "yields zero times for a Strv wrapping a null pointer" do
      strv = GObjectIntrospection::Strv.new FFI::Pointer.new(0)
      strv.each do |_str|
        flunk
      end
    end
  end

  it "includes Enumerable" do
    _(GObjectIntrospection::Strv).must_include Enumerable
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
gir_ffi-0.15.3 test/ffi-gobject_introspection/strv_test.rb
gir_ffi-0.15.2 test/ffi-gobject_introspection/strv_test.rb
gir_ffi-0.15.1 test/ffi-gobject_introspection/strv_test.rb
gir_ffi-0.15.0 test/ffi-gobject_introspection/strv_test.rb