#!/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);