abstract test suite.

This commit is contained in:
fiatjaf 2024-07-21 23:27:03 -03:00
parent e5e2279ca3
commit d68a17d6e8

View File

@ -8,24 +8,42 @@ import (
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
) )
func TestSmallNumber(t *testing.T) { func TestWhatever(t *testing.T) {
runTestWith(t,
"small numbers",
20,
[][]int{{2, 15}}, [][]int{{0, 7}, {10, 20}},
[][]int{{0, 2}, {15, 20}}, [][]int{{7, 10}})
}
func runTestWith(t *testing.T,
name string,
totalEvents int,
n1Ranges [][]int, n2Ranges [][]int,
expectedN1NeedRanges [][]int, expectedN1HaveRanges [][]int,
) {
var err error var err error
var q []byte var q []byte
var n1 *Negentropy var n1 *Negentropy
var n2 *Negentropy var n2 *Negentropy
events := make([]*nostr.Event, 20) events := make([]*nostr.Event, totalEvents)
for i := range events { for i := range events {
evt := nostr.Event{Content: fmt.Sprintf("event %d", i+1)} evt := nostr.Event{}
evt.Content = fmt.Sprintf("event %d", i+1)
evt.Kind = 1
evt.CreatedAt = nostr.Timestamp(i) evt.CreatedAt = nostr.Timestamp(i)
evt.ID = evt.GetID() evt.ID = evt.GetID()
events[i] = &evt events[i] = &evt
fmt.Println("evt", i, evt.ID)
} }
{ {
n1, _ = NewNegentropy(NewVector(32), 1<<16, 32) n1, _ = NewNegentropy(NewVector(32), 1<<16, 32)
for i := 2; i < 15; i++ { for _, r := range n1Ranges {
n1.Insert(events[i]) for i := r[0]; i < r[1]; i++ {
n1.Insert(events[i])
}
} }
q, err = n1.Initiate() q, err = n1.Initiate()
@ -39,11 +57,10 @@ func TestSmallNumber(t *testing.T) {
{ {
n2, _ = NewNegentropy(NewVector(32), 1<<16, 32) n2, _ = NewNegentropy(NewVector(32), 1<<16, 32)
for i := 0; i < 7; i++ { for _, r := range n2Ranges {
n2.Insert(events[i]) for i := r[0]; i < r[1]; i++ {
} n2.Insert(events[i])
for i := 10; i < 20; i++ { }
n2.Insert(events[i])
} }
q, _, _, err = n2.Reconcile(q) q, _, _, err = n2.Reconcile(q)
@ -64,22 +81,26 @@ func TestSmallNumber(t *testing.T) {
} }
fmt.Println("[n1]:", q) fmt.Println("[n1]:", q)
fmt.Println("") fmt.Println("")
fmt.Println("have", have) fmt.Println("<need>", need)
fmt.Println("need", need) fmt.Println("<have>", have)
expectedNeed := make([]string, 0, 2+5) expectedNeed := make([]string, 0, 100)
for i := 0; i < 2; i++ { for _, r := range expectedN1NeedRanges {
expectedNeed = append(expectedNeed, events[i].ID) for i := r[0]; i < r[1]; i++ {
} expectedNeed = append(expectedNeed, events[i].ID)
for i := 15; i < 20; i++ { }
expectedNeed = append(expectedNeed, events[i].ID)
} }
expectedHave := make([]string, 0, 3) expectedHave := make([]string, 0, 100)
for i := 7; i < 10; i++ { for _, r := range expectedN1HaveRanges {
expectedHave = append(expectedHave, events[i].ID) for i := r[0]; i < r[1]; i++ {
expectedHave = append(expectedHave, events[i].ID)
}
} }
fmt.Println("<e-need>", expectedNeed)
fmt.Println("<e-have>", expectedHave)
require.ElementsMatch(t, expectedNeed, need, "wrong need") require.ElementsMatch(t, expectedNeed, need, "wrong need")
require.ElementsMatch(t, expectedHave, have, "wrong have") require.ElementsMatch(t, expectedHave, have, "wrong have")
} }