The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl
#===============================================================================
#
# t/06_file_misc.t
#
# DESCRIPTION
#   Test script to check getting miscellaneous file information.
#
# COPYRIGHT
#   Copyright (C) 2003-2005, 2014 Steve Hay.  All rights reserved.
#
# LICENCE
#   You may distribute under the terms of either the GNU General Public License
#   or the Artistic License, as specified in the LICENCE file.
#
#===============================================================================

use 5.008001;

use strict;
use warnings;

use Test::More tests => 28;

#===============================================================================
# INITIALIZATION
#===============================================================================

BEGIN {
    use_ok('Win32::UTCFileTime');
}

#===============================================================================
# MAIN PROGRAM
#===============================================================================

MAIN: {
    my $file = 'test.txt';

    my($fh, @cstats, @rstats, @astats);

    open $fh, ">$file" or die "Can't create file '$file': $!\n";
    close $fh;

    @cstats = CORE::stat $file;
    @rstats = Win32::UTCFileTime::stat $file;
    @astats = Win32::UTCFileTime::alt_stat($file);

    is($rstats[0], $cstats[0], "stat() gets 'dev' field OK");
    is($astats[0], $cstats[0], "alt_stat() gets 'dev' field OK");

    is($rstats[1], $cstats[1], "stat() gets 'ino' field OK");
    is($astats[1], $cstats[1], "alt_stat() gets 'ino' field OK");

    is($rstats[3], $cstats[3], "stat() gets 'nlink' field OK");
    is($astats[3], $cstats[3], "alt_stat() gets 'nlink' field OK");

    is($rstats[4], $cstats[4], "stat() gets 'uid' field OK");
    is($astats[4], $cstats[4], "alt_stat() gets 'uid' field OK");

    is($rstats[5], $cstats[5], "stat() gets 'gid' field OK");
    is($astats[5], $cstats[5], "alt_stat() gets 'gid' field OK");

    is($rstats[6], $cstats[6], "stat() gets 'rdev' field OK");
    is($astats[6], $cstats[6], "alt_stat() gets 'rdev' field OK");

    is($rstats[7], $cstats[7], "stat() gets 'size' field OK");
    is($astats[7], $cstats[7], "alt_stat() gets 'size' field OK");

    is($rstats[11], $cstats[11], "stat() gets 'blksize' field OK");
    is($astats[11], $cstats[11], "alt_stat() gets 'blksize' field OK");

    is($rstats[12], $cstats[12], "stat() gets 'blocks' field OK");
    is($astats[12], $cstats[12], "alt_stat() gets 'blocks' field OK");

    @cstats = CORE::lstat $file;
    @rstats = Win32::UTCFileTime::lstat $file;

    is($rstats[0], $cstats[0], "lstat() gets 'dev' field OK");

    is($rstats[1], $cstats[1], "lstat() gets 'ino' field OK");

    is($rstats[3], $cstats[3], "lstat() gets 'nlink' field OK");

    is($rstats[4], $cstats[4], "lstat() gets 'uid' field OK");

    is($rstats[5], $cstats[5], "lstat() gets 'gid' field OK");

    is($rstats[6], $cstats[6], "lstat() gets 'rdev' field OK");

    is($rstats[7], $cstats[7], "lstat() gets 'size' field OK");

    is($rstats[11], $cstats[11], "lstat() gets 'blksize' field OK");

    is($rstats[12], $cstats[12], "lstat() gets 'blocks' field OK");

    unlink $file;
}

#===============================================================================