mirror of
https://github.com/nbd-wtf/go-nostr.git
synced 2025-06-11 01:10:48 +02:00
CompareEvent/Ptr/Reverse utils.
This commit is contained in:
parent
fe3508881b
commit
d29025e958
41
utils.go
41
utils.go
@ -35,3 +35,44 @@ func CompareEvent(a, b Event) int {
|
|||||||
}
|
}
|
||||||
return cmp.Compare(a.CreatedAt, b.CreatedAt)
|
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)
|
||||||
|
}
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
package nostr
|
package nostr
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"slices"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestIsValidRelayURL(t *testing.T) {
|
func TestIsValidRelayURL(t *testing.T) {
|
||||||
@ -24,3 +26,53 @@ func TestIsValidRelayURL(t *testing.T) {
|
|||||||
assert.Equal(t, test.want, got)
|
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)
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user