Blame t/self.t

Packit 9002b2
use strict;
Packit 9002b2
use warnings;
Packit 9002b2
Packit 9002b2
use Test::More;
Packit 9002b2
Packit 9002b2
use DateTime::Format::Builder;
Packit 9002b2
Packit 9002b2
{
Packit 9002b2
    my $sample = 'SampleClassWithSelf';
Packit 9002b2
    DateTime::Format::Builder->create_class(
Packit 9002b2
        class   => $sample,
Packit 9002b2
        parsers => {
Packit 9002b2
            parse_datetime => [
Packit 9002b2
                [
Packit 9002b2
                    preprocess => sub {
Packit 9002b2
                        my %p    = @_;
Packit 9002b2
                        my $self = $p{self};
Packit 9002b2
                        $p{parsed}->{time_zone} = $self->{global}
Packit 9002b2
                            if $self->{global};
Packit 9002b2
                        return $p{input};
Packit 9002b2
                    },
Packit 9002b2
                ],
Packit 9002b2
                {
Packit 9002b2
                    params => [qw( year month day hour minute second )],
Packit 9002b2
                    regex  => qr/^(\d\d\d\d)(\d\d)(\d\d)T(\d\d)(\d\d)(\d\d)$/,
Packit 9002b2
                    preprocess => sub {
Packit 9002b2
                        my %p    = @_;
Packit 9002b2
                        my $self = $p{self};
Packit 9002b2
                        $p{parsed}->{time_zone} = $self->{pre}
Packit 9002b2
                            if $self->{pre};
Packit 9002b2
                        return $p{input};
Packit 9002b2
                    },
Packit 9002b2
                    postprocess => sub {
Packit 9002b2
                        my %p    = @_;
Packit 9002b2
                        my $self = $p{self};
Packit 9002b2
                        $p{parsed}->{time_zone} = $self->{post}
Packit 9002b2
                            if $self->{post};
Packit 9002b2
                        return 1;
Packit 9002b2
                    },
Packit 9002b2
                },
Packit 9002b2
            ],
Packit 9002b2
        }
Packit 9002b2
    );
Packit 9002b2
Packit 9002b2
    my %tests = (
Packit 9002b2
        global => 'Africa/Cairo',
Packit 9002b2
        pre    => 'Europe/London',
Packit 9002b2
        post   => 'Australia/Sydney',
Packit 9002b2
    );
Packit 9002b2
Packit 9002b2
    while ( my ( $callback, $value ) = each %tests ) {
Packit 9002b2
        my $parser = $sample->new();
Packit 9002b2
        $parser->{$callback} = $value;
Packit 9002b2
        my $dt = $parser->parse_datetime("20030716T163245");
Packit 9002b2
        is( $dt->time_zone->name, $value );
Packit 9002b2
    }
Packit 9002b2
}
Packit 9002b2
Packit 9002b2
done_testing();