-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathextent_test.go
72 lines (52 loc) · 1.49 KB
/
extent_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
package ext4
import (
"bytes"
"fmt"
"strings"
"testing"
"io/ioutil"
"github.com/dsoprea/go-logging"
)
func TestExtentNavigator_Read(t *testing.T) {
f, inode, err := GetTestInode(TestFileInodeNumber)
log.PanicIf(err)
defer f.Close()
en := NewExtentNavigatorWithReadSeeker(f, inode)
inodeSize := inode.Size()
actualBytes := make([]byte, inodeSize)
for offset := uint64(0); offset < inodeSize; {
data, err := en.Read(offset)
log.PanicIf(err)
copy(actualBytes[offset:], data)
offset += uint64(len(data))
}
expectedBytes, err := ioutil.ReadFile("assets/thejungle.txt")
log.PanicIf(err)
if bytes.Compare(actualBytes, expectedBytes) != 0 {
t.Fatalf("Bytes not read correctly.")
}
}
func ExampleExtentNavigator_Read() {
f, inode, err := GetTestInode(TestFileInodeNumber)
log.PanicIf(err)
defer f.Close()
en := NewExtentNavigatorWithReadSeeker(f, inode)
inodeSize := inode.Size()
actualBytes := make([]byte, inodeSize)
for offset := uint64(0); offset < inodeSize; {
data, err := en.Read(offset)
log.PanicIf(err)
copy(actualBytes[offset:], data)
offset += uint64(len(data))
}
// Take the first part, strip some nonprintable characters from the front,
// and normalize the newlines so that this example tests properly.
firstPart := string(actualBytes[3:100])
firstPart = strings.Replace(firstPart, "\r\n", "\n", -1)
fmt.Println(firstPart)
// Output:
//
// The Project Gutenberg EBook of The Jungle, by Upton Sinclair
//
// This eBook is for the use of anyo
}