#!/usr/bin/perl -w
use strict;
use Test::More;
use DBI;
if ($^O !~ /Win32/i) {
plan skip_all => "DBD::WMI only works on Win32 so far";
} else {
plan tests => 5;
};
my $dbh = DBI->connect('dbi:WMI:');
isa_ok $dbh, 'DBI::db';
my @tests = map { [ split /\s*=>\s*/m ]} grep { /\S/ } split /^$/m, q{
SELECT * FROM Win32_Process
=> *
=> Single asterisk
SELECT foo,bar FROM Win32_Process
=> foo,bar
=> Two columns
SELECT foo,count(bar) FROM Win32_Process
=> foo,count(bar)
=> Function (not implemented but gets passed through)
ASSOCIATORS OF {Win32_Directory.Name='C:\WINNT'}
WHERE ResultClass = CIM_DataFile
=> *
=> Non-SELECT statement gets asterisk
};
for (@tests) {
my ($wql,$expected,$name) = @$_;
next unless $wql =~ /\S/;
chomp $expected;
chomp $name;
my $sth = $dbh->prepare($wql);
if (! is join(",", @{ $sth->{wmi_return_columns}}), $expected,$name) {
diag $wql;
};
};