CompareEvent/Ptr/Reverse utils.

This commit is contained in:
fiatjaf 2024-09-30 00:39:26 -03:00
parent fe3508881b
commit d29025e958
2 changed files with 93 additions and 0 deletions

View File

@ -35,3 +35,44 @@ func CompareEvent(a, b Event) int {
}
return cmp.Compare(a.CreatedAt, b.CreatedAt)
}
func CompareEventReverse(b, a Event) int {
if a.CreatedAt == b.CreatedAt {
return strings.Compare(a.ID, b.ID)
}
return cmp.Compare(a.CreatedAt, b.CreatedAt)
}
func CompareEventPtr(a, b *Event) int {
if a == nil {
if b == nil {
return 0
} else {
return -1
}
} else if b == nil {
return 1
}
if a.CreatedAt == b.CreatedAt {
return strings.Compare(a.ID, b.ID)
}
return cmp.Compare(a.CreatedAt, b.CreatedAt)
}
func CompareEventPtrReverse(b, a *Event) int {
if a == nil {
if b == nil {
return 0
} else {
return -1
}
} else if b == nil {
return 1
}
if a.CreatedAt == b.CreatedAt {
return strings.Compare(a.ID, b.ID)
}
return cmp.Compare(a.CreatedAt, b.CreatedAt)
}

View File

@ -1,9 +1,11 @@
package nostr
import (
"slices"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestIsValidRelayURL(t *testing.T) {
@ -24,3 +26,53 @@ func TestIsValidRelayURL(t *testing.T) {
assert.Equal(t, test.want, got)
}
}
func TestEventsCompare(t *testing.T) {
list := []Event{
{CreatedAt: 12},
{CreatedAt: 8},
{CreatedAt: 26},
{CreatedAt: 1},
}
slices.SortFunc(list, CompareEvent)
require.Equal(t, []Event{
{CreatedAt: 1},
{CreatedAt: 8},
{CreatedAt: 12},
{CreatedAt: 26},
}, list)
slices.SortFunc(list, CompareEventReverse)
require.Equal(t, []Event{
{CreatedAt: 26},
{CreatedAt: 12},
{CreatedAt: 8},
{CreatedAt: 1},
}, list)
}
func TestEventsComparePtr(t *testing.T) {
list := []*Event{
{CreatedAt: 12},
{CreatedAt: 8},
{CreatedAt: 26},
{CreatedAt: 1},
}
slices.SortFunc(list, CompareEventPtr)
require.Equal(t, []*Event{
{CreatedAt: 1},
{CreatedAt: 8},
{CreatedAt: 12},
{CreatedAt: 26},
}, list)
slices.SortFunc(list, CompareEventPtrReverse)
require.Equal(t, []*Event{
{CreatedAt: 26},
{CreatedAt: 12},
{CreatedAt: 8},
{CreatedAt: 1},
}, list)
}