go-nostr/negentropy/whatever_test.go

73 lines
1.4 KiB
Go

package negentropy
import (
"fmt"
"testing"
"github.com/nbd-wtf/go-nostr"
"github.com/stretchr/testify/require"
)
func TestSimple(t *testing.T) {
var err error
var q []byte
var n1 *Negentropy
var n2 *Negentropy
events := make([]*nostr.Event, 20)
for i := range events {
evt := nostr.Event{Content: fmt.Sprintf("event %d", i+1)}
evt.CreatedAt = nostr.Timestamp(i)
evt.ID = evt.GetID()
events[i] = &evt
}
{
n1, _ = NewNegentropy(NewVector(32), 1<<16, 32)
for i := 2; i < 15; i++ {
n1.Insert(events[i])
}
q, err = n1.Initiate()
if err != nil {
t.Fatal(err)
return
}
fmt.Println("n1:", q)
}
{
n2, _ = NewNegentropy(NewVector(32), 1<<16, 32)
for i := 0; i < 2; i++ {
n2.Insert(events[i])
}
for i := 15; i < 20; i++ {
n2.Insert(events[i])
}
q, err = n2.Reconcile(q)
if err != nil {
t.Fatal(err)
return
}
fmt.Println("n2:", q)
}
{
var have []string
var need []string
q, err = n1.ReconcileWithIDs(q, &have, &need)
if err != nil {
t.Fatal(err)
return
}
fmt.Println("n1:", q)
fmt.Println("have", have)
fmt.Println("need", need)
require.Equal(t, have, []string{"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"})
require.Equal(t, need, []string{"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"})
}
}