File: entry_set_test.rb

package info (click to toggle)
ruby-zip 1.1.6-1%2Bdeb8u1
  • links: PTS, VCS
  • area: main
  • in suites: jessie
  • size: 720 kB
  • ctags: 929
  • sloc: ruby: 7,045; makefile: 11
file content (129 lines) | stat: -rw-r--r-- 3,783 bytes parent folder | download | duplicates (2)
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
require 'test_helper'

class ZipEntrySetTest < MiniTest::Unit::TestCase
  ZIP_ENTRIES = [
      ::Zip::Entry.new("zipfile.zip", "name1", "comment1"),
      ::Zip::Entry.new("zipfile.zip", "name3", "comment1"),
      ::Zip::Entry.new("zipfile.zip", "name2", "comment1"),
      ::Zip::Entry.new("zipfile.zip", "name4", "comment1"),
      ::Zip::Entry.new("zipfile.zip", "name5", "comment1"),
      ::Zip::Entry.new("zipfile.zip", "name6", "comment1")
  ]

  def setup
    @zipEntrySet = ::Zip::EntrySet.new(ZIP_ENTRIES)
  end

  def teardown
    ::Zip.reset!
  end

  def test_include
    assert(@zipEntrySet.include?(ZIP_ENTRIES.first))
    assert(!@zipEntrySet.include?(::Zip::Entry.new("different.zip", "different", "aComment")))
  end

  def test_size
    assert_equal(ZIP_ENTRIES.size, @zipEntrySet.size)
    assert_equal(ZIP_ENTRIES.size, @zipEntrySet.length)
    @zipEntrySet << ::Zip::Entry.new("a", "b", "c")
    assert_equal(ZIP_ENTRIES.size + 1, @zipEntrySet.length)
  end

  def test_add
    zes = ::Zip::EntrySet.new
    entry1 = ::Zip::Entry.new("zf.zip", "name1")
    entry2 = ::Zip::Entry.new("zf.zip", "name2")
    zes << entry1
    assert(zes.include?(entry1))
    zes.push(entry2)
    assert(zes.include?(entry2))
  end

  def test_delete
    assert_equal(ZIP_ENTRIES.size, @zipEntrySet.size)
    entry = @zipEntrySet.delete(ZIP_ENTRIES.first)
    assert_equal(ZIP_ENTRIES.size - 1, @zipEntrySet.size)
    assert_equal(ZIP_ENTRIES.first, entry)

    entry = @zipEntrySet.delete(ZIP_ENTRIES.first)
    assert_equal(ZIP_ENTRIES.size - 1, @zipEntrySet.size)
    assert_nil(entry)
  end

  def test_each
    # Used each instead each_with_index due the bug in jRuby
    count = 0
    @zipEntrySet.each do |entry|
      assert(ZIP_ENTRIES.include?(entry))
      count += 1
    end
    assert_equal(ZIP_ENTRIES.size, count)
  end

  def test_entries
    assert_equal(ZIP_ENTRIES, @zipEntrySet.entries)
  end

  def test_entries_with_sort
    ::Zip.sort_entries = true
    assert_equal(ZIP_ENTRIES.sort, @zipEntrySet.entries)
    ::Zip.sort_entries = false
    assert_equal(ZIP_ENTRIES, @zipEntrySet.entries)
  end

  def test_compound
    newEntry = ::Zip::Entry.new("zf.zip", "new entry", "new entry's comment")
    assert_equal(ZIP_ENTRIES.size, @zipEntrySet.size)
    @zipEntrySet << newEntry
    assert_equal(ZIP_ENTRIES.size + 1, @zipEntrySet.size)
    assert(@zipEntrySet.include?(newEntry))

    @zipEntrySet.delete(newEntry)
    assert_equal(ZIP_ENTRIES.size, @zipEntrySet.size)
  end

  def test_dup
    copy = @zipEntrySet.dup
    assert_equal(@zipEntrySet, copy)

    # demonstrate that this is a deep copy
    copy.entries[0].name = "a totally different name"
    assert(@zipEntrySet != copy)
  end

  def test_parent
    entries = [
        ::Zip::Entry.new("zf.zip", "a/"),
        ::Zip::Entry.new("zf.zip", "a/b/"),
        ::Zip::Entry.new("zf.zip", "a/b/c/")
    ]
    entrySet = ::Zip::EntrySet.new(entries)

    assert_equal(nil, entrySet.parent(entries[0]))
    assert_equal(entries[0], entrySet.parent(entries[1]))
    assert_equal(entries[1], entrySet.parent(entries[2]))
  end

  def test_glob
    res = @zipEntrySet.glob('name[2-4]')
    assert_equal(3, res.size)
    assert_equal(ZIP_ENTRIES[1, 3].sort, res.sort)
  end

  def test_glob2
    entries = [
        ::Zip::Entry.new("zf.zip", "a/"),
        ::Zip::Entry.new("zf.zip", "a/b/b1"),
        ::Zip::Entry.new("zf.zip", "a/b/c/"),
        ::Zip::Entry.new("zf.zip", "a/b/c/c1")
    ]
    entrySet = ::Zip::EntrySet.new(entries)

    assert_equal(entries[0, 1], entrySet.glob("*"))
#    assert_equal(entries[FIXME], entrySet.glob("**"))
#    res = entrySet.glob('a*')
#    assert_equal(entries.size, res.size)
#    assert_equal(entrySet.map { |e| e.name }, res.map { |e| e.name })
  end
end