# frozen_string_literal: true
require 'rubygems/test_case'
require 'rubygems/source'

class TestGemSourceInstalled < Gem::TestCase
  def test_spaceship
    a1 = quick_gem 'a', '1'
    util_build_gem a1

    remote    = Gem::Source.new @gem_repo
    specific  = Gem::Source::SpecificFile.new a1.cache_file
    installed = Gem::Source::Installed.new
    local     = Gem::Source::Local.new
    git       = Gem::Source::Git.new 'a', 'a', 'master'
    vendor    = Gem::Source::Vendor.new 'a'

    assert_equal(0, installed.<=>(installed), 'installed <=> installed')

    assert_equal(-1, remote.<=>(installed), 'remote <=> installed')
    assert_equal(1, installed.<=>(remote),    'installed <=> remote')

    assert_equal(1, installed.<=>(local),     'installed <=> local')
    assert_equal(-1, local.<=>(installed), 'local <=> installed')

    assert_equal(-1, specific.<=>(installed), 'specific <=> installed')
    assert_equal(1, installed.<=>(specific),  'installed <=> specific')

    assert_equal(1, git. <=>(installed), 'git <=> installed')
    assert_equal(-1, installed.<=>(git), 'installed <=> git')

    assert_equal(1, vendor.<=>(installed), 'vendor <=> installed')
    assert_equal(-1, installed.<=>(vendor), 'installed <=> vendor')
  end
end
