The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

package Chemistry::Elements;

use Test::More 'no_plan';

my $class = 'Chemistry::Elements';

use_ok( $class, qw(get_name) );
ok( defined &get_name, "get_name is defined" );

is( get_name( 'H'        ), 'Hydrogen' );
is( get_name( 'Hydrogen' ), 'Hydrogen' );
is( get_name( '1'        ), 'Hydrogen' );

is( get_name( 'Si',      $Languages{'English'}  ), 'Silicon' );
is( get_name( 'Silicon', $Languages{'English'}  ), 'Silicon' );
is( get_name( '14',      $Languages{'English'}  ), 'Silicon' );

is( get_name( 'He',     $Languages{'Pig Latin'}  ), 'Eliumhai' );
is( get_name( 'Helium', $Languages{'Pig Latin'}  ), 'Eliumhai' );
is( get_name( '2',      $Languages{'Pig Latin'}  ), 'Eliumhai' );

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Functional interface, stuff that shouldn't work
{

is( get_name( -1 ),    undef, 'Got undef for -1'           );
is( get_name( 0 ),     undef, 'Got undef for 0'            );
is( get_name(  ),      undef, 'Got undef for no args'      );
is( get_name( undef ), undef, 'Got undef for undef'        );
is( get_name( '' ),    undef, 'Got undef for empty string' );
is( get_name( 'Unh' ), undef, 'Got undef for Unh'          );
is( get_name( 'Foo' ), undef, 'Got undef for Foo'          );
is( get_name( 82.1 ),  undef, 'Got undef for 82.0'         );


}