BEGIN {
if
(
$ENV
{DISPLAY} eq
''
) {
plan
skip_all
=>
'No X11 server present (DISPLAY is unset)'
;
}
else
{
plan
tests
=> 17;
}
use_ok(
'X11::Aosd'
,
':all'
);
}
my
$fail
= 0;
foreach
my
$constname
(
qw(
COORDINATE_CENTER COORDINATE_MAXIMUM COORDINATE_MINIMUM
TRANSPARENCY_COMPOSITE TRANSPARENCY_FAKE TRANSPARENCY_NONE)
) {
next
if
(
eval
"my \$a = $constname; 1"
);
if
($@ =~ /^Your vendor
has
not
defined
X11::Aosd macro
$constname
/) {
print
"# pass: $@"
;
}
else
{
print
"# fail: $@"
;
$fail
= 1;
}
}
ok(
$fail
== 0 ,
'Constants'
);
my
$aosd
= X11::Aosd->new;
ok(
$aosd
->isa(
"X11::Aosd"
),
'new X11::Aosd()'
);
$aosd
->set_name(
"X11::Aosd example"
,
"foo"
);
my
@name
=
$aosd
->get_name;
ok (
$name
[0] eq
'X11::Aosd example'
&&
$name
[1] eq
'foo'
,
"set_name() && get_name()"
);
my
$trans
=
$aosd
->get_transparency;
ok (
$trans
== TRANSPARENCY_NONE ||
$trans
== TRANSPARENCY_FAKE ||
$trans
== TRANSPARENCY_COMPOSITE,
"get_transparency()"
);
$aosd
->set_transparency(TRANSPARENCY_NONE);
ok (
$trans
== TRANSPARENCY_NONE,
"set_transparency()"
);
$aosd
->set_geometry(100,200,300,400);
my
@geo
=
$aosd
->get_geometry;
ok (
$geo
[0]==100 &&
$geo
[1]==200 &&
$geo
[2]==300 &&
$geo
[3]==400,
"set_geometry() && get_geometry()"
);
my
@screen
=
$aosd
->get_screen_size;
ok (
$screen
[0]>0 &&
$screen
[1]>0,
"get_screen_size()"
);
$aosd
->set_position(0, 210, 211);
@geo
=
$aosd
->get_geometry;
ok (
$geo
[0]==0 &&
$geo
[1]==0 &&
$geo
[2]==210 &&
$geo
[3]==211,
"set_position()"
);
$aosd
->set_position_offset(67, 56);
@geo
=
$aosd
->get_geometry;
ok (
$geo
[0]==67 &&
$geo
[1]==56 &&
$geo
[2]==210 &&
$geo
[3]==211,
"set_position_offset()"
);
my
(
$rend_cr
,
$rend_user_data
);
my
$color
= 0;
my
$dir
= 1;
my
$x
= 0;
$aosd
->set_renderer(
sub
{
my
(
$cr
,
$user_data
) =
@_
;
$rend_cr
=
$cr
;
$rend_user_data
=
$user_data
;
$color
+=
$dir
*0.05;
if
(
$color
> 1 ) {
$color
= 1;
$dir
= -1;
}
if
(
$color
< 0 ) {
$color
= 0;
$dir
= 1;
}
$aosd
->set_position_with_offset(COORDINATE_CENTER, COORDINATE_CENTER, 210, 211,
$x
++, 0);
$cr
->set_source_rgba (
$color
, 0, 0, 0.75);
$cr
->rectangle (0, 0, 200, 200);
$cr
->fill;
}, $$);
$aosd
->render;
ok (
$rend_cr
->isa(
"Cairo::Context"
) &&
$rend_user_data
== $$,
"set_renderer() && render()"
);
$aosd
->show;
ok (
$aosd
->get_is_shown,
"show() && get_is_shown()"
);
$aosd
->loop_once;
$aosd
->set_mouse_event_cb(
sub
{
my
(
$event
,
$data
) =
@_
;
print
"mouse click: [$event->{x},$event->{y}] button=$event->{button} data=$data\n"
;
}, 42);
ok (
eval
{
$aosd
->set_hide_upon_mouse_event(1); 1 },
"set_hide_upon_mouse_event(1)"
);
my
$time
=
time
;
$aosd
->loop_for(1200);
ok (
time
-
$time
>0,
"loop_for(1200)"
);
my
$main_loop
= Glib::MainLoop->new;
my
$cnt
= 0;
Glib::Timeout->add(
16,
sub
{
$aosd
->update;
$main_loop
->quit
if
++
$cnt
== 100; 1 },
);
$main_loop
->run;
ok (
$cnt
== 100,
"run in Glib::MainLoop()"
);
$aosd
->hide;
ok ( !
$aosd
->get_is_shown,
"hide() && !get_is_shown()"
);
$time
=
time
;
$aosd
->flash(200, 800, 200);
ok (
time
-
$time
>0,
"flash()"
);