diff --git a/token-erc-1155/chaincode-go/chaincode/contract.go b/token-erc-1155/chaincode-go/chaincode/contract.go index acd1fa9c1a..95e3b15b3a 100644 --- a/token-erc-1155/chaincode-go/chaincode/contract.go +++ b/token-erc-1155/chaincode-go/chaincode/contract.go @@ -1113,9 +1113,9 @@ func sortedKeysToID(m map[ToID]uint64) []ToID { // Sort the slice first according to ID if equal then sort by recipient ("To" field) sort.Slice(keys, func(i, j int) bool { if keys[i].ID != keys[j].ID { - return keys[i].To < keys[j].To + return keys[i].ID < keys[j].ID } - return keys[i].ID < keys[j].ID + return keys[i].To < keys[j].To }) return keys } diff --git a/token-erc-1155/chaincode-go/chaincode/contract_test.go b/token-erc-1155/chaincode-go/chaincode/contract_test.go new file mode 100644 index 0000000000..277eb69810 --- /dev/null +++ b/token-erc-1155/chaincode-go/chaincode/contract_test.go @@ -0,0 +1,32 @@ +package chaincode + +import ( + "reflect" + "testing" +) + +func TestSortedKeysToID(t *testing.T) { + testMap := map[ToID]uint64{ + {To: "Alice", ID: 2}: 100, + {To: "Bob", ID: 1}: 200, + {To: "Charlie", ID: 2}: 300, + {To: "Alice", ID: 1}: 400, + {To: "Bob", ID: 2}: 500, + {To: "Charlie", ID: 1}: 600, + } + + expectedResult := []ToID{ + {To: "Alice", ID: 1}, + {To: "Bob", ID: 1}, + {To: "Charlie", ID: 1}, + {To: "Alice", ID: 2}, + {To: "Bob", ID: 2}, + {To: "Charlie", ID: 2}, + } + + result := sortedKeysToID(testMap) + + if !reflect.DeepEqual(result, expectedResult) { + t.Fatalf("sortedKeysToID failed.\nExpected: %v\nGot: %v", expectedResult, result) + } +}