diff --git a/example/lib/main.dart b/example/lib/main.dart index b40f6cd..b718a01 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -34,8 +34,8 @@ class _MyHomePageState extends State { final CurrencyTextFieldController _controller = CurrencyTextFieldController(); final CurrencyTextFieldController _controller2 = CurrencyTextFieldController( initDoubleValue: -10, currencySeparator: ' -> '); - final CurrencyTextFieldController _controller3 = - CurrencyTextFieldController(initIntValue: -1000, enableNegative: false, maxValue: 2000); + final CurrencyTextFieldController _controller3 = CurrencyTextFieldController( + initIntValue: -1000, enableNegative: false, maxValue: 2000); @override Widget build(BuildContext context) { diff --git a/lib/currency_textfield.dart b/lib/currency_textfield.dart index b13fb1f..d248ad4 100644 --- a/lib/currency_textfield.dart +++ b/lib/currency_textfield.dart @@ -175,6 +175,7 @@ class CurrencyTextFieldController extends TextEditingController { } else { _isNegative = false; } + _checkMaxValue(); _previewsText = _composeCurrency(_applyMaskTo(value: _value)); text = _previewsText; _setSelectionBy(offset: text.length); diff --git a/test/currency_textfield_test.dart b/test/currency_textfield_test.dart index a55fa01..382c995 100644 --- a/test/currency_textfield_test.dart +++ b/test/currency_textfield_test.dart @@ -99,12 +99,42 @@ void main() { test('get_text_without_currency', () { final controller = CurrencyTextFieldController(initIntValue: 195); - final controller2 = CurrencyTextFieldController(initIntValue: 195, currencyOnLeft: false); - final controller3 = CurrencyTextFieldController(initDoubleValue: 195,currencySymbol: 'test',currencySeparator: ' e '); - final controller4 = CurrencyTextFieldController(initIntValue: 195, currencyOnLeft: false,currencySymbol: '\$',currencySeparator: '->',decimalSymbol: '.'); + final controller2 = + CurrencyTextFieldController(initIntValue: 195, currencyOnLeft: false); + final controller3 = CurrencyTextFieldController( + initDoubleValue: 195, currencySymbol: 'test', currencySeparator: ' e '); + final controller4 = CurrencyTextFieldController( + initIntValue: 195, + currencyOnLeft: false, + currencySymbol: '\$', + currencySeparator: '->', + decimalSymbol: '.', + ); expect(controller.textWithoutCurrencySymbol, '1,95'); expect(controller2.textWithoutCurrencySymbol, '1,95'); expect(controller3.textWithoutCurrencySymbol, '195,00'); expect(controller4.textWithoutCurrencySymbol, '1.95'); }); + + test('initInt_with_numberOfDecimals', () { + final controller = CurrencyTextFieldController(initIntValue: 195); + final controller2 = + CurrencyTextFieldController(initIntValue: 1950, numberOfDecimals: 1); + final controller3 = + CurrencyTextFieldController(initIntValue: 19500, numberOfDecimals: 3); + + expect(controller.textWithoutCurrencySymbol, '1,95'); + expect(controller2.textWithoutCurrencySymbol, '195,0'); + expect(controller3.textWithoutCurrencySymbol, '19,500'); + }); + + test('maxValue', () { + final controller = + CurrencyTextFieldController(initDoubleValue: 300, maxValue: 400); + + controller.forceValue(initDoubleValue: 350); + expect(controller.textWithoutCurrencySymbol, '350,00'); + controller.forceValue(initDoubleValue: 3500); + expect(controller.textWithoutCurrencySymbol, '400,00'); + }); }