summaryrefslogtreecommitdiff
path: root/spec/unit/core/content_spec.rb
blob: 7a633fc65b8d5b835a5fe96f97d6432b717377f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# frozen_string_literal: true

RSpec.describe Spandx::Core::Content do
  subject { described_class.new(content) }

  let(:content) do
    license_file('MIT')
      .gsub('<year>', Time.now.year.to_s)
      .gsub('<copyright holders>', 'Tsuyoshi Garrett')
  end

  def text(text)
    described_class.new(text)
  end

  describe '#similar?' do
    let(:mit) { described_class.new(license_file('MIT')) }
    let(:lgpl) { described_class.new(license_file('LGPL-2.0-only')) }

    specify { expect(subject).to be_similar(mit) }
    specify { expect(subject).not_to be_similar(lgpl) }
    specify { expect(subject).to be_similar(subject) }
    specify { expect(text('hello world')).to be_similar(text('hello world')) }
    specify { expect(text('hello world')).not_to be_similar(text('goodbye world')) }
    specify { expect(text('hello world')).not_to be_similar(text('goodbye universe')) }
    specify { expect(text('a b c')).not_to be_similar(text('b c d')) }
  end

  describe '#similarity_score' do
    specify { expect(text('hello world').similarity_score(text('hello world'))).to be(100.0) }
    specify { expect(text('hello world').similarity_score(text('goodbye world'))).to be(50.0) }
    specify { expect(text('hello world').similarity_score(text('goodbye universe'))).to be(0.0) }
    specify { expect(text('a b c').similarity_score(text('b c d'))).to be(66.66666666666666) }
  end
end