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