summaryrefslogtreecommitdiff
path: root/t/11-ledgersmb.t
diff options
context:
space:
mode:
Diffstat (limited to 't/11-ledgersmb.t')
-rw-r--r--t/11-ledgersmb.t111
1 files changed, 111 insertions, 0 deletions
diff --git a/t/11-ledgersmb.t b/t/11-ledgersmb.t
new file mode 100644
index 00000000..71ebc5c1
--- /dev/null
+++ b/t/11-ledgersmb.t
@@ -0,0 +1,111 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use Test::More 'no_plan';
+use Test::Exception;
+use Test::Trap qw(trap $trap);
+use Math::BigFloat;
+
+use LedgerSMB;
+
+##line subroutine
+##108 new
+##145 debug
+##204 num_text_rows
+##235 redirect
+##254 format_amount
+##364 parse_amount
+##408 round_amount
+##423 call_procedure
+##454 date_to_number
+##490 db_init
+##522 redo_rows
+##547 merge
+
+my $lsmb = new LedgerSMB;
+my %myconfig;
+my $utfstr;
+ok(defined $lsmb);
+isa_ok($lsmb, 'LedgerSMB');
+
+# $lsmb->escape checks
+$lsmb = new LedgerSMB;
+$utfstr = "\xd8\xad";
+utf8::decode($utfstr);
+ok(!$lsmb->escape, 'escape: (undef)');
+ok(!$lsmb->escape('foo' => 'bar'), 'escape: (invalid args)');
+cmp_ok($lsmb->escape('string' => ' '), 'eq', '%20',
+ 'escape: \' \'');
+cmp_ok($lsmb->escape('string' => 'foo'), 'eq', 'foo',
+ 'escape: foo');
+cmp_ok($lsmb->escape('string' => 'foo bar'), 'eq', 'foo%20bar',
+ 'escape: foo bar');
+TODO: {
+ local $TODO = 'Fun with Unicode';
+ cmp_ok($lsmb->escape('string' => $utfstr), 'eq', '%d8%ad',
+ 'escape: U+D8AD');
+}
+
+# $lsmb->is_blank checks
+$lsmb = new LedgerSMB;
+$lsmb->{blank} = ' ';
+$lsmb->{notblank} = ' d ';
+TODO: {
+ local $TODO = 'Errors should be thrown';
+ throws_ok{$lsmb->is_blank} 'Error::Simple', 'is_blank: (undef)';
+ throws_ok{$lsmb->is_blank('foo' => 'bar')} 'Error::Simple',
+ 'is_blank: (invalid args)';
+}
+is($lsmb->is_blank('name' => 'notblank'), 0, 'is_blank: notblank');
+is($lsmb->is_blank('name' => 'blank'), 1, 'is_blank: blank');
+
+# $lsmb->is_run_mode checks
+$lsmb = new LedgerSMB;
+$ENV{GATEWAY_INTERFACE} = 'foo';
+is($lsmb->is_run_mode('cgi'), 1, 'is_run_mode: CGI - CGI');
+is($lsmb->is_run_mode('cli'), 0, 'is_run_mode: CGI - CLI');
+is($lsmb->is_run_mode('mod_perl'), 0, 'is_run_mode: CGI - mod_perl');
+is($lsmb->is_run_mode('foo'), 0, 'is_run_mode: CGI - (bad mode)');
+is($lsmb->is_run_mode, 0, 'is_run_mode: CGI - (unknown mode)');
+$ENV{MOD_PERL} = 'foo';
+is($lsmb->is_run_mode('cgi'), 1, 'is_run_mode: CGI/mod_perl - CGI');
+is($lsmb->is_run_mode('cli'), 0, 'is_run_mode: CGI/mod_perl - CLI');
+is($lsmb->is_run_mode('mod_perl'), 1, 'is_run_mode: CGI/mod_perl - mod_perl');
+is($lsmb->is_run_mode('foo'), 0, 'is_run_mode: CGI/mod_perl - (bad mode)');
+is($lsmb->is_run_mode, 0, 'is_run_mode: CGI/mod_perl - (unknown mode)');
+delete $ENV{GATEWAY_INTERFACE};
+is($lsmb->is_run_mode('cgi'), 0, 'is_run_mode: mod_perl - CGI');
+is($lsmb->is_run_mode('cli'), 0, 'is_run_mode: mod_perl - CLI');
+is($lsmb->is_run_mode('mod_perl'), 1, 'is_run_mode: mod_perl - mod_perl');
+is($lsmb->is_run_mode('foo'), 0, 'is_run_mode: mod_perl - (bad mode)');
+is($lsmb->is_run_mode, 0, 'is_run_mode: mod_perl - (unknown mode)');
+delete $ENV{MOD_PERL};
+is($lsmb->is_run_mode('cgi'), 0, 'is_run_mode: CLI - CGI');
+is($lsmb->is_run_mode('cli'), 1, 'is_run_mode: CLI - CLI');
+is($lsmb->is_run_mode('mod_perl'), 0, 'is_run_mode: CLI - mod_perl');
+is($lsmb->is_run_mode('foo'), 0, 'is_run_mode: CLI - (bad mode)');
+is($lsmb->is_run_mode, 0, 'is_run_mode: CLI - (unknown mode)');
+
+# $lsmb->num_text_rows checks
+$lsmb = new LedgerSMB;
+is($lsmb->num_text_rows('string' => "apple\npear", 'cols' => 10, 'max' => 5),
+ 2, 'num_text_rows: 2 rows, no column breakage, max 5 rows');
+is($lsmb->num_text_rows('string' => "apple\npear", 'cols' => 10, 'max' => 1),
+ 1, 'num_text_rows: 2 rows, no column breakage, max 1 row');
+is($lsmb->num_text_rows('string' => "apple\npear", 'cols' => 10, 'max' => 2),
+ 2, 'num_text_rows: 2 rows, no column breakage, max 2 rows');
+is($lsmb->num_text_rows('string' => "apple\npear", 'cols' => 10),
+ 2, 'num_text_rows: 2 rows, no column breakage, no max row count');
+is($lsmb->num_text_rows('string' => "01234567890123456789", 'cols' => 10),
+ 2, 'num_text_rows: 2 rows, non-word column breakage, no max row count');
+is($lsmb->num_text_rows('string' => "012345 67890123 456789", 'cols' => 10),
+ 3, 'num_text_rows: 3 rows, word column breakage, no max row count');
+is($lsmb->num_text_rows('string' => "0123456789", 'cols' => 10),
+ 1, 'num_text_rows: 1 rows, no breakage, max cols, no max row count');
+is($lsmb->num_text_rows('string' => "01234567890", 'cols' => 10),
+ 2, 'num_text_rows: 2 rows, no breakage, max cols+1, no max row count');
+is($lsmb->num_text_rows('string' => "1\n\n2", 'cols' => 10),
+ 3, 'num_text_rows: 3 rows, no breakage, blank line, no max row count');
+is($lsmb->num_text_rows('string' => "012345 67890123456789", 'cols' => 10),
+ 3, 'num_text_rows: 3 rows, word and non column breakage, no max row count');