77 lines
1.4 KiB
Go
77 lines
1.4 KiB
Go
// Copyright (C) MongoDB, Inc. 2023-present.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
// not use this file except in compliance with the License. You may obtain
|
|
// a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
package ptrutil
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"gitea.psichedelico.com/go/bson/internal/assert"
|
|
)
|
|
|
|
func TestCompareInt64(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
int64ToPtr := func(i64 int64) *int64 { return &i64 }
|
|
int64Ptr := int64ToPtr(1)
|
|
|
|
tests := []struct {
|
|
name string
|
|
ptr1, ptr2 *int64
|
|
want int
|
|
}{
|
|
{
|
|
name: "empty",
|
|
want: 0,
|
|
},
|
|
{
|
|
name: "ptr1 nil",
|
|
ptr2: int64ToPtr(1),
|
|
want: -2,
|
|
},
|
|
{
|
|
name: "ptr2 nil",
|
|
ptr1: int64ToPtr(1),
|
|
want: 2,
|
|
},
|
|
{
|
|
name: "ptr1 and ptr2 have same value, different address",
|
|
ptr1: int64ToPtr(1),
|
|
ptr2: int64ToPtr(1),
|
|
want: 0,
|
|
},
|
|
{
|
|
name: "ptr1 and ptr2 have the same address",
|
|
ptr1: int64Ptr,
|
|
ptr2: int64Ptr,
|
|
want: 0,
|
|
},
|
|
{
|
|
name: "ptr1 GT ptr2",
|
|
ptr1: int64ToPtr(1),
|
|
ptr2: int64ToPtr(0),
|
|
want: 1,
|
|
},
|
|
{
|
|
name: "ptr1 LT ptr2",
|
|
ptr1: int64ToPtr(0),
|
|
ptr2: int64ToPtr(1),
|
|
want: -1,
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
test := test // capture the range variable
|
|
|
|
t.Run(test.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
got := CompareInt64(test.ptr1, test.ptr2)
|
|
assert.Equal(t, test.want, got, "compareInt64() = %v, wanted %v", got, test.want)
|
|
})
|
|
}
|
|
}
|