[t/spec] Get the trig test generation script working under current Rakudo.
[pugs.git] / t / pugs / lexical_pragmas.t
blob4554dd6f5fbc82cad8b9204fb93a45f265816e3e
1 use v6;
3 use Test;
5 plan 25;
7 BEGIN { @*INC.unshift('t/packages'); }
9 sub bar {
10   ok(Pugs::Internals::current_pragma_value('pragma::Demo').notdef, "Scope is lexical, not dynamic");
14 use pragma::Demo 'x1';
15 is(Pugs::Internals::current_pragma_value('pragma::Demo'), '1', "Outer value is set", :todo<feature>);
17   is(Pugs::Internals::current_pragma_value('pragma::Demo'), '1', "Outer value is inherited", :todo<feature>);
18   use pragma::Demo 'x2';
19   is(Pugs::Internals::current_pragma_value('pragma::Demo'), '2', "Inner value is set", :todo<feature>);
20   bar();
22 is(Pugs::Internals::current_pragma_value('pragma::Demo'), '1', "Outer value is restored", :todo<feature>);
23 use pragma::Demo 'x3';
24 is(Pugs::Internals::current_pragma_value('pragma::Demo'), '3', "Outer value is overidden", :todo<feature>);
25 bar();
28   is(Pugs::Internals::current_pragma_value('pragma::Demo'), '3', "Outer value is inherited", :todo<feature>);
29   {
30     is(Pugs::Internals::current_pragma_value('pragma::Demo'), '3', "Outer value is inherited", :todo<feature>);
31     use pragma::Demo 'x4';
32     is(Pugs::Internals::current_pragma_value('pragma::Demo'), '4', "Inner value is overridden", :todo<feature>);
33     bar();
34   }   
35   is(Pugs::Internals::current_pragma_value('pragma::Demo'), '3', "Inner value is restored", :todo<feature>);
36   use pragma::Demo 'x5';
37   is(Pugs::Internals::current_pragma_value('pragma::Demo'), '5', "Inner value is overridden", :todo<feature>);
38   bar();
40 is(Pugs::Internals::current_pragma_value('pragma::Demo'), '3', "Outer value is restored", :todo<feature>);
41 ok(Pugs::Internals::current_pragma_value('SNONK').notdef, "Absent pragma is not defined");
42 bar();
44 sub foo {
45   check_cpv(3);
46   use pragma::Demo 'x6';
47   check_cpv(6);
48   {
49     check_cpv(6);
50     use pragma::Demo 'x7';
51     check_cpv(7);
52     bar();
53   }
54   check_cpv(6);
55   use pragma::Demo 'x8';
56   check_cpv(8);
57   bar();
60 sub check_cpv ($expected) {
61   is(Pugs::Internals::caller_pragma_value('pragma::Demo'), $expected, 
62         "Caller pragma value $expected", :todo<feature>);
65 foo();