Skip to content

Commit b46b0b4

Browse files
committed
Merge branch 'master' into Fix/profile-balance-amount
2 parents 063a624 + d0d0e8e commit b46b0b4

File tree

11 files changed

+312
-7
lines changed

11 files changed

+312
-7
lines changed
Lines changed: 209 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,209 @@
1+
using System.Collections;
2+
using System.Collections.Generic;
3+
using System.Numerics;
4+
using NUnit.Framework;
5+
using UnityEngine;
6+
using UnityEngine.TestTools;
7+
using Sequence.Utils;
8+
9+
public class DecimalNormalizerTests
10+
{
11+
[Test]
12+
public void Normalize_WithDefaultDecimals_ReturnsCorrectString()
13+
{
14+
string result = DecimalNormalizer.Normalize(1.5f);
15+
Assert.AreEqual("1500000000000000000", result);
16+
}
17+
18+
[Test]
19+
public void Normalize_WithCustomDecimals_ReturnsCorrectString()
20+
{
21+
string result = DecimalNormalizer.Normalize(1.5f, 6);
22+
Assert.AreEqual("1500000", result);
23+
}
24+
25+
[Test]
26+
public void Normalize_WithZero_ReturnsZero()
27+
{
28+
string result = DecimalNormalizer.Normalize(0f);
29+
Assert.AreEqual("0", result);
30+
}
31+
32+
[Test]
33+
public void Normalize_WithNegativeNumber_ReturnsPositiveResult()
34+
{
35+
string result = DecimalNormalizer.Normalize(-1.5f, 6);
36+
Assert.AreEqual("1500000", result);
37+
}
38+
39+
[Test]
40+
public void NormalizeAsBigInteger_WithDefaultDecimals_ReturnsCorrectBigInteger()
41+
{
42+
BigInteger result = DecimalNormalizer.NormalizeAsBigInteger(1.5f);
43+
BigInteger expected = new BigInteger(1500000000000000000);
44+
Assert.AreEqual(expected, result);
45+
}
46+
47+
[Test]
48+
public void NormalizeAsBigInteger_WithCustomDecimals_ReturnsCorrectBigInteger()
49+
{
50+
BigInteger result = DecimalNormalizer.NormalizeAsBigInteger(2.75f, 4);
51+
BigInteger expected = new BigInteger(27500);
52+
Assert.AreEqual(expected, result);
53+
}
54+
55+
[Test]
56+
public void NormalizeAsBigInteger_WithSmallNumber_ReturnsCorrectBigInteger()
57+
{
58+
BigInteger result = DecimalNormalizer.NormalizeAsBigInteger(0.001f, 6);
59+
BigInteger expected = new BigInteger(1000);
60+
Assert.AreEqual(expected, result);
61+
}
62+
63+
[Test]
64+
public void ReturnToNormalString_WithWholeNumber_ReturnsCorrectString()
65+
{
66+
BigInteger input = new BigInteger(1500000000000000000);
67+
string result = DecimalNormalizer.ReturnToNormalString(input, 18);
68+
Assert.AreEqual("1.5", result);
69+
}
70+
71+
[Test]
72+
public void ReturnToNormalString_WithCustomDecimals_ReturnsCorrectString()
73+
{
74+
BigInteger input = new BigInteger(1500000);
75+
string result = DecimalNormalizer.ReturnToNormalString(input, 6);
76+
Assert.AreEqual("1.5", result);
77+
}
78+
79+
[Test]
80+
public void ReturnToNormalString_WithSmallNumber_ReturnsCorrectString()
81+
{
82+
BigInteger input = new BigInteger(1000);
83+
string result = DecimalNormalizer.ReturnToNormalString(input, 6);
84+
Assert.AreEqual("0.001", result);
85+
}
86+
87+
[Test]
88+
public void ReturnToNormalString_WithZero_ReturnsZero()
89+
{
90+
BigInteger input = new BigInteger(0);
91+
string result = DecimalNormalizer.ReturnToNormalString(input, 18);
92+
Assert.AreEqual("0", result);
93+
}
94+
95+
[Test]
96+
public void ReturnToNormalString_WithNegativeNumber_ReturnsPositiveResult()
97+
{
98+
BigInteger input = new BigInteger(-1500000000000000000);
99+
string result = DecimalNormalizer.ReturnToNormalString(input, 18);
100+
Assert.AreEqual("1.5", result);
101+
}
102+
103+
[Test]
104+
public void ReturnToNormalString_WithTrailingZeros_TrimsZeros()
105+
{
106+
BigInteger input = new BigInteger(1500000000000000000);
107+
string result = DecimalNormalizer.ReturnToNormalString(input, 18);
108+
Assert.AreEqual("1.5", result);
109+
}
110+
111+
[Test]
112+
public void ReturnToNormal_WithBigInteger_ReturnsCorrectFloat()
113+
{
114+
BigInteger input = new BigInteger(1500000000000000000);
115+
float result = DecimalNormalizer.ReturnToNormal(input, 18);
116+
Assert.AreEqual(1.5f, result, 0.0001f);
117+
}
118+
119+
[Test]
120+
public void ReturnToNormal_WithCustomDecimals_ReturnsCorrectFloat()
121+
{
122+
BigInteger input = new BigInteger(2750000);
123+
float result = DecimalNormalizer.ReturnToNormal(input, 6);
124+
Assert.AreEqual(2.75f, result, 0.0001f);
125+
}
126+
127+
[Test]
128+
public void ReturnToNormalPrecise_WithBigInteger_ReturnsCorrectDecimal()
129+
{
130+
BigInteger input = new BigInteger(1500000000000000000);
131+
decimal result = DecimalNormalizer.ReturnToNormalPrecise(input, 18);
132+
Assert.AreEqual(1.5m, result);
133+
}
134+
135+
[Test]
136+
public void ReturnToNormalPrecise_WithCustomDecimals_ReturnsCorrectDecimal()
137+
{
138+
BigInteger input = new BigInteger(3250000);
139+
decimal result = DecimalNormalizer.ReturnToNormalPrecise(input, 6);
140+
Assert.AreEqual(3.25m, result);
141+
}
142+
143+
[Test]
144+
public void RoundTrip_NormalizeAndReturnToNormal_PreservesValue()
145+
{
146+
float originalValue = 12.34f;
147+
int decimals = 6;
148+
149+
BigInteger normalized = DecimalNormalizer.NormalizeAsBigInteger(originalValue, decimals);
150+
float returned = DecimalNormalizer.ReturnToNormal(normalized, decimals);
151+
152+
Assert.AreEqual(originalValue, returned, 0.0001f);
153+
}
154+
155+
[Test]
156+
public void EdgeCase_VerySmallNumber_HandlesCorrectly()
157+
{
158+
float verySmall = 0.000001f;
159+
int decimals = 18;
160+
161+
string normalized = DecimalNormalizer.Normalize(verySmall, decimals);
162+
BigInteger bigInt = BigInteger.Parse(normalized);
163+
float returned = DecimalNormalizer.ReturnToNormal(bigInt, decimals);
164+
165+
Assert.AreEqual(verySmall, returned, 0.0000001f);
166+
}
167+
168+
[Test]
169+
public void EdgeCase_LargeNumber_HandlesCorrectly()
170+
{
171+
float largeNumber = 9999.99f;
172+
int decimals = 6;
173+
174+
BigInteger normalized = DecimalNormalizer.NormalizeAsBigInteger(largeNumber, decimals);
175+
float returned = DecimalNormalizer.ReturnToNormal(normalized, decimals);
176+
177+
Assert.AreEqual(largeNumber, returned, 0.01f);
178+
}
179+
180+
[Test]
181+
public void BugReproTest_String()
182+
{
183+
BigInteger input = BigInteger.Parse("10000000000000000000000000");
184+
185+
string result = DecimalNormalizer.ReturnToNormalString(input, 18);
186+
187+
Assert.AreEqual("10000000", result);
188+
}
189+
190+
[Test]
191+
public void BugReproTest_Float()
192+
{
193+
BigInteger input = BigInteger.Parse("10000000000000000000000000");
194+
195+
float result = DecimalNormalizer.ReturnToNormal(input, 18);
196+
197+
Assert.AreEqual(10000000f, result);
198+
}
199+
200+
[Test]
201+
public void BugReproTest_Decimal()
202+
{
203+
BigInteger input = BigInteger.Parse("10000000000000000000000000");
204+
205+
decimal result = DecimalNormalizer.ReturnToNormalPrecise(input, 18);
206+
207+
Assert.AreEqual(decimal.Parse("10000000"), result);
208+
}
209+
}

