Skip to content

Commit d0b4d41

Browse files
committed
UniversalTime: tests.
1 parent 9849500 commit d0b4d41

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed

test/extra_field_ut_test.rb

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
require 'test_helper'
2+
3+
class ZipExtraFieldUTTest < MiniTest::Test
4+
5+
PARSE_TESTS = [
6+
["UT\x05\x00\x01PS>A", 0b001, true, true, false],
7+
["UT\x05\x00\x02PS>A", 0b010, false, true, true],
8+
["UT\x05\x00\x04PS>A", 0b100, true, false, true],
9+
["UT\x09\x00\x03PS>APS>A", 0b011, false, true, false],
10+
["UT\x09\x00\x05PS>APS>A", 0b101, true, false, false],
11+
["UT\x09\x00\x06PS>APS>A", 0b110, false, false, true],
12+
["UT\x13\x00\x07PS>APS>APS>A", 0b111, false, false, false]
13+
]
14+
15+
def test_parse
16+
PARSE_TESTS.each do |bin, flags, a, c, m|
17+
ut = ::Zip::ExtraField::UniversalTime.new(bin)
18+
assert_equal(flags, ut.flag)
19+
assert(ut.atime.nil? == a)
20+
assert(ut.ctime.nil? == c)
21+
assert(ut.mtime.nil? == m)
22+
end
23+
end
24+
25+
def test_parse_size_zero
26+
ut = ::Zip::ExtraField::UniversalTime.new("UT\x00")
27+
assert_equal(0b000, ut.flag)
28+
assert_nil(ut.atime)
29+
assert_nil(ut.ctime)
30+
assert_nil(ut.mtime)
31+
end
32+
33+
def test_parse_size_nil
34+
ut = ::Zip::ExtraField::UniversalTime.new('UT')
35+
assert_equal(0b000, ut.flag)
36+
assert_nil(ut.atime)
37+
assert_nil(ut.ctime)
38+
assert_nil(ut.mtime)
39+
end
40+
41+
def test_parse_nil
42+
ut = ::Zip::ExtraField::UniversalTime.new
43+
assert_equal(0b000, ut.flag)
44+
assert_nil(ut.atime)
45+
assert_nil(ut.ctime)
46+
assert_nil(ut.mtime)
47+
end
48+
49+
def test_set_clear_times
50+
time = ::Zip::DOSTime.now
51+
ut = ::Zip::ExtraField::UniversalTime.new
52+
assert_equal(0b000, ut.flag)
53+
54+
ut.mtime = time
55+
assert_equal(0b001, ut.flag)
56+
assert_equal(time, ut.mtime)
57+
58+
ut.ctime = time
59+
assert_equal(0b101, ut.flag)
60+
assert_equal(time, ut.ctime)
61+
62+
ut.atime = time
63+
assert_equal(0b111, ut.flag)
64+
assert_equal(time, ut.atime)
65+
66+
ut.ctime = nil
67+
assert_equal(0b011, ut.flag)
68+
assert_nil ut.ctime
69+
70+
ut.mtime = nil
71+
assert_equal(0b010, ut.flag)
72+
assert_nil ut.mtime
73+
74+
ut.atime = nil
75+
assert_equal(0b000, ut.flag)
76+
assert_nil ut.atime
77+
end
78+
79+
def test_pack
80+
time = ::Zip::DOSTime.at('PS>A'.unpack1('l<'))
81+
ut = ::Zip::ExtraField::UniversalTime.new
82+
assert_equal("\x00", ut.pack_for_local)
83+
assert_equal("\x00", ut.pack_for_c_dir)
84+
85+
ut.mtime = time
86+
assert_equal("\x01PS>A", ut.pack_for_local)
87+
assert_equal("\x01PS>A", ut.pack_for_c_dir)
88+
89+
ut.atime = time
90+
assert_equal("\x03PS>APS>A", ut.pack_for_local)
91+
assert_equal("\x03PS>A", ut.pack_for_c_dir)
92+
93+
ut.ctime = time
94+
assert_equal("\x07PS>APS>APS>A", ut.pack_for_local)
95+
assert_equal("\x07PS>A", ut.pack_for_c_dir)
96+
end
97+
end

0 commit comments

Comments
 (0)