Commit | Line | Data |
32eab2da |
1 | #!/usr/bin/perl -I. -w |
2 | |
3 | use strict; |
4 | use vars qw($TESTING); |
5 | $TESTING = 1; |
6 | use Test; |
7 | |
8 | # use a BEGIN block so we print our plan before SQL::Abstract is loaded |
9 | BEGIN { plan tests => 5 } |
10 | |
11 | use SQL::Abstract; |
12 | |
13 | my $sql = SQL::Abstract->new; |
14 | |
15 | my @data = ( |
16 | { |
17 | user => 'nwiger', |
18 | name => 'Nathan Wiger', |
19 | phone => '123-456-7890', |
20 | addr => 'Yeah, right', |
21 | city => 'Milwalkee', |
22 | state => 'Minnesota', |
23 | }, |
24 | |
25 | { |
26 | user => 'jimbo', |
27 | name => 'Jimbo Bobson', |
28 | phone => '321-456-0987', |
29 | addr => 'Yo Momma', |
30 | city => 'Yo City', |
31 | state => 'Minnesota', |
32 | }, |
33 | |
34 | { |
35 | user => 'mr.hat', |
36 | name => 'Mr. Garrison', |
37 | phone => '123-456-7890', |
38 | addr => undef, |
39 | city => 'South Park', |
40 | state => 'CO', |
41 | }, |
42 | |
43 | { |
44 | user => 'kennyg', |
45 | name => undef, |
46 | phone => '1-800-Sucky-Sucky', |
47 | addr => 'Mr. Garrison', |
48 | city => undef, |
49 | state => 'CO', |
50 | }, |
51 | |
52 | { |
53 | user => 'barbara_streisand', |
54 | name => 'MechaStreisand!', |
55 | phone => 0, |
56 | addr => -9230992340, |
57 | city => 42, |
58 | state => 'CO', |
59 | }, |
60 | ); |
61 | |
62 | # Note to self: I have no idea what this does anymore |
63 | # It looks like a cool fucking segment of code though! |
64 | # I just wish I remembered writing it... :-\ |
65 | |
66 | my($sth, $stmt); |
67 | my($laststmt, $numfields); |
68 | for my $t (@data) { |
69 | local $"=', '; |
70 | |
71 | $stmt = $sql->insert('yo_table', $t); |
72 | my @val = $sql->values($t); |
73 | $numfields ||= @val; |
74 | |
75 | ok((! $laststmt || $stmt eq $laststmt) && @val == $numfields |
76 | && equal(\@val, [map { $t->{$_} } sort keys %$t])) or |
77 | print "got\n", |
78 | "[$stmt] [@val]\n", |
79 | "instead of\n", |
80 | "[$t->{stmt}] [stuff]\n\n"; |
81 | $laststmt = $stmt; |
82 | } |
83 | |
84 | sub equal { |
85 | my ($a, $b) = @_; |
86 | return 0 if @$a != @$b; |
87 | for (my $i = 0; $i < $#{$a}; $i++) { |
88 | next if (! defined($a->[$i])) && (! defined($b->[$i])); |
89 | return 0 if $a->[$i] ne $b->[$i]; |
90 | } |
91 | return 1; |
92 | } |
93 | |