Assets/SequenceSDK/Utils/Tests/DecimalNormalizerTests.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using System;
2+
using System.Collections;
3+
using System.Collections.Generic;
4+
using NUnit.Framework;
5+
using Sequence.EmbeddedWallet;
6+
using UnityEngine;
7+
using UnityEngine.TestTools;
8+
9+
namespace Sequence.WaaS.Tests
10+
{
11+
public class SequenceLoginTests
12+
{
13+
[Test]
14+
public void TestSetConnectedWalletAddressNull()
15+
{
16+
LogAssert.Expect(LogType.Error, "The connected wallet address cannot be null or empty.");
17+
18+
Assert.Throws<ArgumentNullException>(
19+
() => SequenceLogin.GetInstance().SetConnectedWalletAddress(null)
20+
);
21+
}
22+
}
23+
}

Assets/SequenceSDK/WaaS/Tests/SequenceLoginTests.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Packages/Sequence-Unity/Sequence/Samples~/DemoScene/Demo.unity

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ RenderSettings:
3838
m_ReflectionIntensity: 1
3939
m_CustomReflection: {fileID: 0}
4040
m_Sun: {fileID: 0}
41-
m_IndirectSpecularColor: {r: 0.44657815, g: 0.49641192, b: 0.57481617, a: 1}
41+
m_IndirectSpecularColor: {r: 0.44657844, g: 0.49641258, b: 0.57481694, a: 1}
4242
m_UseRadianceAmbientProbe: 0
4343
--- !u!157 &3
4444
LightmapSettings:
@@ -252,7 +252,7 @@ MonoBehaviour:
252252
saleAddress: 0x476f14887372e21fea64baba11c849b518a2e928
253253
itemsForSale: 010000000200000003000000
254254
secondarySale:
255-
collectionAddress: 0x079294e6ffec16234578c672fa3fbfd4b6c48640
255+
collectionAddress: 0x0ee3af1874789245467e7482f042ced9c5171073
256256
chain: 137
257257
checkout: 1
258258
_featureSelection: {fileID: 1094787527}

