#!/usr/bin/perl -w

use strict;
use lib 't/lib';
use Test::More tests => 14;
use Module::Info;

my $has_version_pm = eval 'use version; 1';

my $moo = Module::Info->new_from_module( 'Moo' );
my $boo = Module::Info->new_from_module( 'Boo' );
my $moo_ver;
my $foo_ver;

if( $has_version_pm ) {
    $moo_ver = Module::Info->new_from_module( 'Moo' );
    $foo_ver = Module::Info->new_from_module( 'Foo' );
    $moo_ver->use_version( 1 );
    $foo_ver->use_version( 1 );
}

is( $moo->use_version, 0 );
is( $moo->version, '0.12' );
is( $boo->version, '1.35', 'proper quoting in complex expression' );

SKIP: {
    skip 'version.pm not found', 5 unless $has_version_pm;

    is( $moo_ver->use_version, 1 );
    isa_ok( $moo_ver->version, 'version' );
    is( $moo_ver->version, '0.120' );

    isa_ok( $foo_ver->version, 'version' );
    is( $foo_ver->version, '7.254' );
}

SKIP: {
    skip 'version.pm found, can not test', 6 if $has_version_pm;

    my $dummy = Module::Info->new_from_module( 'Moo' );

    is( $dummy->use_version, 0 );
    # should succeed
    eval {
        $dummy->use_version( 0 );
    };
    ok( !$@ );
    is( $dummy->use_version, 0 );

    # should fail
    eval {
        $dummy->use_version( 1 );
    };
    ok( $@ );
    ok( $@ =~ /^Can not use 'version.pm' as requested/ );
    is( $dummy->use_version, 0 );
}


syntax highlighted by Code2HTML, v. 0.9.1