|
@@ -1,3 +1,4 @@
|
|
|
|
|
+using System.Numerics;
|
|
|
using Jint.Native;
|
|
using Jint.Native;
|
|
|
|
|
|
|
|
namespace Jint.Tests.Runtime;
|
|
namespace Jint.Tests.Runtime;
|
|
@@ -28,4 +29,42 @@ public class BigIntTests
|
|
|
Assert.True(outputValues[0].IsBigInt(), "The type of the value is expected to stay BigInt");
|
|
Assert.True(outputValues[0].IsBigInt(), "The type of the value is expected to stay BigInt");
|
|
|
Assert.Equal(expected, outputValues[0].ToString());
|
|
Assert.Equal(expected, outputValues[0].ToString());
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ [Theory]
|
|
|
|
|
+ [InlineData("let right = 123n;")]
|
|
|
|
|
+ [InlineData("let right = BigInt(123);")]
|
|
|
|
|
+ [InlineData("let right = BigInt('123');")]
|
|
|
|
|
+ public void ObjectIsReturnsTrueForSameBigInts(string statement)
|
|
|
|
|
+ {
|
|
|
|
|
+ // Arrange
|
|
|
|
|
+ var engine = new Engine();
|
|
|
|
|
+ engine.SetValue("left", new JsBigInt(new BigInteger(123)));
|
|
|
|
|
+ engine.Evaluate(statement);
|
|
|
|
|
+
|
|
|
|
|
+ // Act
|
|
|
|
|
+ var result = engine.Evaluate("Object.is(left, right);");
|
|
|
|
|
+
|
|
|
|
|
+ // Assert
|
|
|
|
|
+ Assert.True(result.AsBoolean());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ [Theory]
|
|
|
|
|
+ [InlineData("let right = false;")]
|
|
|
|
|
+ [InlineData("let right = 'test';")]
|
|
|
|
|
+ [InlineData("let right = 123;")]
|
|
|
|
|
+ [InlineData("let right = 321n;")]
|
|
|
|
|
+ [InlineData("let right = BigInt('321');")]
|
|
|
|
|
+ public void ObjectIsReturnsFalseDifferentComparisonsWithBigInt(string statement)
|
|
|
|
|
+ {
|
|
|
|
|
+ // Arrange
|
|
|
|
|
+ var engine = new Engine();
|
|
|
|
|
+ engine.SetValue("left", new JsBigInt(new BigInteger(123)));
|
|
|
|
|
+ engine.Evaluate(statement);
|
|
|
|
|
+
|
|
|
|
|
+ // Act
|
|
|
|
|
+ var result = engine.Evaluate("Object.is(left, right);");
|
|
|
|
|
+
|
|
|
|
|
+ // Assert
|
|
|
|
|
+ Assert.False(result.AsBoolean());
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|