Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions src/sdk/main/include/TokenTransfer.h
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,14 @@ class TokenTransfer
*/
void validateChecksums(const Client& client) const;

/**
* Compare this TokenTransfer instance to another TokenTransfer instance and determine if they represent the same pending TokenTransfer.
*
* @param other The other TokenTransfer with which to compare this TokenTransfer.
* @return \c TRUE if this TokenTransfer is the same as the input TokenTransfer, otherwise \c FALSE.
*/
[[nodiscard]] bool operator==(const TokenTransfer&);

/**
* Construct an AccountAmount protobuf object from this TokenTransfer object.
*
Expand Down
7 changes: 7 additions & 0 deletions src/sdk/main/src/TokenTransfer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,13 @@ void TokenTransfer::validateChecksums(const Client& client) const
mAccountId.validateChecksum(client);
}

//-----
bool operator==(const TokenTransfer& other) {
return (mTokenId == other.mTokenId) && (mAccountId == other.mAccountId) &&
(mAmount == other.mAmount) && (mIsApproval == other.mIsApproval) &&
(mExpectedDecimals == other.mExpectedDecimals);
}

//-----
std::unique_ptr<proto::AccountAmount> TokenTransfer::toProtobuf() const
{
Expand Down
38 changes: 38 additions & 0 deletions src/sdk/tests/unit/TokenTransferUnitTests.cc
Original file line number Diff line number Diff line change
Expand Up @@ -114,3 +114,41 @@ TEST_F(TokenTransferUnitTests, ToProtobuf)
EXPECT_EQ(proto->amount(), getTestAmount());
EXPECT_EQ(proto->is_approval(), getTestIsApproval());
}

//-----
TEST_F(TokenTransferUnitTests, OperatorEqualsSame)
{
// Given
// Default
TokenTransfer defaultTokenL;
TokenTransfer defaultTokenR;
// Identical
TokenTransfer equalTokenL(
getTestTokenId(), getTestAccountId(), getTestAmount(), getTestExpectedDecimals(), getTestIsApproval());
TokenTransfer equalTokenR(
getTestTokenId(), getTestAccountId(), getTestAmount(), getTestExpectedDecimals(), getTestIsApproval());

// Then
EXPECT_TRUE(defaultTokenL == defaultTokenR);
EXPECT_TRUE(equalTokenL == equalTokenR);
}

//-----
TEST_F(TokenTransferUnitTests, OperatorEqualsDiff)
{
// Given
TokenTransfer testTokenTransfer(getTestTokenId(), getTestAccountId(), getTestAmount(), getTestExpectedDecimals(), true);

TokenTransfer diffTestToken( TokenId(505ULL), getTestAccountId(), getTestAmount(), getTestExpectedDecimals(), getTestIsApproval());
TokenTransfer diffTestAccountId(getTestTokenId(), AccountId(12345ULL), getTestAmount(), getTestExpectedDecimals(), getTestIsApproval());
TokenTransfer diffTestAmount(getTestTokenId(), getTestAccountId(), 500LL, getTestExpectedDecimals(), getTestIsApproval());
TokenTransfer diffTestExpectedDecimals(getTestTokenId(), getTestAccountId(), getTestAmount(), 2U, getTestIsApproval());
TokenTransfer diffTestIsApproval(getTestTokenId(), getTestAccountId(), getTestAmount(), getTestExpectedDecimals(), false);

// Then
EXPECT_FALSE(testTokenTransfer == diffTestToken);
EXPECT_FALSE(testTokenTransfer == diffTestAccountId);
EXPECT_FALSE(testTokenTransfer == diffTestAmount);
EXPECT_FALSE(testTokenTransfer == diffTestExpectedDecimals);
EXPECT_FALSE(testTokenTransfer == diffTestIsApproval);
}