forked from mongodb/mongo-go-driver
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
GODRIVER-2742 Do not perform server selection to determine sessions s…
…upport (mongodb#1295) Co-authored-by: Matt Dale <9760375+matthewdale@users.noreply.github.com> Co-authored-by: Kevin Albertson <kevin.albertson@10gen.com>
- Loading branch information
1 parent
5ee10b9
commit 26f508f
Showing
23 changed files
with
1,002 additions
and
390 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
// 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 | ||
|
||
// CompareInt64 is a piecewise function with the following return conditions: | ||
// | ||
// (1) 2, ptr1 != nil AND ptr2 == nil | ||
// (2) 1, *ptr1 > *ptr2 | ||
// (3) 0, ptr1 == ptr2 or *ptr1 == *ptr2 | ||
// (4) -1, *ptr1 < *ptr2 | ||
// (5) -2, ptr1 == nil AND ptr2 != nil | ||
func CompareInt64(ptr1, ptr2 *int64) int { | ||
if ptr1 == ptr2 { | ||
// This will catch the double nil or same-pointer cases. | ||
return 0 | ||
} | ||
|
||
if ptr1 == nil && ptr2 != nil { | ||
return -2 | ||
} | ||
|
||
if ptr1 != nil && ptr2 == nil { | ||
return 2 | ||
} | ||
|
||
if *ptr1 > *ptr2 { | ||
return 1 | ||
} | ||
|
||
if *ptr1 < *ptr2 { | ||
return -1 | ||
} | ||
|
||
return 0 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
// 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" | ||
|
||
"go.mongodb.org/mongo-driver/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) | ||
}) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.