@@ -802,17 +802,107 @@ func TestEncodeM(t *testing.T) {
802802 _ = backend .Close ()
803803}
804804
805- func TestLinearizeMatrix (t * testing.T ) {
806- assert := assert .New (t )
805+ func TestTwoLinearizeMatrix (t * testing.T ) {
806+ backend , err := InitBackend (Params {Name : "isa_l_rs_vand" , K : 2 , M : 1 , W : 8 , HD : 5 })
807+ require .NoError (t , err )
808+ defer func () {
809+ _ = backend .Close ()
810+ }()
811+ currentChunkSize := 512
812+ dataSize := currentChunkSize * 2 + 10
813+ startIncl := dataSize - 3
814+ endIncl := dataSize - 1
815+
816+ data := make ([]byte , dataSize )
817+ for i := range dataSize {
818+ data [i ] = byte ('A' + i % 26 )
819+ }
820+ bm := NewBufferMatrix (currentChunkSize , len (data ), backend .K )
821+ _ , err = io .Copy (bm , bytes .NewReader (data ))
822+ require .NoError (t , err )
823+ bm .Finish ()
824+ encoded , err := backend .EncodeMatrixWithBufferMatrix (bm , currentChunkSize )
825+ require .NoError (t , err )
826+ defer encoded .Free ()
807827
828+ rangeM := backend .GetRangeMatrix (startIncl , endIncl , currentChunkSize , len (encoded .Data [0 ]))
829+ require .NotNil (t , rangeM )
830+
831+ /* Decode the matrix as if it was requested and
832+ checks that the result matches the payload on the requested range. */
833+ frags := make ([][]byte , 0 )
834+ for i := 0 ; i < rangeM .FragCount ; i ++ {
835+ fragIdx := (rangeM .FragFirstIncl + i ) % backend .K
836+ buffer := encoded .Data [fragIdx ][rangeM .InFragRangeStartIncl :rangeM .InFragRangeEndExcl ]
837+ frags = append (frags , buffer )
838+ }
839+
840+ decoded , err := backend .LinearizeMatrix (frags , currentChunkSize )
841+ require .NoError (t , err )
842+ defer decoded .Free ()
843+
844+ expected := data [startIncl :endIncl ]
845+
846+ linearizedRangeEndExcl := rangeM .LinearizedRangeStartIncl + (endIncl - startIncl )
847+ found := decoded .Data [rangeM .LinearizedRangeStartIncl :linearizedRangeEndExcl ]
848+
849+ require .True (t , bytes .Equal (expected , found ))
850+ }
851+
852+ func TestOneLinearizeMatrix (t * testing.T ) {
853+ backend , err := InitBackend (Params {Name : "isa_l_rs_vand" , K : 4 , M : 2 , W : 8 , HD : 5 })
854+ require .NoError (t , err )
855+ defer func () {
856+ _ = backend .Close ()
857+ }()
858+ dataSize := 105623
859+ startIncl := 59441
860+ endIncl := 64149
861+ data := make ([]byte , dataSize )
862+ for i := range dataSize {
863+ data [i ] = byte ('A' + i % 26 )
864+ }
865+ bm := NewBufferMatrix (DefaultChunkSize , len (data ), backend .K )
866+ _ , err = io .Copy (bm , bytes .NewReader (data ))
867+ require .NoError (t , err )
868+ bm .Finish ()
869+ encoded , err := backend .EncodeMatrixWithBufferMatrix (bm , DefaultChunkSize )
870+ require .NoError (t , err )
871+ defer encoded .Free ()
872+
873+ rangeM := backend .GetRangeMatrix (startIncl , endIncl , DefaultChunkSize , len (encoded .Data [0 ]))
874+ require .NotNil (t , rangeM )
875+
876+ /* Decode the matrix as if it was requested and
877+ checks that the result matches the payload on the requested range. */
878+ frags := make ([][]byte , 0 )
879+ for i := 0 ; i < rangeM .FragCount ; i ++ {
880+ fragIdx := (rangeM .FragFirstIncl + i ) % backend .K
881+ buffer := encoded .Data [fragIdx ][rangeM .InFragRangeStartIncl :rangeM .InFragRangeEndExcl ]
882+ frags = append (frags , buffer )
883+ }
884+
885+ decoded , err := backend .LinearizeMatrix (frags , DefaultChunkSize )
886+ require .NoError (t , err )
887+ defer decoded .Free ()
888+
889+ expected := data [startIncl : endIncl + 1 ]
890+
891+ linearizedRangeEndExcl := rangeM .LinearizedRangeStartIncl + (endIncl - startIncl ) + 1
892+ found := decoded .Data [rangeM .LinearizedRangeStartIncl :linearizedRangeEndExcl ]
893+ require .True (t , bytes .Equal (expected , found ))
894+ }
895+
896+ func TestLinearizeMatrix (t * testing.T ) {
808897 pieceSize := DefaultChunkSize
809898 k := 4
810899 m := 1
811900
812901 backend , err := InitBackend (Params {Name : "isa_l_rs_vand" , K : k , M : m , W : 8 , HD : m })
813- if err != nil {
814- t .Fatalf ("cannot init backend: (%v)" , err )
815- }
902+ require .NoError (t , err )
903+ defer func () {
904+ _ = backend .Close ()
905+ }()
816906
817907 rangeValues := func (values []reflect.Value , rng * rand.Rand ) {
818908 dataSize := 1 + rng .Intn (7 * 1024 * 1024 )
@@ -848,7 +938,7 @@ func TestLinearizeMatrix(t *testing.T) {
848938
849939 fragSize := len (encoded .Data [0 ])
850940 rangeM := backend .GetRangeMatrix (startIncl , endIncl , pieceSize , fragSize )
851- assert .NotNil (rangeM )
941+ require .NotNil (t , rangeM )
852942
853943 /* Decode the matrix as if it was requested and
854944 checks that the result matches the payload on the requested range. */
@@ -860,7 +950,7 @@ func TestLinearizeMatrix(t *testing.T) {
860950 }
861951
862952 decoded , err := backend .LinearizeMatrix (frags , pieceSize )
863- assert . Nil ( err )
953+ require . NoError ( t , err )
864954 defer decoded .Free ()
865955
866956 expected := data [startIncl : endIncl + 1 ]
@@ -874,9 +964,8 @@ func TestLinearizeMatrix(t *testing.T) {
874964 Values : rangeValues ,
875965 }
876966
877- if err := quick .Check (checkRange , & config ); err != nil {
878- t .Error (err )
879- }
967+ require .NoError (t , quick .Check (checkRange , & config ))
968+
880969}
881970
882971func TestDecodeMatrix (t * testing.T ) {
0 commit comments