-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbackup_test.go
More file actions
66 lines (59 loc) · 1.33 KB
/
backup_test.go
File metadata and controls
66 lines (59 loc) · 1.33 KB
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
package physalis
import (
"bytes"
"context"
"slices"
"testing"
)
func TestWriteBackup(t *testing.T) {
var buf bytes.Buffer
itemsData := []backupItem{
{
Event: &backupEvent{
ID: 1,
Data: []byte("event1"),
},
},
{
Blob: &backupBlob{
Name: "blob1",
Data: []byte("blobdata1"),
},
},
{
Event: &backupEvent{
ID: 2,
Data: []byte("event2"),
},
},
{
Blob: &backupBlob{
Name: "blob2",
Data: []byte("blobdata2"),
},
},
}
items := slices.Values(itemsData)
err := writeBackup(context.Background(), &buf, 3, items)
if err != nil {
t.Fatalf("writeBackup failed: %v", err)
}
loadedItems := slices.Collect(loadBackup(&buf))
if len(loadedItems) != len(itemsData) {
t.Fatalf("expected %d items, got %d", len(itemsData), len(loadedItems))
}
for i, item := range loadedItems {
origItem := itemsData[i]
if origItem.Event != nil && item.Event != nil {
if origItem.Event.ID != item.Event.ID || !bytes.Equal(origItem.Event.Data, item.Event.Data) {
t.Fatalf("mismatch in event at index %d", i)
}
} else if origItem.Blob != nil && item.Blob != nil {
if origItem.Blob.Name != item.Blob.Name || !bytes.Equal(origItem.Blob.Data, item.Blob.Data) {
t.Fatalf("mismatch in blob at index %d", i)
}
} else {
t.Fatalf("mismatch in item type at index %d", i)
}
}
}