diff --git a/negentropy/whatever_test.go b/negentropy/whatever_test.go index 754c3dc..ff7d705 100644 --- a/negentropy/whatever_test.go +++ b/negentropy/whatever_test.go @@ -8,24 +8,42 @@ import ( "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 q []byte var n1 *Negentropy var n2 *Negentropy - events := make([]*nostr.Event, 20) + events := make([]*nostr.Event, totalEvents) 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.ID = evt.GetID() events[i] = &evt + fmt.Println("evt", i, evt.ID) } { n1, _ = NewNegentropy(NewVector(32), 1<<16, 32) - for i := 2; i < 15; i++ { - n1.Insert(events[i]) + for _, r := range n1Ranges { + for i := r[0]; i < r[1]; i++ { + n1.Insert(events[i]) + } } q, err = n1.Initiate() @@ -39,11 +57,10 @@ func TestSmallNumber(t *testing.T) { { n2, _ = NewNegentropy(NewVector(32), 1<<16, 32) - for i := 0; i < 7; i++ { - n2.Insert(events[i]) - } - for i := 10; i < 20; i++ { - n2.Insert(events[i]) + for _, r := range n2Ranges { + for i := r[0]; i < r[1]; i++ { + n2.Insert(events[i]) + } } q, _, _, err = n2.Reconcile(q) @@ -64,22 +81,26 @@ func TestSmallNumber(t *testing.T) { } fmt.Println("[n1]:", q) fmt.Println("") - fmt.Println("have", have) - fmt.Println("need", need) + fmt.Println("", need) + fmt.Println("", have) - expectedNeed := make([]string, 0, 2+5) - for i := 0; i < 2; i++ { - expectedNeed = append(expectedNeed, events[i].ID) - } - for i := 15; i < 20; i++ { - expectedNeed = append(expectedNeed, events[i].ID) + expectedNeed := make([]string, 0, 100) + for _, r := range expectedN1NeedRanges { + for i := r[0]; i < r[1]; i++ { + expectedNeed = append(expectedNeed, events[i].ID) + } } - expectedHave := make([]string, 0, 3) - for i := 7; i < 10; i++ { - expectedHave = append(expectedHave, events[i].ID) + expectedHave := make([]string, 0, 100) + for _, r := range expectedN1HaveRanges { + for i := r[0]; i < r[1]; i++ { + expectedHave = append(expectedHave, events[i].ID) + } } + fmt.Println("", expectedNeed) + fmt.Println("", expectedHave) + require.ElementsMatch(t, expectedNeed, need, "wrong need") require.ElementsMatch(t, expectedHave, have, "wrong have") }