-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathall_test.go
More file actions
153 lines (127 loc) · 5.46 KB
/
Copy pathall_test.go
File metadata and controls
153 lines (127 loc) · 5.46 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
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
package deltadiff
import (
"bytes"
"fmt"
"github.com/franela/goblin"
"github.com/xrash/deltadiff/testdata"
"testing"
"time"
)
func TestAll(t *testing.T) {
g := goblin.Goblin(t)
g.Describe("deltadiff", func() {
g.It("should work in one binary case", func() {
g.Timeout(time.Second * 60)
blocksizes := []int{
256,
512,
1024,
2048,
}
base, ok1 := testdata.FS.Get("/maamoul-mod.jpg")
target, ok2 := testdata.FS.Get("/maamoul.jpg")
g.Assert(ok1).Equal(true)
g.Assert(ok2).Equal(true)
dc := &DeltaConfig{
Debug: false,
}
for _, blocksize := range blocksizes {
sc := &SignatureConfig{
Hasher: "polyroll",
BlockSize: blocksize,
BaseSize: len(base),
}
baseBuffer := bytes.NewBuffer(base)
signatureBuffer := bytes.NewBuffer(nil)
errSignature := Signature(baseBuffer, signatureBuffer, sc)
g.Assert(errSignature).Equal(nil)
targetBuffer := bytes.NewBuffer(target)
deltaBuffer := bytes.NewBuffer(nil)
errDelta := Delta(signatureBuffer, targetBuffer, deltaBuffer, dc)
g.Assert(errDelta).Equal(nil)
outBuffer := bytes.NewBuffer(nil)
baseBuffer = bytes.NewBuffer(base)
errPatch := Patch(baseBuffer, deltaBuffer, outBuffer)
g.Assert(errPatch).Equal(nil)
equal := outBuffer.String() == string(target)
if !equal {
fmt.Println("blocksize", blocksize)
}
g.Assert(equal).Equal(true)
}
})
g.It("should work in several different cases", func() {
run := func(base, target string, sc *SignatureConfig) {
dc := &DeltaConfig{
Debug: false,
}
baseBuffer := bytes.NewBufferString(base)
signatureBuffer := bytes.NewBuffer(nil)
errSignature := Signature(baseBuffer, signatureBuffer, sc)
g.Assert(errSignature).Equal(nil)
targetBuffer := bytes.NewBufferString(target)
deltaBuffer := bytes.NewBuffer(nil)
errDelta := Delta(signatureBuffer, targetBuffer, deltaBuffer, dc)
g.Assert(errDelta).Equal(nil)
outBuffer := bytes.NewBuffer(nil)
baseBuffer = bytes.NewBufferString(base)
errPatch := Patch(baseBuffer, deltaBuffer, outBuffer)
g.Assert(errPatch).Equal(nil)
g.Assert(outBuffer.String()).Equal(target)
}
testcases := [][]string{
[]string{
"aaaaaabbbbbbccccddeeedeeeeeeea",
"aaaaaabbbbbbccccccddddddeeeeee",
},
[]string{
"",
"aaaaaabbbbbbccccccddddddeeeeee",
},
[]string{
"aaaaaabbbbbbccccddeeedeeeeeeea",
"",
},
[]string{
"",
"",
},
[]string{
"dasasdjaidhasdojadsiaosd asdsad saasd$$$$ DASDAASASDADS ",
"dasasdjaidhasdojadsiaosd $$$$ DASDAASASDADS WWWWWWWWWWWWW",
},
[]string{
"",
"a",
},
[]string{
"a",
"",
},
[]string{
"SSenhor. – Eu nam escrevo a vos alteza per minha mão, porque, quando esta faço, tenho muito grande saluço, que he sinal de morrer: eu, senhor, deixo quá ese filho per minha memória, a que deixo toda minha fazemda, que he assaz de pouca, mas deixo lhe a obrigaçam de todos meus seruiços, que he mui grande: as cousas da india ellas falarám por mim e por elle: deixo a india com as principaes cabeças tomadas em voso poder, sem nela ficar outra pendença senam cerrar se e mui bem a porta do estreito;a isto he o que me vosa alteza encomendou: eu, senhor, vos dey sempre por comselho, pera segurar de lá india, irdes vos tirando de despesas: peçoa vos alteza por mercee que se lembre de tudo isto, e que me faça meu filho grande, e lhe dè toda satisfaçam de meu seruiço: todas minhas confianças pus nas mãs de vos alteza e da senhora Rainha, a elles m emcomemwdo, que façam mwinhas cousas grandes, pois acabo em cousas de voso seruiço, e por elles vollo tenho merecido; e as minhas tenças, as quaes comprey pela maior parte, como vossa alteza sabe, beijar lh ey as mãos pollas em meu filho: escrita no mar a 6 dias de dezembro de 1515. Afomso dalboquerqueL",
"Senhor. – Eu nam escrevo a vos alteza per minha mão, porque, quando esta faço, tenho muito grande saluço, que he sinal de morrer: eu, senhor, deixo quá ese filho per minha memória, a que deixo toda minha fazemda, que he assaz de pouca, mas deixo lhe a obrigaçam de todos meus seruiços, que he mui grande: as cousas da india ellas falarám por mim e por elle: deixo a india com as principaes cabeças tomadas em voso poder, sem nela ficar outra pendença senam cerrar se e mui bem a porta do estreito; isto he o que me vosa alteza encomendou: eu, senhor, vos dey sempre por comselho, pera segurar de lá india, irdes vos tirando de despesas: peçoa vos alteza por mercee que se lembre de tudo isto, e que me faça meu filho grande, e lhe dè toda satisfaçam de meu seruiço: todas minhas confianças pus nas mãs de vos alteza e da senhora Rainha, a elles m emcomemdo, que façam minhas cousas grandes, pois acabo em cousas de voso seruiço, e por elles vollo tenho merecido; e as minhas tenças, as quaes comprey pela maior parte, como vossa alteza sabe, beijar lh ey as mãos pollas em meu filho: escrita no mar a 6 dias de dezembro de 1515. Afomso dalboquerque",
},
}
hashers := []string{
"polyroll",
"md5",
"crc32",
}
for _, testcase := range testcases {
for i := 1; i <= 10; i++ {
for _, hasher := range hashers {
base := testcase[0]
target := testcase[1]
signatureConfig := &SignatureConfig{
Hasher: hasher,
BlockSize: i * i,
BaseSize: len(base),
}
run(base, target, signatureConfig)
}
}
}
})
})
}