Packages/Sequence-Unity/Sequence/SequenceFrontend/Scripts/UI/Boilerplates/BoilerplateFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ public static SequenceInGameShop OpenSequenceInGameShop(Transform parent, IWalle
115115
public static ViewMarketplaceListingsPanel OpenViewMarketplaceListingsPanel(Transform parent, IWallet wallet, Chain chain, Address marketplaceCollectionAddress, Action onClose = null)
116116
{
117117
return GetOrSpawnBoilerplate<ViewMarketplaceListingsPanel>("Marketplace/ViewMarketplaceListingsPanel", parent,
118-
b => b.Open(wallet, chain, onClose));
118+
b => b.Open(wallet, chain, marketplaceCollectionAddress, onClose));
119119
}
120120

121121
/// <summary>

Packages/Sequence-Unity/Sequence/SequenceSDK/EmbeddedWallet/SequenceLogin.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,19 @@ public static SequenceLogin GetInstanceToFederateAuth(Address connectedWalletAdd
7272

7373
public void SetConnectedWalletAddress(Address connectedWalletAddress)
7474
{
75+
if (connectedWalletAddress == null)
76+
{
77+
Debug.LogError($"The connected wallet address cannot be null or empty.");
78+
throw new ArgumentNullException(nameof(connectedWalletAddress));
79+
}
80+
7581
_connectedWalletAddress = connectedWalletAddress;
7682
}
83+
84+
public void RemoveConnectedWalletAddress()
85+
{
86+
_connectedWalletAddress = null;
87+
}
7788

7889
[Obsolete("Use GetInstance() instead.")]
7990
public SequenceLogin(IValidator validator = null, IAuthenticator authenticator = null, IWaaSConnector connector = null, bool automaticallyFederateAccountsWhenPossible = true, Address connectedWalletAddress = null)
@@ -123,7 +134,7 @@ public void ResetSessionId()
123134
public void ResetLoginAfterTest()
124135
{
125136
_connector = this;
126-
SetConnectedWalletAddress(null);
137+
RemoveConnectedWalletAddress();
127138
SetupAuthenticator();
128139
}
129140

Packages/Sequence-Unity/Sequence/SequenceSDK/Ethereum/Chain.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public enum Chain
3131
Telos = 40,
3232
Moonbeam = 1284,
3333
Etherlink = 42793,
34+
[Obsolete("Chain is not currently supported")]
3435
XR1 = 273,
3536

3637
// Testnets
@@ -44,6 +45,7 @@ public enum Chain
4445
TestnetOptimisticSepolia = 11155420,
4546
[Obsolete("Chain is no longer active; use TestnetSoneiumMinato instead")]
4647
TestnetAstarZKyoto = 6038361,
48+
[Obsolete("Chain is not currently supported")]
4749
TestnetXrSepolia = 2730,
4850
TestnetB3Sepolia = 1993,
4951
TestnetAPEChain = 33111,

Packages/Sequence-Unity/Sequence/SequenceSDK/Ethereum/ChainId.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ public static string GetChainId(this Chain chain)
2626

2727
public static bool IsActive(this Chain chain)
2828
{
29-
return !(chain == Chain.None || chain == Chain.AstarZKEvm || chain == Chain.TestnetAstarZKyoto || chain == Chain.TestnetBorne);
29+
return !(chain == Chain.None || chain == Chain.AstarZKEvm || chain == Chain.TestnetAstarZKyoto ||
30+
chain == Chain.TestnetBorne || chain == Chain.XR1 || chain == Chain.TestnetXrSepolia);
3031
}
3132
}
3233

0 commit comments

Comments
 (0)