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