aboutsummaryrefslogtreecommitdiffstats
path: root/swarm/storage/mru/lookup_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'swarm/storage/mru/lookup_test.go')
-rw-r--r--swarm/storage/mru/lookup_test.go85
1 files changed, 85 insertions, 0 deletions
diff --git a/swarm/storage/mru/lookup_test.go b/swarm/storage/mru/lookup_test.go
new file mode 100644
index 000000000..b66b200a3
--- /dev/null
+++ b/swarm/storage/mru/lookup_test.go
@@ -0,0 +1,85 @@
+package mru
+
+import (
+ "bytes"
+ "testing"
+
+ "github.com/ethereum/go-ethereum/common/hexutil"
+)
+
+func getTestUpdateLookup() *UpdateLookup {
+ metadata := *getTestMetadata()
+ rootAddr, _, _, _ := metadata.serializeAndHash()
+ return &UpdateLookup{
+ period: 79,
+ version: 2010,
+ rootAddr: rootAddr,
+ }
+}
+
+func compareUpdateLookup(a, b *UpdateLookup) bool {
+ return a.version == b.version &&
+ a.period == b.period &&
+ bytes.Equal(a.rootAddr, b.rootAddr)
+}
+
+func TestUpdateLookupUpdateAddr(t *testing.T) {
+ ul := getTestUpdateLookup()
+ updateAddr := ul.UpdateAddr()
+ compareByteSliceToExpectedHex(t, "updateAddr", updateAddr, "0x8fbc8d4777ef6da790257eda80ab4321fabd08cbdbe67e4e3da6caca386d64e0")
+}
+
+func TestUpdateLookupSerializer(t *testing.T) {
+ serializedUpdateLookup := make([]byte, updateLookupLength)
+ ul := getTestUpdateLookup()
+ if err := ul.binaryPut(serializedUpdateLookup); err != nil {
+ t.Fatal(err)
+ }
+ compareByteSliceToExpectedHex(t, "serializedUpdateLookup", serializedUpdateLookup, "0x4f000000da070000fb0ed7efa696bdb0b54cd75554cc3117ffc891454317df7dd6fefad978e2f2fb")
+
+ // set receiving slice to the wrong size
+ serializedUpdateLookup = make([]byte, updateLookupLength+7)
+ if err := ul.binaryPut(serializedUpdateLookup); err == nil {
+ t.Fatalf("Expected UpdateLookup.binaryPut to fail when receiving slice has a length != %d", updateLookupLength)
+ }
+
+ // set rootAddr to an invalid length
+ ul.rootAddr = []byte{1, 2, 3, 4}
+ serializedUpdateLookup = make([]byte, updateLookupLength)
+ if err := ul.binaryPut(serializedUpdateLookup); err == nil {
+ t.Fatal("Expected UpdateLookup.binaryPut to fail when rootAddr is not of the correct size")
+ }
+}
+
+func TestUpdateLookupDeserializer(t *testing.T) {
+ serializedUpdateLookup, _ := hexutil.Decode("0x4f000000da070000fb0ed7efa696bdb0b54cd75554cc3117ffc891454317df7dd6fefad978e2f2fb")
+ var recoveredUpdateLookup UpdateLookup
+ if err := recoveredUpdateLookup.binaryGet(serializedUpdateLookup); err != nil {
+ t.Fatal(err)
+ }
+ originalUpdateLookup := *getTestUpdateLookup()
+ if !compareUpdateLookup(&originalUpdateLookup, &recoveredUpdateLookup) {
+ t.Fatalf("Expected recovered UpdateLookup to match")
+ }
+
+ // set source slice to the wrong size
+ serializedUpdateLookup = make([]byte, updateLookupLength+4)
+ if err := recoveredUpdateLookup.binaryGet(serializedUpdateLookup); err == nil {
+ t.Fatalf("Expected UpdateLookup.binaryGet to fail when source slice has a length != %d", updateLookupLength)
+ }
+}
+
+func TestUpdateLookupSerializeDeserialize(t *testing.T) {
+ serializedUpdateLookup := make([]byte, updateLookupLength)
+ originalUpdateLookup := getTestUpdateLookup()
+ if err := originalUpdateLookup.binaryPut(serializedUpdateLookup); err != nil {
+ t.Fatal(err)
+ }
+ var recoveredUpdateLookup UpdateLookup
+ if err := recoveredUpdateLookup.binaryGet(serializedUpdateLookup); err != nil {
+ t.Fatal(err)
+ }
+ if !compareUpdateLookup(originalUpdateLookup, &recoveredUpdateLookup) {
+ t.Fatalf("Expected recovered UpdateLookup to match")
+ }
+}