File: 01rootobj.t

package info (click to toggle)
libcircle-be-perl 0.173320-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 392 kB
  • sloc: perl: 6,042; makefile: 4; sh: 1
file content (73 lines) | stat: -rw-r--r-- 2,076 bytes parent folder | download | duplicates (3)
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
use strict;
use warnings;

use Test::More tests => 13;
use IO::Async::Test;

use IO::Async::Loop;

use Circle;
use t::CircleTest qw( get_widget_from get_widgetset_from );

my $loop = IO::Async::Loop->new;
testing_loop( $loop );

my ( $circle, $client ) = Circle->new_with_client( loop => $loop );

my $rootobj;
wait_for { $rootobj = $client->rootobj };

isa_ok( $rootobj, "Tangence::ObjectProxy", '$rootobj' );

ok( $rootobj->proxy_isa( "Circle.RootObj" ), '$rootobj proxy isa Circle.RootObj' );
ok( $rootobj->proxy_isa( "Circle.WindowItem" ), '$rootobj proxy isa Circle.WindowItem' );

my $global_widget = get_widget_from $rootobj;

ok( $global_widget->proxy_isa( "Circle.Widget" ), '$global_widget' );

# Don't rely too much on exact UI layout; build a map of class->widget instead
my $widgets = get_widgetset_from $rootobj;

ok( my $scroller = $widgets->{"Circle.Widget.Scroller"}, 'Found a Scroller widget' );
ok( my $entry    = $widgets->{"Circle.Widget.Entry"},    'Found an Entry widget' );

my $displayevents;
$scroller->watch_property(
   "displayevents",
   on_updated => sub { $displayevents = $_[0] },
)->get;

my $time_before = time;

$entry->call_method(
   enter => "/eval 1"
)->get;

wait_for { $displayevents };

my $time_after = time;

is( scalar @$displayevents, 1, '$displayevents after entering command contains one line' );

my ( $event ) = @$displayevents;

is( $event->[0], "response", '$event name' );
# Can't quite be sure of the timestamp but it'll be bounded
ok( $time_before >= $event->[1] && $event->[1] >= $time_after, '$event time' );
is_deeply( $event->[2], { text => "Result: 1" }, '$event args' );

undef $displayevents;
$rootobj->call_method(
   do_command => "eval 1"
)->get;

wait_for { $displayevents };

( $event ) = @$displayevents;

is( $event->[0], "response", '$event name from do_command' );
# Can't quite be sure of the timestamp but it'll be bounded
ok( $time_before >= $event->[1] && $event->[1] >= $time_after, '$event time from do_command' );
is_deeply( $event->[2], { text => "Result: 1" }, '$event args from do_command' );