1use strict; use warnings FATAL => 'all'; 2 3BEGIN { 4 unless (eval {; require Test::Without::Module; 1 } && !$@) { 5 require Test::More; 6 Test::More::plan(skip_all => 'these tests require Test::Without::Module'); 7 } 8} 9 10use Test::Without::Module 'List::UtilsBy::XS'; 11 12use Test::More; 13use List::Objects::WithUtils; 14 15 16ok !$List::Objects::WithUtils::Role::Array::UsingUtilsByXS, 17 'List::UtilsBy::XS not loaded'; 18 19# sort_by 20ok array->sort_by(sub { $_->foo })->is_empty, 'empty array sort_by ok'; 21my $arr = array( 22 +{ id => 'c' }, 23 +{ id => 'a' }, 24 +{ id => 'b' }, 25); 26 27my $sorted = $arr->sort_by(sub { $_->{id} }); 28 29is_deeply 30 [ $sorted->all ], 31 [ +{ id => 'a' }, +{ id => 'b' }, +{ id => 'c' } ], 32 'sort_by ok'; 33 34# nsort_by 35ok array->nsort_by(sub { $_->foo })->is_empty, 'empty array nsort_by ok'; 36$arr = array( 37 +{ id => 2 }, 38 +{ id => 1 }, 39 +{ id => 3 }, 40); 41 42$sorted = $arr->nsort_by(sub { $_->{id} }); 43 44is_deeply 45 [ $sorted->all ], 46 [ +{ id => 1 }, +{ id => 2 }, +{ id => 3 } ], 47 'nsort_by ok'; 48 49# uniq_by 50ok array->uniq_by(sub { $_->foo })->is_empty, 'empty array uniq_by ok'; 51$arr = array( 52 +{ id => 1 }, 53 +{ id => 2 }, 54 +{ id => 1 }, 55 +{ id => 3 }, 56 +{ id => 3 }, 57); 58my $uniq = $arr->uniq_by(sub { $_->{id} }); 59is_deeply 60 [ $uniq->all ], 61 [ 62 +{ id => 1 }, 63 +{ id => 2 }, 64 +{ id => 3 }, 65 ], 66 'uniq_by ok'; 67 68done_testing; 69 70