import 'package:decimal/decimal.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:stackwallet/utilities/amount.dart'; void main() { test("Basic Amount Constructor tests", () { Amount amount = Amount(rawValue: BigInt.two, fractionDigits: 0); expect(amount.fractionDigits, 0); expect(amount.raw, BigInt.two); expect(amount.decimal, Decimal.fromInt(2)); amount = Amount(rawValue: BigInt.two, fractionDigits: 2); expect(amount.fractionDigits, 2); expect(amount.raw, BigInt.two); expect(amount.decimal, Decimal.parse("0.02")); amount = Amount(rawValue: BigInt.from(123456789), fractionDigits: 7); expect(amount.fractionDigits, 7); expect(amount.raw, BigInt.from(123456789)); expect(amount.decimal, Decimal.parse("12.3456789")); bool didThrow = false; try { amount = Amount(rawValue: BigInt.one, fractionDigits: -1); } catch (_) { didThrow = true; } expect(didThrow, true); }); test("Named fromDouble Amount Constructor tests", () { Amount amount = Amount.fromDouble(2.0, fractionDigits: 0); expect(amount.fractionDigits, 0); expect(amount.raw, BigInt.two); expect(amount.decimal, Decimal.fromInt(2)); amount = Amount.fromDouble(2.0, fractionDigits: 2); expect(amount.fractionDigits, 2); expect(amount.raw, BigInt.from(200)); expect(amount.decimal, Decimal.fromInt(2)); amount = Amount.fromDouble(0.0123456789, fractionDigits: 7); expect(amount.fractionDigits, 7); expect(amount.raw, BigInt.from(123456)); expect(amount.decimal, Decimal.parse("0.0123456")); bool didThrow = false; try { amount = Amount.fromDouble(2.0, fractionDigits: -1); } catch (_) { didThrow = true; } expect(didThrow, true); }); test("Named fromDecimal Amount Constructor tests", () { Amount amount = Amount.fromDecimal(Decimal.fromInt(2), fractionDigits: 0); expect(amount.fractionDigits, 0); expect(amount.raw, BigInt.two); expect(amount.decimal, Decimal.fromInt(2)); amount = Amount.fromDecimal(Decimal.fromInt(2), fractionDigits: 2); expect(amount.fractionDigits, 2); expect(amount.raw, BigInt.from(200)); expect(amount.decimal, Decimal.fromInt(2)); amount = Amount.fromDecimal(Decimal.parse("0.0123456789"), fractionDigits: 7); expect(amount.fractionDigits, 7); expect(amount.raw, BigInt.from(123456)); expect(amount.decimal, Decimal.parse("0.0123456")); bool didThrow = false; try { amount = Amount.fromDecimal(Decimal.fromInt(2), fractionDigits: -1); } catch (_) { didThrow = true; } expect(didThrow, true); }); group("operators", () { final one = Amount(rawValue: BigInt.one, fractionDigits: 0); final two = Amount(rawValue: BigInt.two, fractionDigits: 0); test(">", () { expect(one > two, false); expect(one > one, false); expect(two > two, false); expect(two > one, true); }); test("<", () { expect(one < two, true); expect(one < one, false); expect(two < two, false); expect(two < one, false); }); test(">=", () { expect(one >= two, false); expect(one >= one, true); expect(two >= two, true); expect(two >= one, true); }); test("<=", () { expect(one <= two, true); expect(one <= one, true); expect(two <= two, true); expect(two <= one, false); }); }); }