File Coverage

blib/lib/Language/P/Toy/Value/List.pm
Criterion Covered Total %
statement 22 26 84.6
branch 2 4 50.0
condition n/a
subroutine 5 7 71.4
pod 0 4 0.0
total 29 41 70.7


line stmt bran cond sub pod time code
1             package Language::P::Toy::Value::List;
2              
3 30     30   169 use strict;
  30         67  
  30         1122  
4 30     30   161 use warnings;
  30         60  
  30         1007  
5 30     30   159 use base qw(Language::P::Toy::Value::Array);
  30         59  
  30         12314  
6              
7             __PACKAGE__->mk_ro_accessors( qw() );
8              
9 0     0 0 0 sub type { 8 }
10              
11             sub assign {
12 2646     2646 0 3451 my( $self, $other ) = @_;
13              
14             # FIXME optimize: don't do it unless necessary
15 2646         6506 my $oiter = $other->clone( 1 )->iterator;
16 2646         30640 for( my $iter = $self->iterator; $iter->next; ) {
17 2650         6672 $iter->item->assign_iterator( $oiter );
18             }
19             }
20              
21             sub push {
22 8560     8560 0 13789 my( $self, @values ) = @_;
23              
24 8560         13023 foreach my $value ( @values ) {
25 8560 100       52923 if( $value->isa( 'Language::P::Toy::Value::Array' ) ) {
26 5         32 for( my $it = $value->iterator; $it->next; ) {
27 7         10 push @{$self->{array}}, $it->item;
  7         25  
28             }
29             } else {
30 8555         9551 push @{$self->{array}}, $value;
  8555         29767  
31             }
32             }
33              
34 8560         34491 return;
35             }
36              
37             sub as_scalar {
38 0     0 0   my( $self ) = @_;
39              
40 0 0         return @{$self->{array}} ? $self->{array}[-1]->as_scalar :
  0            
41             # FIXME real undef
42             Language::P::Toy::Value::StringNumber->new;
43             }
44              
45             1;