The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test::Base;
use HTTP::MobileAgent;
use HTTP::Headers;

filters {
    input => [qw/yaml functions/],
    expected => [qw/yaml/],
};

run_is_deeply input => 'expected';

sub functions {
    my $inputs_ref = shift;
    my $header = HTTP::Headers->new;
    $header->header( $_ => $inputs_ref->{ headers }->{ $_ } )
        for keys %{ $inputs_ref->{ headers } };
    my $ma = HTTP::MobileAgent->new( $header );
    my @keys = qw/carrier browser_version width height/;
    +{ map { $_ => $_ =~ /width|height/ ? $ma->display->$_ : $ma->$_ } @keys };
}

__END__

=== DoCoMo
--- input
headers:
  User-Agent: DoCoMo/2.0 SH905i(c100;TB;W24H16)
--- expected
carrier: I
browser_version: 1.0
width: 240
height: 320

=== DoCoMo
--- input
headers:
  User-Agent: DoCoMo/2.0 P07A3(c500;TB;W24H15)
--- expected
carrier: I
browser_version: 2.0
width: 480
height: 662