The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w
use strict;
use Gtk2::TestHelper tests => 13;

# $Id$

my $item_one = Gtk2::RadioMenuItem -> new();
isa_ok($item_one, "Gtk2::RadioMenuItem");

my $item_two = Gtk2::RadioMenuItem -> new($item_one);
isa_ok($item_two, "Gtk2::RadioMenuItem");

my $item_three = Gtk2::RadioMenuItem -> new_with_label([], "Bla");
isa_ok($item_three, "Gtk2::RadioMenuItem");

my $item_four = Gtk2::RadioMenuItem -> new_with_mnemonic([$item_one, $item_two], "_Bla");
isa_ok($item_four, "Gtk2::RadioMenuItem");

$item_three -> set_group($item_one);

is_deeply($item_one -> get_group(), [$item_one, $item_two, $item_three, $item_four]);
{
  # get_group() no memory leaks in arrayref return and array items
  my $x = Gtk2::RadioMenuItem->new;
  my $y = Gtk2::RadioMenuItem->new;
  $y->set_group($x);
  my $aref = $x->get_group;
  is_deeply($aref, [$x,$y]);
  require Scalar::Util;
  Scalar::Util::weaken ($aref);
  is ($aref, undef, 'get_group() array destroyed by weakening');
  Scalar::Util::weaken ($x);
  is ($x, undef, 'get_group() item x destroyed by weakening');
  Scalar::Util::weaken ($y);
  is ($y, undef, 'get_group() item y destroyed by weakening');
}

SKIP: {
  skip("the from_widget variants are new in 2.4", 4)
    unless Gtk2->CHECK_VERSION (2, 4, 0);

  my $item_five = Gtk2::RadioMenuItem -> new_from_widget($item_one);
  isa_ok($item_five, "Gtk2::RadioMenuItem");

  my $item_six = Gtk2::RadioMenuItem -> new_with_label_from_widget($item_two, "Bla");
  isa_ok($item_six, "Gtk2::RadioMenuItem");

  my $item_seven = Gtk2::RadioMenuItem -> new_with_mnemonic_from_widget($item_three, "_Bla");
  isa_ok($item_seven, "Gtk2::RadioMenuItem");

  is_deeply($item_one -> get_group(), [$item_one, $item_two, $item_three, $item_four, $item_five, $item_six, $item_seven]);
}

__END__

Copyright (C) 2003, 2010 by the gtk2-perl team (see the file AUTHORS for the
full list).  See LICENSE for more information.