SL::Form::format_amount formatiert Zahlen auch aus der Exponentialschreibweise.
authorThomas Heck <theck@linet-services.de>
Tue, 28 Aug 2012 10:22:34 +0000 (12:22 +0200)
committerThomas Heck <theck@linet-services.de>
Tue, 28 Aug 2012 10:37:39 +0000 (12:37 +0200)
+Tests für SL::Form::format_amount
fixt #1904

SL/Form.pm
t/form/format_amount.t [new file with mode: 0644]

index 70d3a65..2f42833 100644 (file)
@@ -871,6 +871,8 @@ sub format_amount {
     $amount = 0;
   }
 
+  $amount *= 1;
+
   # Hey watch out! The amount can be an exponential term like 1.13686837721616e-13
 
   my $neg = ($amount =~ s/^-//);
diff --git a/t/form/format_amount.t b/t/form/format_amount.t
new file mode 100644 (file)
index 0000000..2c6e90d
--- /dev/null
@@ -0,0 +1,44 @@
+use strict;
+use Test::More;
+
+use lib 't';
+
+use_ok('SL::Form');
+require_ok('SL::Form');
+
+
+package LxDebugMock;
+sub enter_sub {};
+sub leave_sub {};
+
+$main::lxdebug = bless({}, 'LxDebugMock');
+
+package main;
+
+
+my $form = Form->new();
+
+
+my $config = {};
+
+
+$config->{numberformat} = '1.000,00';
+
+is($form->format_amount($config, '1e1', 2), '10,00', 'blaa');
+is($form->format_amount($config, 1000, 2), '1.000,00', 'blaa');
+is($form->format_amount($config, 1000.1234, 2), '1.000,12', 'blaa');
+is($form->format_amount($config, 1000000000.1234, 2), '1.000.000.000,12', 'blaa');
+is($form->format_amount($config, -1000000000.1234, 2), '-1.000.000.000,12', 'blaa');
+
+
+$config->{numberformat} = '1,000.00';
+
+is($form->format_amount($config, '1e1', 2), '10.00', 'blaa');
+is($form->format_amount($config, 1000, 2), '1,000.00', 'blaa');
+is($form->format_amount($config, 1000.1234, 2), '1,000.12', 'blaa');
+is($form->format_amount($config, 1000000000.1234, 2), '1,000,000,000.12', 'blaa');
+is($form->format_amount($config, -1000000000.1234, 2), '-1,000,000,000.12', 'blaa');
+
+done_testing;
+
+1;