aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test/test_patches.rb
blob: e3a8203ce1960e9af9d47686c5ac4f1f05a247d2 (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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
require 'testing_env'
require 'test/testball'
require 'set'

# Expose some internals
class Patches
  attr_reader :patches
end

class Patch
  attr_reader :patch_p
  attr_reader :patch_filename
end


class PatchingTests < Test::Unit::TestCase
  def test_patchSingleString
    patches = Patches.new("http://example.com/patch.diff")
    assert_equal 1, patches.patches.length
    p = patches.patches[0]
    assert_equal :p1, p.patch_p
  end

  def test_patchArray
    patches = Patches.new(["http://example.com/patch1.diff", "http://example.com/patch2.diff"])
    assert_equal 2, patches.patches.length
    
    p1 = patches.patches[0]
    assert_equal :p1, p1.patch_p
    
    p2 = patches.patches[0]
    assert_equal :p1, p2.patch_p
  end

  def test_p0_hash_to_string
    patches = Patches.new({
      :p0 => "http://example.com/patch.diff"
    })
    assert_equal 1, patches.patches.length
    
    p = patches.patches[0]
    assert_equal :p0, p.patch_p
  end

  def test_p1_hash_to_string
    patches = Patches.new({
      :p1 => "http://example.com/patch.diff"
    })
    assert_equal 1, patches.patches.length
    
    p = patches.patches[0]
    assert_equal :p1, p.patch_p
  end

  def test_mixed_hash_to_strings
    expected = {
      :p1 => "http://example.com/patch1.diff",
      :p0 => "http://example.com/patch0.diff"
    }
    patches = Patches.new(expected)
    assert_equal 2, patches.patches.length

    # Make sure unique filenames were assigned
    filenames = Set.new
    patches.each do |p|
      filenames << p.patch_filename
    end

    assert_equal 2, filenames.size
  end

  def test_mixed_hash_to_arrays
    expected = {
      :p1 => ["http://example.com/patch10.diff","http://example.com/patch11.diff"],
      :p0 => ["http://example.com/patch00.diff","http://example.com/patch01.diff"]
    }
    patches = Patches.new(expected)
    assert_equal 4, patches.patches.length

    # Make sure unique filenames were assigned
    filenames = Set.new
    patches.each do |p|
      filenames << p.patch_filename
    end

    assert_equal 4, filenames.size
  end
end