public static void RunInt64ExplicitCastFromBigIntegerTests()
{
long value;
BigInteger bigInteger;
// Int64 Explicit Cast from BigInteger: Random value < Int64.MinValue
bigInteger = GenerateRandomBigIntegerLessThan(Int64.MinValue, s_random);
value = BitConverter.ToInt64(bigInteger.ToByteArray(), 0);
Assert.Throws<OverflowException>(() => VerifyInt64ExplicitCastFromBigInteger(value, bigInteger));
// Int64 Explicit Cast from BigInteger: Int64.MinValue - 1
bigInteger = new BigInteger(Int64.MinValue);
bigInteger -= BigInteger.One;
value = BitConverter.ToInt64(bigInteger.ToByteArray(), 0);
Assert.Throws<OverflowException>(() => VerifyInt64ExplicitCastFromBigInteger(value, bigInteger));
// Int64 Explicit Cast from BigInteger: Int64.MinValue
VerifyInt64ExplicitCastFromBigInteger(Int64.MinValue);
// Int64 Explicit Cast from BigInteger: Random Negative
for (int i = 0; i < NumberOfRandomIterations; ++i)
{
VerifyInt64ExplicitCastFromBigInteger(((Int64)(Int64.MaxValue * s_random.NextDouble())) - Int64.MaxValue);
}
// Int64 Explicit Cast from BigInteger: -1
VerifyInt64ExplicitCastFromBigInteger(-1);
// Int64 Explicit Cast from BigInteger: 0
VerifyInt64ExplicitCastFromBigInteger(0);
// Int64 Explicit Cast from BigInteger: 1
VerifyInt64ExplicitCastFromBigInteger(1);
// Int64 Explicit Cast from BigInteger: Random Positive
for (int i = 0; i < NumberOfRandomIterations; ++i)
{
VerifyInt64ExplicitCastFromBigInteger((Int64)(Int64.MaxValue * s_random.NextDouble()));
}
// Int64 Explicit Cast from BigInteger: Int64.MaxValue
VerifyInt64ExplicitCastFromBigInteger(Int64.MaxValue);
// Int64 Explicit Cast from BigInteger: Int64.MaxValue + 1
bigInteger = new BigInteger(Int64.MaxValue);
bigInteger += BigInteger.One;
value = BitConverter.ToInt64(bigInteger.ToByteArray(), 0);
Assert.Throws<OverflowException>(() => VerifyInt64ExplicitCastFromBigInteger(value, bigInteger));
// Int64 Explicit Cast from BigInteger: Random value > Int64.MaxValue
bigInteger = GenerateRandomBigIntegerGreaterThan(Int64.MaxValue, s_random);
value = BitConverter.ToInt64(bigInteger.ToByteArray(), 0);
Assert.Throws<OverflowException>(() => VerifyInt64ExplicitCastFromBigInteger(value, bigInteger));
}