The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w
#
#   @(#)$Id: t02ixtype.t,v 2008.1 2008/05/12 06:16:11 jleffler Exp $
#
#   Test ix_types attribute
#
#   Copyright 2000    Informix Software Inc
#   Copyright 2002-03 IBM

use DBD::Informix::TestHarness;
use DBD::Informix qw(:ix_types);
use strict;

# You need to update this list if any types are added (unlikely) or if
# any types are removed (IX_COLLECTION is the plausible candidate).
# The IX_xxxx name is defined in Informix.xs
# The numeric value is defined in sqltypes.h
my %typeinfo = (
	"IX_ROW"        => [ IX_ROW,          22 ],
	"IX_SMALLINT"   => [ IX_SMALLINT,      1 ],
	"IX_INTEGER"    => [ IX_INTEGER,       2 ],
	"IX_SERIAL"     => [ IX_SERIAL,        6 ],
	"IX_INT8"       => [ IX_INT8,         17 ],
	"IX_SERIAL8"    => [ IX_SERIAL8,      18 ],
	"IX_BIGINT"     => [ IX_BIGINT,       52 ],
	"IX_BIGSERIAL"  => [ IX_BIGSERIAL,    53 ],
	"IX_DECIMAL"    => [ IX_DECIMAL,       5 ],
	"IX_MONEY"      => [ IX_MONEY,         8 ],
	"IX_FLOAT"      => [ IX_FLOAT,         3 ],
	"IX_SMALLFLOAT" => [ IX_SMALLFLOAT,    4 ],
	"IX_CHAR"       => [ IX_CHAR,          0 ],
	"IX_VARCHAR"    => [ IX_VARCHAR,      13 ],
	"IX_NCHAR"      => [ IX_NCHAR,        15 ],
	"IX_NVARCHAR"   => [ IX_NVARCHAR,     16 ],
	"IX_LVARCHAR"   => [ IX_LVARCHAR,     43 ],
	"IX_BOOLEAN"    => [ IX_BOOLEAN,      45 ],
	"IX_DATE"       => [ IX_DATE,          7 ],
	"IX_DATETIME"   => [ IX_DATETIME,     10 ],
	"IX_INTERVAL"   => [ IX_INTERVAL,     14 ],
	"IX_BYTE"       => [ IX_BYTE,         11 ],
	"IX_TEXT"       => [ IX_TEXT,         12 ],
	"IX_FIXUDT"     => [ IX_FIXUDT,       41 ],
	"IX_VARUDT"     => [ IX_VARUDT,       40 ],
	"IX_SET"        => [ IX_SET,          19 ],
	"IX_MULTISET"   => [ IX_MULTISET,     20 ],
	"IX_LIST"       => [ IX_LIST,         21 ],
	"IX_COLLECTION" => [ IX_COLLECTION,   23 ],
	"IX_BLOB"       => [ IX_BLOB,       1011 ],
	"IX_CLOB"       => [ IX_CLOB,       1012 ]
);

my $ntests = keys %typeinfo;
&stmt_note("1..$ntests\n");

my $fail = 0;
foreach my $key (sort keys %typeinfo)
{
	my $arrref = $typeinfo{$key};
	my $val0 = $arrref->[0];
	my $val1 = $arrref->[1];
	if ($val0 == $val1)
	{
		stmt_ok;
		printf("# %-13s = %d\n", $key, $val0);
	}
	else
	{
		stmt_nok "# $key is $val0 but should be $val1\n";
		$fail++;
	}
}

all_ok if $fail == 0;