diff --git a/types/shares_test.go b/types/shares_test.go index 77963b389a..24079794d9 100644 --- a/types/shares_test.go +++ b/types/shares_test.go @@ -2,6 +2,7 @@ package types import ( "bytes" + "math/rand" "reflect" "testing" @@ -61,8 +62,8 @@ func TestMakeShares(t *testing.T) { ID: reservedEvidenceNamespaceID, }, NamespacedShare{ Share: append( - append(reservedEvidenceNamespaceID, byte(0)), - zeroPadIfNecessary(testEvidenceBytes[TxShareSize:], TxShareSize)..., + reservedEvidenceNamespaceID, + zeroPadIfNecessary(testEvidenceBytes[TxShareSize:], MsgShareSize)..., ), ID: reservedEvidenceNamespaceID, }}, @@ -74,8 +75,8 @@ func TestMakeShares(t *testing.T) { NamespacedShares{ NamespacedShare{ Share: append( - append(reservedTxNamespaceID, byte(0)), - zeroPadIfNecessary(smolTxLenDelimited, TxShareSize)..., + reservedTxNamespaceID, + zeroPadIfNecessary(smolTxLenDelimited, MsgShareSize)..., ), ID: reservedTxNamespaceID, }, @@ -88,15 +89,15 @@ func TestMakeShares(t *testing.T) { NamespacedShares{ NamespacedShare{ Share: append( - append(reservedTxNamespaceID, byte(0)), - largeTxLenDelimited[:TxShareSize]..., + reservedTxNamespaceID, + largeTxLenDelimited[:MsgShareSize]..., ), ID: reservedTxNamespaceID, }, NamespacedShare{ Share: append( - append(reservedTxNamespaceID, byte(0)), - zeroPadIfNecessary(largeTxLenDelimited[TxShareSize:], TxShareSize)..., + reservedTxNamespaceID, + zeroPadIfNecessary(largeTxLenDelimited[MsgShareSize:], MsgShareSize)..., ), ID: reservedTxNamespaceID, }, @@ -109,17 +110,17 @@ func TestMakeShares(t *testing.T) { NamespacedShares{ NamespacedShare{ Share: append( - append(reservedTxNamespaceID, byte(0)), - largeTxLenDelimited[:TxShareSize]..., + reservedTxNamespaceID, + largeTxLenDelimited[:MsgShareSize]..., ), ID: reservedTxNamespaceID, }, NamespacedShare{ Share: append( - append(reservedTxNamespaceID, byte(len(largeTxLenDelimited)-TxShareSize+NamespaceSize+ShareReservedBytes)), + reservedTxNamespaceID, zeroPadIfNecessary( - append(largeTxLenDelimited[TxShareSize:], smolTxLenDelimited...), - TxShareSize, + append(largeTxLenDelimited[MsgShareSize:], smolTxLenDelimited...), + MsgShareSize, )..., ), ID: reservedTxNamespaceID, @@ -194,7 +195,43 @@ func Test_appendToSharesOverwrite(t *testing.T) { assert.Equal(t, extraCopy, []byte(newShare.Share[:MsgShareSize])) } -func generateRandomNamespacedShares(count, leafSize int) []NamespacedShare { +func Test_parseShares(t *testing.T) { + type test struct { + name string + count int + maxSize uint8 + } + + // generateRandNamespacedRawData(2, NamespaceSize, MsgShareSize) + + tests := []test{ + {"basic", 5, 88}, + } + for _, tt := range tests { + tt := tt + txs, namedShares := generateRandomContiguousShares(tt.count, tt.maxSize) + res := parseShares(namedShares) + assert.Equal(t, len(res), len(txs)) + for i, got := range res { + assert.Equal(t, []byte(txs[i]), got) + } + } +} + +func generateRandomContiguousShares(count int, maxSize uint8) (Txs, [][]byte) { + txs := make(Txs, count) + for i := 0; i < count; i++ { + tx := make([]byte, (randInt(50, int(maxSize)))) + _, err := rand.Read(tx) + if err != nil { + panic(err) + } + txs[i] = Tx(tx) + } + return txs, txs.splitIntoShares().RawShares() +} + +func generateRandomNamespacedShares(count, leafSize int) NamespacedShares { shares := generateRandNamespacedRawData(count, NamespaceSize, leafSize) nsShares := make(NamespacedShares, count) for i, s := range shares {