retrieve shortcut list from inferior process.
[sepia.git] / t / 02completion.t
blobfe0158f91f0c82e5506b8662dfafda1e78b39a43
1 #!/usr/bin/env perl
3 use Test::Simple tests => 14;
4 use Data::Dumper;
5 require Sepia;
6 # use warnings;
7 no warnings;
9 ## Set up some symbols to complete on:
10 package Z::A;
11 sub a_function { }
12 sub a_nother_function { }
13 sub xx { }
14 $a_var = 0;
15 @a_var2 = ();
16 %a_var3 = ();
17 sub Zz::A::xx { }
18 sub Zz::Aa::xx { }
19 package Z::Another;
20 sub a_function { }
21 sub a_nother_function { }
22 $a_var = 0;
23 @a_var2 = ();
24 %a_var3 = ();
25 package Z::A::Nother;
26 sub a_function { }
27 sub a_nother_function { }
28 $a_var = 0;
29 @a_var2 = ();
30 %a_var3 = ();
31 package Z::Blah;
32 sub a_function { }
33 sub a_nother_function { }
34 $a_var = 0;
35 @a_var2 = ();
36 %a_var3 = ();
37 ## Whew!
38 package main;
40 sub ok_comp
42 my ($type, $str) = splice @_, 0, 2;
43 my $res = Dumper([sort(Sepia::completions($type, $str))]);
44 my $expect = Dumper([sort @_]);
45 my $ok = $res eq $expect;
46 ok($ok, $ok ? $str : "$type/$str\n$res\n$expect\n");
49 ok_comp(qw'CODE Z:A:x', qw'&Z::A::xx');
50 ok_comp(qw'CODE Z:Aa:x', qw'&Zz::Aa::xx');
51 ok_comp(qw'CODE Zz::A:x', qw'&Zz::A::xx');
52 ok_comp(qw'SCALAR Z:A:a_v', qw($Z::A::a_var));
53 ok_comp(qw'ARRAY Z:A:a_v', qw(@Z::A::a_var2));
54 ok_comp(qw'HASH Z:A:a_v', qw(%Z::A::a_var3));
55 ok_comp(qw'HASH z:a:a_v', qw(%Z::A::a_var3 %Z::Another::a_var3));
56 ok_comp(qw'HASH z:a:a_', qw(%Z::A::a_var3 %Z::Another::a_var3));
57 ok_comp(qw'HASH z:a:a', qw(%Z::A::a_var3 %Z::Another::a_var3));
58 ok_comp(qw'CODE Z:A:a_v');
59 ok_comp(qw'CODE Z:A:a', qw(&Z::A::a_nother_function &Z::A::a_function));
60 ok_comp(qw'CODE z:a:a', qw(&Z::A::a_nother_function &Z::Another::a_nother_function
61 &Z::A::a_function &Z::Another::a_function));
62 ok_comp(qw'CODE zaa', qw(&Z::A::a_nother_function &Z::Another::a_nother_function
63 &Z::A::a_function &Z::Another::a_function));
64 ok_comp('', 'za', qw(Z::A:: Z::Another:: Zz::A:: Zz::Aa::));