mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			77 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Raku
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Raku
		
	
	
	
	
	
| use v6;
 | |
| 
 | |
| use Test;
 | |
| 
 | |
| plan(5);
 | |
| 
 | |
| unless EVAL 'EVAL("1", :lang<perl5>)' {
 | |
|     skip_rest;
 | |
|     exit;
 | |
| }
 | |
| 
 | |
| die unless
 | |
| EVAL(q/
 | |
| package My::Hash;
 | |
| use strict;
 | |
| 
 | |
| sub new {
 | |
|     my ($class, $ref) = @_;
 | |
|     bless \$ref, $class;
 | |
| }
 | |
| 
 | |
| sub hash {
 | |
|     my $self = shift;
 | |
|     return $$self;
 | |
| }
 | |
| 
 | |
| sub my_keys {
 | |
|     my $self = shift;
 | |
|     return keys %{$$self};
 | |
| }
 | |
| 
 | |
| sub my_exists {
 | |
|     my ($self, $idx) = @_;
 | |
|     return exists $$self->{$idx};
 | |
| }
 | |
| 
 | |
| sub fetch {
 | |
|     my ($self, $idx) = @_;
 | |
|     return $$self->{$idx};
 | |
| }
 | |
| 
 | |
| sub store {
 | |
|     my ($self, $idx, $val) = @_;
 | |
|     $$self->{$idx} = $val;
 | |
| }
 | |
| 
 | |
| sub push {
 | |
|     my ($self, $val) = @_;
 | |
| }
 | |
| 
 | |
| 1;
 | |
| /, :lang<perl5>);
 | |
| 
 | |
| my $p5ha = EVAL('sub { My::Hash->new($_[0]) }', :lang<perl5>);
 | |
| my %hash = (5 => 'a', 6 => 'b', 7 => 'c', 8 => 'd');
 | |
| my $p5hash = $p5ha(\%hash);
 | |
| 
 | |
| my $rethash = $p5hash.hash;
 | |
| my @keys = %hash.keys.sort;
 | |
| my @p5keys;
 | |
| try {
 | |
|     @p5keys = $p5hash.my_keys; # this doesn't even pass lives_ok ??
 | |
|     @p5keys .= sort;
 | |
| };
 | |
| 
 | |
| is("{ @keys }", "{ @p5keys }");
 | |
| 
 | |
| ok($p5hash.store(9, 'e'), 'can store');
 | |
| is(%hash{9}, 'e', 'store result');
 | |
| 
 | |
| is($p5hash.fetch(5), 'a', 'fetch result');
 | |
| is($p5hash.my_exists(5), %hash<5>:exists, 'exists');
 | |
| #?pugs todo 'bug'
 | |
| is($p5hash.my_exists(12), %hash<12>:exists, 'nonexists fail');
 | |
| 
 | |
| # vim: ft=perl6
 |