BEGIN { use_ok(
'Algorithm::CP::IZ'
) };
my
$iz
= Algorithm::CP::IZ->new();
my
$v1
=
$iz
->create_int(0, 10);
{
my
$a
=
$iz
->save_context;
$v1
->Le(5);
my
$b
=
$iz
->save_context;
$v1
->Le(3);
$iz
->restore_context;
is(
$v1
->max, 5);
$iz
->restore_context;
is(
$v1
->max, 10);
my
$err
= 1;
eval
{
$iz
->restore_context;
$err
= 0;
};
is(
$err
, 1);
}
{
my
$a
=
$iz
->save_context;
$v1
->Le(5);
my
$b
=
$iz
->save_context;
$v1
->Le(3);
my
$c
=
$iz
->save_context;
$v1
->Le(2);
$iz
->restore_context_until(
$b
);
is(
$v1
->max, 5);
$iz
->restore_context;
is(
$v1
->max, 10);
my
$err
= 1;
eval
{
$iz
->restore_context;
$err
= 0;
};
is(
$err
, 1);
}
{
my
$a
=
$iz
->save_context;
$v1
->Le(5);
my
$b
=
$iz
->save_context;
$v1
->Le(3);
$iz
->restore_all;
is(
$v1
->max, 10);
my
$err
= 1;
eval
{
$iz
->restore_context;
$err
= 0;
};
is(
$err
, 1);
}
{
my
$va
=
$iz
->create_int(0, 10);
my
$a
=
$iz
->save_context;
$va
->Le(5);
my
$b
=
$iz
->save_context;
$va
->Le(3);
$iz
->accept_context;
is(
$va
->max, 3);
$iz
->restore_context;
is(
$va
->max, 10);
my
$err
= 1;
eval
{
$iz
->accept_context;
$err
= 0;
};
is(
$err
, 1);
}
{
my
$va
=
$iz
->create_int(0, 10);
my
$a
=
$iz
->save_context;
$va
->Le(5);
my
$b
=
$iz
->save_context;
$va
->Le(3);
my
$c
=
$iz
->save_context;
$va
->Le(2);
$iz
->accept_context_until(
$b
);
is(
$va
->max, 2);
$iz
->restore_context;
is(
$va
->max, 10);
my
$err
= 1;
eval
{
$iz
->accept_context;
$err
= 0;
};
is(
$err
, 1);
}
{
my
$va
=
$iz
->create_int(0, 10);
my
$a
=
$iz
->save_context;
$va
->Le(5);
my
$b
=
$iz
->save_context;
$va
->Le(3);
$iz
->accept_all;
is(
$va
->max, 3);
my
$err
= 1;
eval
{
$iz
->accept_context;
$err
= 0;
};
is(
$err
, 1);
}
{
my
$version
=
$iz
->get_version;
if
(
defined
(
$version
)) {
ok(
$version
=~ /^[0-9]+\.[0-9]+\.[0-9]+$/);
}
else
{
ok(1);
}
}
{
my
$err
= 1;
eval
{
my
$iz2
= Algorithm::CP::IZ->new;
$err
= 0;
};
is(
$err
, 1);
}
{
my
$v1
=
$iz
->create_int(0, 2);
$v1
->name(
"abc"
);
is(
$v1
->name,
"abc"
);
$v1
->name(
"日本語"
);
is(
$v1
->name,
"日本語"
);
}
{
my
$v2
=
$iz
->create_int(0, 2);
my
$v3
=
$iz
->create_int(0, 3);
$v3
=
undef
;
my
$v4
=
$iz
->create_int(0, 4);
$v4
=
undef
;
my
$v5
=
$iz
->create_int(0, 5);
$iz
=
undef
;
is(
ref
$v1
,
"Algorithm::CP::IZ::Int::InvalidInt"
);
is(
ref
$v2
,
"Algorithm::CP::IZ::Int::InvalidInt"
);
ok(!
defined
(
$v3
));
ok(!
defined
(
$v4
));
is(
ref
$v5
,
"Algorithm::CP::IZ::Int::InvalidInt"
);
}