Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
9 changes: 9 additions & 0 deletions Assets/SequenceSDK/Ethereum/Tests/ABIRegexTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,15 @@ public void TestMatchesFunctionName(string input, bool expected)
[TestCase("functionName(a[],a)", true)]
[TestCase("functionName(a[5],a)", true)]
[TestCase("functionName(a[][],a)", true)]
[TestCase("functionName((a[5],a))", true)]
[TestCase("functionName((a[][],a),int)", true)]
[TestCase("functionName((a[][],a),int)", true)]
[TestCase("functionName((a[][],a,int)", false)]
[TestCase("functionName((a[][),a,int)", false)]
[TestCase("functionName((a[][]),a,int)", true)]
[TestCase("functionName(a[][],(a,int))", true)]
[TestCase("functionName(a[][],a,int))", false)]
[TestCase("functionName(a[][],(a,int),string,(uint,int,a,bytes[5][]))", true)]
public void TestMatchesFunctionABI(string input, bool expected)
{
bool result = ABIRegex.MatchesFunctionABI(input);
Expand Down
64 changes: 64 additions & 0 deletions Assets/SequenceSDK/WaaS/Tests/WalletInteractionsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
using Sequence.Authentication;
using Sequence.Contracts;
using Sequence.Ethereum.Tests;
using Sequence.Provider;
using Sequence.Utils;
using Sequence.Wallet;

Expand Down Expand Up @@ -553,5 +554,68 @@ public async Task TestInteractingWithContractFunctionsInSnakeCase_DelayedServerS

await tcs.Task;
}

[Test]
public async Task TestInteractWithTupleContract()
{
var tcs = new TaskCompletionSource<bool>();
EndToEndTestHarness testHarness = new EndToEndTestHarness();
Contract contract = new Contract("0x88e57238a23e2619fd42f479d546560b44c698fe");
IEthClient client = new SequenceEthClient(Chain.ArbitrumNova);

Address someAddress = new Address("0x8f408550720b268b0ea0969c527ac997d969a638");
Address anotherAddress = new Address("0x38104f7bb130756dcdd24d804e3e2d2e9df25d7d");
byte[] data = "Something".ToByteArray();
int integer = 3;
string first = "firstWord";
string second = "secondWord";
int number = 7;

testHarness.Login(async wallet =>
{
try
{
TransactionReturn transactionReturn = await wallet.SendTransaction(_chain,
new Transaction[]
{
new SequenceContractCall(contract.GetAddress(),
new AbiData("testTuple((address,string),(string,address,bytes,uint),int)", new object[]
{
(someAddress, first),
(second, anotherAddress, data, integer.ToString()),
number.ToString()
}))
});
Assert.IsNotNull(transactionReturn);
Assert.IsTrue(transactionReturn is SuccessfulTransactionReturn);

Address storedAddress = await contract.QueryContract<Address>("getStoredAddress").Invoke(client);
Assert.AreEqual(someAddress, storedAddress);
Address storedAddress2 = await contract.QueryContract<Address>("getStoredAddress2").Invoke(client);
Assert.AreEqual(anotherAddress, storedAddress2);
byte[] storedBytes = await contract.QueryContract<byte[]>("getStoredBytes").Invoke(client);
Assert.AreEqual(data, storedBytes);
int storedInt = await contract.QueryContract<int>("getStoredInt").Invoke(client);
Assert.AreEqual(integer, storedInt);
string storedString = await contract.QueryContract<string>("getStoredString").Invoke(client);
Assert.AreEqual(first, storedString);
string storedString2 = await contract.QueryContract<string>("getStoredString2").Invoke(client);
Assert.AreEqual(second, storedString2);
uint storedUint = await contract.QueryContract<uint>("getStoredUint").Invoke(client);
Assert.AreEqual(number, storedUint);

tcs.TrySetResult(true);
}
catch (System.Exception e)
{
tcs.TrySetException(e);
}
}, (error, method, email, methods) =>
{
tcs.TrySetException(new Exception(error));
});

await tcs.Task;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ public static class ABIRegex
{

public const string FunctionNameRegex = @"^[A-Z|a-z|_,-|0-9]+$";
public const string FunctionABIRegex = @"^[A-Z|a-z|_,-|0-9]+\(([A-Za-z0-9\[\]]+(, *[A-Za-z0-9\[\]]+)*)?\)$";
public const string FunctionABIRegex = @"^[A-Za-z_][A-Za-z0-9_-]*\((([A-Za-z0-9]+(?:\[\d*\])*|\((?:[A-Za-z0-9]+(?:\[\d*\])*(?:,\s*)?)*\))(?:,\s*([A-Za-z0-9]+(?:\[\d*\])*|\((?:[A-Za-z0-9]+(?:\[\d*\])*(?:,\s*)?)*\)))*)?\)$";

public static bool MatchesFunctionName(string input)
{
Expand Down
2 changes: 1 addition & 1 deletion Packages/Sequence-Unity/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "xyz.0xsequence.waas-unity",
"version": "3.19.0",
"version": "3.19.1",
"displayName": "Sequence Embedded Wallet SDK",
"description": "A Unity SDK for the Sequence WaaS API",
"unity": "2021.3",
Expand Down