1use strict;
2use warnings;
3use GPS::Babel;
4use Test::More tests => 12;
5
6my $DUMMY_EXE = 'not-the-real-gpsbabel';
7our $exe_name = $DUMMY_EXE;
8
9# Fake system
10{
11
12  package GSP::Babel;
13
14  use subs qw(which);
15  no warnings qw(redefine once);
16
17  package main;
18
19  *GPS::Babel::which = sub {
20    my $name = shift;
21    return $exe_name;
22  };
23}
24
25{
26
27  # No exe specified
28  local $exe_name = undef;
29  {
30    ok my $babel = GPS::Babel->new(), 'new OK';
31    isa_ok $babel, 'GPS::Babel';
32    ok !$babel->get_exename, 'no exe found OK';
33    eval { $babel->check_exe };
34    like $@, qr/not\s+found/, 'check_exe errors correctly';
35  }
36
37  # Dummy exe specified
38  {
39    ok my $babel = GPS::Babel->new( { exename => $DUMMY_EXE } ),
40     'new OK';
41    isa_ok $babel, 'GPS::Babel';
42    my @exe = $babel->get_exename;
43    is_deeply \@exe, [$DUMMY_EXE], 'exe as arg OK';
44    eval { $babel->check_exe };
45    ok !$@, 'check_exe ok correctly';
46  }
47}
48
49{
50  ok my $babel = GPS::Babel->new(), 'new OK';
51  isa_ok $babel, 'GPS::Babel';
52  my @exe = $babel->get_exename;
53  is_deeply \@exe, [$DUMMY_EXE], 'exe as arg OK';
54  eval { $babel->check_exe };
55  ok !$@, 'check_exe ok correctly';
56}
57
58