The core protocol of WoopChain
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
woop/p2p/ida/ida_test.go

78 lines
1.5 KiB

6 years ago
package ida
import (
"math/rand"
"testing"
"time"
"github.com/harmony-one/harmony/p2p"
6 years ago
)
var (
a = Symbol{0, 0}
b = Symbol{1, 0}
c = Symbol{0, 1}
d = Symbol{1, 1}
)
type FakeRaptor struct {
symbols []Symbol
done chan struct{}
r *rand.Rand
}
func (raptor *FakeRaptor) Init() {
// raptor.symbols = make([]Symbol, 4)
raptor.symbols = make([]Symbol, 4)
raptor.symbols[0] = make(Symbol, 2)
copy(raptor.symbols[0], a)
raptor.symbols[1] = make(Symbol, 2)
copy(raptor.symbols[1], b)
raptor.symbols[2] = make(Symbol, 2)
copy(raptor.symbols[2], c)
raptor.symbols[3] = make(Symbol, 2)
copy(raptor.symbols[3], d)
raptor.r = rand.New(rand.NewSource(99))
raptor.done = make(chan struct{})
}
func (raptor *FakeRaptor) generate(res chan Symbol) {
for {
select {
case <-raptor.done:
return
default:
i := raptor.r.Intn(4)
res <- raptor.symbols[i]
}
}
}
func (raptor *FakeRaptor) Process(msg Message) chan Symbol {
res := make(chan Symbol)
go raptor.generate(res)
return res
}
func TestShouldReturnErrRaptorImpNotFound(t *testing.T) {
ida := &IDAImp{}
done := make(chan struct{})
err := ida.Process([]byte{}, []p2p.Peer{}, done, time.Second)
if err != ErrRaptorImpNotFound {
t.Fatal("Should return an error")
}
}
func TestSimple(t *testing.T) {
raptor := &FakeRaptor{}
raptor.Init()
// ida := &IDAImp{}
// done := make(chan struct{})
// ida.TakeRaptorQ(raptor)
// err := ida.Process([]byte{}, []p2p.Peer{}, done, time.Second)
// if err == ErrRaptorImpNotFound {
// t.Fatal("Should return an error")
// }
}