Add Encoder example (and test)

master
Klaus Post 2015-06-20 11:29:26 +02:00
parent 419c6cc9e9
commit d54843ee41
1 changed files with 38 additions and 0 deletions

View File

@ -8,6 +8,7 @@
package reedsolomon
import (
"fmt"
"math/rand"
"testing"
)
@ -274,3 +275,40 @@ func BenchmarkVerify50x5x50000(b *testing.B) {
func BenchmarkVerify10x4x16M(b *testing.B) {
benchmarkVerify(b, 10, 4, 16*1024*1024)
}
// Simple example of how to use all functions of the Encoder.
// Note that all error checks have been removed to keep it short.
func ExampleEncoder() {
// Create some sample data
var data = make([]byte, 250000)
fillRandom(data)
// Create an encoder with 17 data and 3 parity slices.
enc, _ := New(17, 3)
// Split the data into shards
shards, _ := enc.Split(data)
// Encode the parity set
_ = enc.Encode(shards)
// Verify the parity set
ok, _ := enc.Verify(shards)
if ok {
fmt.Println("ok")
}
// Delete two shards
shards[10], shards[11] = nil, nil
// Reconstruct the shards
_ = enc.Reconstruct(shards)
// Verify the data set
ok, _ = enc.Verify(shards)
if ok {
fmt.Println("ok")
}
// Output: ok
// ok
}