File: 95utf8.t

package info (click to toggle)
libobject-pad-perl 0.821-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 936 kB
  • sloc: ansic: 3,361; perl: 3,328; pascal: 28; makefile: 3
file content (56 lines) | stat: -rw-r--r-- 1,380 bytes parent folder | download | duplicates (2)
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
47
48
49
50
51
52
53
54
55
56
#!/usr/bin/perl

use v5.18;
use warnings;
use utf8;

BEGIN { binmode STDOUT, ":encoding(UTF-8)" }

use Test2::V0;

use Object::Pad 0.800 ':experimental(mop)';

# A bunch of test cases with non-ASCII, non-Latin1. Esperanto is good for that
# as the accented characters are not in Latin1.

my $manĝis;

class Sandviĉon {
   method manĝu { $manĝis++ }

   field $tranĉaĵoj :param :reader :writer = undef;
}

my $s = Sandviĉon->new;
isa_ok( $s, [ "Sandviĉon" ], '$s' );

my $classmeta = Object::Pad::MOP::Class->for_class( "Sandviĉon" );
ok( $classmeta, 'Can obtain classmeta for UTF-8 class name' );
is( $classmeta->name, "Sandviĉon", '$classmeta->name' );

# methods
{
   $s->manĝu;
   ok( $manĝis, 'UTF-8 method name works' );

   my $methodmeta = $classmeta->get_own_method( "manĝu" );
   ok( $methodmeta, 'Can obtain methodmeta for UTF-8 method name' );
   is( $methodmeta->name, "manĝu", '$methodmeta->name' );
}

# fields
{
   # accessors
   $s->set_tranĉaĵoj( 3 );
   is( $s->tranĉaĵoj, 3, 'Can obtain value from field via accessor' );

   my $fieldmeta = $classmeta->get_field( '$tranĉaĵoj' );
   ok( $fieldmeta, 'Can obtain fieldmeta for UTF-8 field name' );
   is( $fieldmeta->name, '$tranĉaĵoj', '$fieldmeta->name' );

   # params
   is( Sandviĉon->new( tranĉaĵoj => 2 )->tranĉaĵoj, 2,
      'Can construct with UTF-8 param' );
}

done_testing;