#!perl use strict; use warnings; use Linux::Sysfs; BEGIN { require 't/common.pl'; } plan tests => 29; # close { my $dev = Linux::Sysfs::ClassDevice->open_path($val_class_dev_path); isa_ok( $dev, 'Linux::Sysfs::ClassDevice' ); lives_ok(sub { $dev->close; }, 'close'); } { my $dev = bless \(my $s), 'Linux::Sysfs::ClassDevice'; lives_ok(sub { $dev->close; }, 'close on invalid class'); } # open_path { my $dev = Linux::Sysfs::ClassDevice->open_path($val_class_dev_path); isa_ok( $dev, 'Linux::Sysfs::ClassDevice' ); show_class_device($dev); $dev->close; } { my $dev = Linux::Sysfs::ClassDevice->open_path($inval_path); ok( !defined $dev, 'open_path on invalid path' ); } { no warnings 'uninitialized'; my $dev = Linux::Sysfs::ClassDevice->open_path(undef); ok( !defined $dev, 'open_path on undefined path' ); } # open { my $dev = Linux::Sysfs::ClassDevice->open($val_class, $val_class_dev); isa_ok( $dev, 'Linux::Sysfs::ClassDevice' ); show_class_device($dev); $dev->close; } { my @opts = ( [ $val_class, $inval_name ], # TODO [ $val_class, undef ], [ $inval_name, $val_class_dev ], [ $inval_name, $inval_name ], [ $inval_name, undef ], [ undef, $val_class_dev ], [ undef, $inval_name ], # TODO [ undef, undef ], ); for my $opt (@opts) { my ($class, $name) = @{$opt}; no warnings 'uninitialized'; my $dev = Linux::Sysfs::ClassDevice->open($class, $name); ok( !defined $dev, 'open with invalid arguments' ); } } # get_device { my $classdev = Linux::Sysfs::ClassDevice->open($val_class, $val_class_dev); isa_ok( $classdev, 'Linux::Sysfs::ClassDevice' ); my $dev = $classdev->get_device; isa_ok( $dev, 'Linux::Sysfs::Device' ); #TODO: errno show_device($dev); $classdev->close; } { my $classdev = bless \(my $s), 'Linux::Sysfs::ClassDevice'; my $dev = $classdev->get_device; ok( !defined $dev, 'get_device on invalid class device' ); } # get_parent { my $classdev = Linux::Sysfs::ClassDevice->open_path($val_block_class_dev_path); isa_ok( $classdev, 'Linux::Sysfs::ClassDevice' ); my $parent = $classdev->get_parent; isa_ok( $parent, 'Linux::Sysfs::ClassDevice' ); #TODO: errno show_class_device($parent); $classdev->close; } { my $classdev = bless \(my $s), 'Linux::Sysfs::ClassDevice'; my $parent = $classdev->get_parent; ok( !defined $parent, 'get_parent on invalid class device' ); } # get_attributes { my $dev = Linux::Sysfs::ClassDevice->open_path($val_class_dev_path); isa_ok( $dev, 'Linux::Sysfs::ClassDevice' ); my @attrs = $dev->get_attributes; ok( scalar @attrs > 0, 'get_attributes' ); #TODO: errno show_attribute_list(\@attrs); $dev->close; } { my $dev = bless \(my $s), 'Linux::Sysfs::ClassDevice'; my @attrs = $dev->get_attributes; ok( scalar @attrs == 0, 'get_attributes on invalid class device' ); } # get_attr { my $dev = Linux::Sysfs::ClassDevice->open_path($val_class_dev_path); isa_ok( $dev, 'Linux::Sysfs::ClassDevice' ); my $attr = $dev->get_attr($val_class_dev_attr); isa_ok( $attr, 'Linux::Sysfs::Attribute' ); $attr = $dev->get_attr($inval_name); ok( !defined $attr, 'get_attr with invalid name' ); { no warnings 'uninitialized'; $attr = $dev->get_attr(undef); ok( !defined $attr, 'get_attr with undefined name' ); } $dev->close; } { my $dev = bless \(my $s), 'Linux::Sysfs::ClassDevice'; my $attr = $dev->get_attr($val_class_dev_attr); ok( !defined $attr, 'get_attr on invalid class device' ); $attr = $dev->get_attr($inval_name); ok( !defined $attr, 'get_attr on invalid class device with invalid name' ); { no warnings 'uninitialized'; $attr = $dev->get_attr(undef); ok( !defined $attr, 'get_attr on invalid class device with undefined name' ); } }