Sanitised layout - now to start hacking
[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
41751122 7
8plan tests => 5;
32eab2da 9
10use SQL::Abstract;
11
12my $sql = SQL::Abstract->new;
13
14my @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
65my($sth, $stmt);
66my($laststmt, $numfields);
67for 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
83sub 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