File: GstMessage.t

package info (click to toggle)
libgstreamer-perl 0.19-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 900 kB
  • ctags: 59
  • sloc: perl: 2,456; ansic: 32; makefile: 6
file content (219 lines) | stat: -rw-r--r-- 7,016 bytes parent folder | download | duplicates (2)
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
#!/usr/bin/perl
use strict;
use warnings;
use Glib qw(TRUE FALSE);
use Test::More;

# $Id$

use GStreamer -init;

my $src = GStreamer::ElementFactory -> make(alsasrc => "urgs");

if (not defined $src) {
  plan skip_all => 'failed to create an alsasrc';
} else {
  plan tests => 82;
}

# --------------------------------------------------------------------------- #

my $message = GStreamer::Message::EOS -> new($src);
isa_ok($message, "GStreamer::Message::EOS");
isa_ok($message, "GStreamer::Message");
isa_ok($message, "GStreamer::MiniObject");

ok($message -> type() & "eos");
ok(defined $message -> timestamp());
is($message -> src(), $src);

# --------------------------------------------------------------------------- #

my $error = Glib::Error::new("Glib::File::Error", "noent", "oops!");

$message = GStreamer::Message::Error -> new($src, $error, "oops!");
isa_ok($message, "GStreamer::Message::Error");
isa_ok($message, "GStreamer::Message");
isa_ok($message, "GStreamer::MiniObject");

isa_ok($message -> error(), "Glib::File::Error");
is($message -> error() -> value(), "noent");
is($message -> error() -> message(), "oops!");
is($message -> debug(), "oops!");

# --------------------------------------------------------------------------- #

$message = GStreamer::Message::Warning -> new($src, $error, "oops!");
isa_ok($message, "GStreamer::Message::Warning");
isa_ok($message, "GStreamer::Message");
isa_ok($message, "GStreamer::MiniObject");

isa_ok($message -> error(), "Glib::File::Error");
is($message -> error() -> value(), "noent");
is($message -> error() -> message(), "oops!");
is($message -> debug(), "oops!");

# --------------------------------------------------------------------------- #

my $tags = { title => ["Urgs"], artist => [qw(Screw You)] };

$message = GStreamer::Message::Tag -> new($src, $tags);
isa_ok($message, "GStreamer::Message::Tag");
isa_ok($message, "GStreamer::Message");
isa_ok($message, "GStreamer::MiniObject");

is_deeply($message -> tag_list(), $tags);

# --------------------------------------------------------------------------- #

$message = GStreamer::Message::StateChanged -> new($src, "null", "ready", "playing");
isa_ok($message, "GStreamer::Message::StateChanged");
isa_ok($message, "GStreamer::Message");
isa_ok($message, "GStreamer::MiniObject");

is($message -> old_state(), "null");
is($message -> new_state(), "ready");
is($message -> pending(), "playing");

# --------------------------------------------------------------------------- #

$message = GStreamer::Message::StateDirty -> new($src);
isa_ok($message, "GStreamer::Message::StateDirty");
isa_ok($message, "GStreamer::Message");
isa_ok($message, "GStreamer::MiniObject");

# --------------------------------------------------------------------------- #

my $clock = $src -> provide_clock();

SKIP: {
  skip "clock tests", 13
    unless defined $clock;

  $message = GStreamer::Message::ClockProvide -> new($src, $clock, TRUE);
  isa_ok($message, "GStreamer::Message::ClockProvide");
  isa_ok($message, "GStreamer::Message");
  isa_ok($message, "GStreamer::MiniObject");

  is($message -> clock(), $clock);
  is($message -> ready(), TRUE);

  $message = GStreamer::Message::ClockLost -> new($src, $clock);
  isa_ok($message, "GStreamer::Message::ClockLost");
  isa_ok($message, "GStreamer::Message");
  isa_ok($message, "GStreamer::MiniObject");

  is($message -> clock(), $clock);

  $message = GStreamer::Message::NewClock -> new($src, $clock);
  isa_ok($message, "GStreamer::Message::NewClock");
  isa_ok($message, "GStreamer::Message");
  isa_ok($message, "GStreamer::MiniObject");

  is($message -> clock(), $clock);
}

# --------------------------------------------------------------------------- #

my $structure = {
  name => "urgs",
  fields => [
    [field_one => "Glib::String" => "urgs"],
    [field_two => "Glib::Int" => 23]
  ]
};

$message = GStreamer::Message::Application -> new($src, $structure);
isa_ok($message, "GStreamer::Message::Application");
isa_ok($message, "GStreamer::Message");
isa_ok($message, "GStreamer::MiniObject");

is_deeply($message -> get_structure(), $structure);

# --------------------------------------------------------------------------- #

$message = GStreamer::Message::Element -> new($src, $structure);
isa_ok($message, "GStreamer::Message::Element");
isa_ok($message, "GStreamer::Message");
isa_ok($message, "GStreamer::MiniObject");

is_deeply($message -> get_structure(), $structure);

# --------------------------------------------------------------------------- #

$message = GStreamer::Message::SegmentStart -> new($src, "time", 23);
isa_ok($message, "GStreamer::Message::SegmentStart");
isa_ok($message, "GStreamer::Message");
isa_ok($message, "GStreamer::MiniObject");

is($message -> format(), "time");
is($message -> position(), 23);

# --------------------------------------------------------------------------- #

$message = GStreamer::Message::SegmentDone -> new($src, "time", 23);
isa_ok($message, "GStreamer::Message::SegmentDone");
isa_ok($message, "GStreamer::Message");
isa_ok($message, "GStreamer::MiniObject");

is($message -> format(), "time");
is($message -> position(), 23);

# --------------------------------------------------------------------------- #

$message = GStreamer::Message::Duration -> new($src, "time", 23);
isa_ok($message, "GStreamer::Message::Duration");
isa_ok($message, "GStreamer::Message");
isa_ok($message, "GStreamer::MiniObject");

is($message -> format(), "time");
is($message -> duration(), 23);

# --------------------------------------------------------------------------- #

SKIP: {
  skip 'latency', 3
    unless GStreamer -> CHECK_VERSION(0, 10, 12);

  $message = GStreamer::Message::Latency -> new($src);
  isa_ok($message, "GStreamer::Message::Latency");
  isa_ok($message, "GStreamer::Message");
  isa_ok($message, "GStreamer::MiniObject");
}

# --------------------------------------------------------------------------- #

SKIP: {
  skip 'async start & done', 7
    unless GStreamer -> CHECK_VERSION(0, 10, 13);

  $message = GStreamer::Message::AsyncStart -> new($src, TRUE);
  isa_ok($message, "GStreamer::Message::AsyncStart");
  isa_ok($message, "GStreamer::Message");
  isa_ok($message, "GStreamer::MiniObject");

  is($message -> new_base_time, TRUE);

  $message = GStreamer::Message::AsyncDone -> new($src);
  isa_ok($message, "GStreamer::Message::AsyncDone");
  isa_ok($message, "GStreamer::Message");
  isa_ok($message, "GStreamer::MiniObject");
}

# --------------------------------------------------------------------------- #

$structure = {
  name => "urgs",
  fields => [
    [format => "GStreamer::Format" => "time"],
    [position => "Glib::Int" => 42],
    [duration => "Glib::Int" => 23],
    [sgru => "Glib::String" => "urgs"]
  ]
};

$message = GStreamer::Message::Custom -> new([qw(segment-done duration)], $src, $structure);
isa_ok($message, "GStreamer::Message");
isa_ok($message, "GStreamer::MiniObject");

is_deeply($message -> get_structure(), $structure);