(no commit message)
[scpubgit/Q-Branch.git] / t / 03values.t
CommitLineData
41751122 1#!/usr/bin/perl
32eab2da 2
3use strict;
41751122 4use warnings;
5use Test::More;
32eab2da 6
96449e8e 7use FindBin;
8use lib "$FindBin::Bin";
9use TestSqlAbstract;
41751122 10
11plan tests => 5;
32eab2da 12
13use SQL::Abstract;
14
15my $sql = SQL::Abstract->new;
16
17my @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
68my($sth, $stmt);
69my($laststmt, $numfields);
70for 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
86sub 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