forked from kdomanski/iso9660
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathiso9660_test.go
113 lines (87 loc) · 2.71 KB
/
iso9660_test.go
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
//go:build !integration
// +build !integration
package iso9660
import (
"os"
"testing"
"time"
"github.com/stretchr/testify/assert"
)
func TestReadWriteVolumeDescriptorHeader(t *testing.T) {
testHeader := volumeDescriptorHeader{
Type: volumeTypePrimary,
Identifier: standardIdentifierBytes,
Version: 1,
}
data, err := testHeader.MarshalBinary()
assert.NoError(t, err)
assert.Len(t, data, 7)
var vdh volumeDescriptorHeader
err = vdh.UnmarshalBinary(data)
assert.NoError(t, err)
assert.Equal(t, testHeader, vdh)
}
func TestReadWriteVolumeDateTime(t *testing.T) {
exampleTimeDate := VolumeDescriptorTimestamp{
Year: 2018,
Month: 06,
Day: 01,
Hour: 03,
Minute: 12,
Second: 50,
Hundredth: 7,
Offset: 8,
}
data, err := exampleTimeDate.MarshalBinary()
assert.NoError(t, err)
assert.Len(t, data, 17)
newTS := VolumeDescriptorTimestamp{}
err = newTS.UnmarshalBinary(data)
assert.NoError(t, err)
assert.Equal(t, exampleTimeDate, newTS)
}
func TestReadWriteRecordingTimestamp(t *testing.T) {
currentTime := time.Now()
buffer := make([]byte, 7)
RecordingTimestamp(currentTime).MarshalBinary(buffer)
var newTimestamp RecordingTimestamp
err := newTimestamp.UnmarshalBinary(buffer)
assert.NoError(t, err)
assert.Equal(t, currentTime.Year(), time.Time(newTimestamp).Year())
assert.Equal(t, currentTime.Month(), time.Time(newTimestamp).Month())
assert.Equal(t, currentTime.Day(), time.Time(newTimestamp).Day())
assert.Equal(t, currentTime.Hour(), time.Time(newTimestamp).Hour())
assert.Equal(t, currentTime.Minute(), time.Time(newTimestamp).Minute())
assert.Equal(t, currentTime.Second(), time.Time(newTimestamp).Second())
_, currentTimeOffset := currentTime.Zone()
_, newTimestampOffset := time.Time(newTimestamp).Zone()
assert.Equal(t, currentTimeOffset, newTimestampOffset)
}
func TestReadWriteDirectoryEntry(t *testing.T) {
f, err := os.Open("fixtures/test.iso")
assert.NoError(t, err)
defer f.Close() // nolint:errcheck
buffer1 := make([]byte, 34)
_, err = f.ReadAt(buffer1, int64((sectorSize*16)+156))
assert.NoError(t, err)
var de DirectoryEntry
err = de.UnmarshalBinary(buffer1)
assert.NoError(t, err)
buffer2, err := de.MarshalBinary()
assert.NoError(t, err)
assert.Equal(t, buffer1, buffer2)
}
func TestReadWriteVolumeDescriptorPrimary(t *testing.T) {
f, err := os.Open("fixtures/test.iso")
assert.NoError(t, err)
defer f.Close() // nolint:errcheck
buffer1 := make([]byte, sectorSize)
_, err = f.ReadAt(buffer1, int64(sectorSize*16))
assert.NoError(t, err)
var vd volumeDescriptor
err = vd.UnmarshalBinary(buffer1)
assert.NoError(t, err)
buffer2, err := vd.MarshalBinary()
assert.NoError(t, err)
assert.Equal(t, buffer1, buffer2)
}