1use strict;
2use warnings;
3
4use lib 't/lib';
5
6use DateTime::Format::Builder;
7use Test::More;
8
9unless (
10    eval
11    "use Test::Memory::Cycle; Devel::Cycle->can('_find_cycle_SCALAR'); " ) {
12    plan skip_all =>
13        'These tests require Test::Memory::Cycle and a working Devel::Cycle (> 1.07).';
14    exit;
15}
16
17{
18    my $builder = DateTime::Format::Builder->new();
19    my $parser  = $builder->parser( { strptime => '%Y-%m-%d' } );
20
21    memory_cycle_ok(
22        $parser,
23        'Make sure parser object does not have circular refs'
24    );
25
26    memory_cycle_ok(
27        $builder,
28        'Make sure builder object does not have circular refs after making a single parser'
29    );
30}
31
32{
33    my $builder = DateTime::Format::Builder->new();
34    my $parser  = $builder->parser(
35        {
36            strptime => '%Y-%m-%d',
37            strptime => '%d-%m-%Y',
38        }
39    );
40
41    memory_cycle_ok(
42        $parser,
43        'Make sure parser object does not have circular refs'
44    );
45
46    memory_cycle_ok(
47        $builder,
48        'Make sure builder object does not have circular refs after making a multi parser'
49    );
50}
51
52done_testing();
53