The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use v5.10.1;
use Test::More;
use Plack::Builder;
use Plack::Test;
use HTTP::Request::Common;

my $stack = builder {
	enable 'Negotiate',
		formats => {
			utf8 => { charset => 'utf-8' },
			iso => { charset => 'iso-8859-1' },
			_ 	=> { type => 'text/html', language => 'en' },
		};
    sub { [200,[],[shift->{'negotiate.format'}]] };
};

test_psgi $stack => sub {
	my $cb = shift;

	my $res = $cb->(GET '/', 'Accept-Charset' => 'utf-8' );
	is $res->content, 'utf8', 'selected utf8';
	is $res->header('Content-Type'), 'text/html; charset=utf-8', 'set content-type';
        is $res->header('Vary'), 'Accept';

	$res = $cb->(GET '/', 'Accept-Charset' => 'iso-8859-1' );
	is $res->content, 'iso', 'selected iso';
	is $res->header('Content-Type'), 'text/html; charset=iso-8859-1', 'set content-type';
        is $res->header('Content-Language'), 'en';
        is $res->header('Vary'), 'Accept';

	$res = $cb->(GET '/', 'Accept-Charset' => 'iso-8859-1', Accept => 'text/html; charset=utf8' );
	is $res->content, 'iso', 'selected iso (Accept-Charset has priority)';
	is $res->header('Content-Type'), 'text/html; charset=iso-8859-1', 'set content-type';
        is $res->header('Vary'), 'Accept';

};

done_testing;