File: isa_subclass.t

package info (click to toggle)
libclass-mixinfactory-perl 0.92-5
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 172 kB
  • sloc: perl: 135; makefile: 2
file content (46 lines) | stat: -rw-r--r-- 1,301 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
use Test;
BEGIN { plan tests => 4 }


{

  package HelloWorld; 
  sub hello { return "Hello World!" }
  
  package HelloWorld::UpperCase;
  sub hello { uc( (shift)->NEXT('hello', @_) ) }
  
  package HelloWorld::Bold;
  sub hello { "<b>" . (shift)->NEXT('hello', @_) . "</b>" }
  
  package HelloWorld::Italic;
  sub hello { "<i>" . (shift)->NEXT('hello', @_) . "</i>" }

  package HelloWorld::Factory;
  use Class::MixinFactory -isafactory;
  BEGIN { $INC{"HelloWorld/Factory.pm"} = __FILE__ }
  BEGIN { HelloWorld::Factory->base_class( "HelloWorld" ) }

}

{ 
  package My::FirstStyle; 
  use Class::MixinFactory -isasubclass => HelloWorld::Factory => 'UpperCase';
  sub hello { "* " . (shift)->NEXT('hello', @_) . " *" }

  package My::SecondStyle; 
  use Class::MixinFactory -isasubclass => HelloWorld::Factory => 'Bold', 'Italic';
  sub hello { "* " . (shift)->NEXT('hello', @_) . " *" }

  package My::ThirdStyle; 
  use Class::MixinFactory -isasubclass => HelloWorld::Factory => 'Bold', 'UpperCase';
  sub hello { "* " . (shift)->NEXT('hello', @_) . " *" }
}

package main;

ok( HelloWorld->hello(), 'Hello World!' );

ok( My::FirstStyle->hello(), '* HELLO WORLD! *' );
ok( My::SecondStyle->hello(), '* <b><i>Hello World!</i></b> *' );
ok( My::ThirdStyle->hello(), '* <b>HELLO WORLD!</b> *' );