public static void RunInt32ExplicitCastFromBigIntegerTests()
{
int value;
BigInteger bigInteger;
// Int32 Explicit Cast from BigInteger: Random value < Int32.MinValue
bigInteger = GenerateRandomBigIntegerLessThan(Int32.MinValue, s_random);
value = BitConverter.ToInt32(bigInteger.ToByteArray(), 0);
Assert.Throws<OverflowException>(() => VerifyInt32ExplicitCastFromBigInteger(value, bigInteger));
// Int32 Explicit Cast from BigInteger: Int32.MinValue - 1
bigInteger = new BigInteger(Int32.MinValue);
bigInteger -= BigInteger.One;
value = BitConverter.ToInt32(bigInteger.ToByteArray(), 0);
Assert.Throws<OverflowException>(() => VerifyInt32ExplicitCastFromBigInteger(value, bigInteger));
// Int32 Explicit Cast from BigInteger: Int32.MinValue
VerifyInt32ExplicitCastFromBigInteger(Int32.MinValue);
// Int32 Explicit Cast from BigInteger: Random Negative
for (int i = 0; i < NumberOfRandomIterations; ++i)
{
VerifyInt32ExplicitCastFromBigInteger((Int32)s_random.Next(Int32.MinValue, 0));
}
// Int32 Explicit Cast from BigInteger: -1
VerifyInt32ExplicitCastFromBigInteger(-1);
// Int32 Explicit Cast from BigInteger: 0
VerifyInt32ExplicitCastFromBigInteger(0);
// Int32 Explicit Cast from BigInteger: 1
VerifyInt32ExplicitCastFromBigInteger(1);
// Int32 Explicit Cast from BigInteger: Random Positive
for (int i = 0; i < NumberOfRandomIterations; ++i)
{
VerifyInt32ExplicitCastFromBigInteger((Int32)s_random.Next(1, Int32.MaxValue));
}
// Int32 Explicit Cast from BigInteger: Int32.MaxValue
VerifyInt32ExplicitCastFromBigInteger(Int32.MaxValue);
// Int32 Explicit Cast from BigInteger: Int32.MaxValue + 1
bigInteger = new BigInteger(Int32.MaxValue);
bigInteger += BigInteger.One;
value = BitConverter.ToInt32(bigInteger.ToByteArray(), 0);
Assert.Throws<OverflowException>(() => VerifyInt32ExplicitCastFromBigInteger(value, bigInteger));
// Int32 Explicit Cast from BigInteger: Random value > Int32.MaxValue
bigInteger = GenerateRandomBigIntegerGreaterThan(Int32.MaxValue, s_random);
value = BitConverter.ToInt32(bigInteger.ToByteArray(), 0);
Assert.Throws<OverflowException>(() => VerifyInt32ExplicitCastFromBigInteger(value, bigInteger));
}