Sha256: 29bd21ec1f919ff1b2772721a57c1fc8aa7d622f1524274f5e04584c9b0db761

Contents?: true

Size: 1.64 KB

Versions: 2

Compression:

Stored size: 1.64 KB

Contents

# typed: true
# frozen_string_literal: true

require "test_helper"

module RubyIndexer
  class TestCase < Minitest::Test
    def setup
      @index = Index.new
      RBSIndexer.new(@index).index_ruby_core
      @default_indexed_entries = @index.instance_variable_get(:@entries).dup
    end

    private

    def index(source)
      @index.index_single(IndexablePath.new(nil, "/fake/path/foo.rb"), source)
    end

    def assert_entry(expected_name, type, expected_location, visibility: nil)
      entries = @index[expected_name]
      refute_nil(entries, "Expected #{expected_name} to be indexed")
      refute_empty(entries, "Expected #{expected_name} to be indexed")

      entry = entries.first
      assert_instance_of(type, entry, "Expected #{expected_name} to be a #{type}")

      location = entry.location
      location_string =
        "#{entry.file_path}:#{location.start_line - 1}-#{location.start_column}" \
          ":#{location.end_line - 1}-#{location.end_column}"

      assert_equal(expected_location, location_string)

      assert_equal(visibility, entry.visibility) if visibility
    end

    def refute_entry(expected_name)
      entries = @index[expected_name]
      assert_nil(entries, "Expected #{expected_name} to not be indexed")
    end

    def assert_no_entries
      assert_empty(@index.instance_variable_get(:@entries), "Expected nothing to be indexed")
    end

    def assert_no_indexed_entries
      assert_equal(@default_indexed_entries, @index.instance_variable_get(:@entries))
    end

    def assert_no_entry(entry)
      refute(@index.instance_variable_get(:@entries).key?(entry), "Expected '#{entry}' to not be indexed")
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ruby-lsp-0.17.4 lib/ruby_indexer/test/test_case.rb
ruby-lsp-0.17.3 lib/ruby_indexer/test/test_case.rb