xref: /openbsd-src/gnu/usr.bin/perl/t/class/phasers.t (revision 5486feefcc8cb79b19e014ab332cc5dfd05b3b33)
1f2a19305Safresh1#!./perl
2f2a19305Safresh1
3f2a19305Safresh1BEGIN {
4f2a19305Safresh1    chdir 't' if -d 't';
5f2a19305Safresh1    require './test.pl';
6f2a19305Safresh1    set_up_inc('../lib');
7f2a19305Safresh1    require Config;
8f2a19305Safresh1}
9f2a19305Safresh1
10f2a19305Safresh1use v5.36;
11f2a19305Safresh1use feature 'class';
12f2a19305Safresh1no warnings 'experimental::class';
13f2a19305Safresh1
14f2a19305Safresh1# ADJUST
15f2a19305Safresh1{
16f2a19305Safresh1    my $adjusted;
17*5486feefSafresh1    my $class_in_adjust;
18f2a19305Safresh1
19*5486feefSafresh1    class Testcase1 {
20f2a19305Safresh1        ADJUST { $adjusted .= "a" }
21f2a19305Safresh1        ADJUST { $adjusted .= "b" }
22*5486feefSafresh1        ADJUST { $class_in_adjust = __CLASS__; }
23f2a19305Safresh1    }
24f2a19305Safresh1
25*5486feefSafresh1    Testcase1->new;
26f2a19305Safresh1    is($adjusted, "ab", 'both ADJUST blocks run in order');
27*5486feefSafresh1    is($class_in_adjust, "Testcase1", 'value of __CLASS__ in ADJUST block');
28f2a19305Safresh1}
29f2a19305Safresh1
30f2a19305Safresh1# $self in ADJUST
31f2a19305Safresh1{
32f2a19305Safresh1    my $self_in_ADJUST;
33f2a19305Safresh1
34*5486feefSafresh1    class Testcase2 {
35f2a19305Safresh1        ADJUST { $self_in_ADJUST = $self; }
36f2a19305Safresh1    }
37f2a19305Safresh1
38*5486feefSafresh1    my $obj = Testcase2->new;
39f2a19305Safresh1    is($self_in_ADJUST, $obj, '$self is set correctly inside ADJUST blocks');
40f2a19305Safresh1}
41f2a19305Safresh1
42f2a19305Safresh1done_testing;
43