bson/internal/ptrutil/int64_test.go
2025-03-17 20:58:26 +01:00

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)
})
}
}