mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2024-11-19 10:41:02 +00:00
118 lines
3.4 KiB
Dart
118 lines
3.4 KiB
Dart
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);
|
|
});
|
|
});
|
|
}
|