The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl

use 5.010;
use strict;
use warnings;
use Test::More 0.96;
use Test::Exception;

use Perinci::Object;

my $rimeta = rimeta {
    v => 1.1,
    summary => "English",
    "summary.alt.lang.id_ID" => "Bahasa",
};

{
    local $ENV{LANG};
    local $ENV{LANGUAGE};
    is($rimeta->langprop("summary"), "English",
       "doesn't specify default_lang -> en_US");
}

is($rimeta->langprop("summary", {lang=>"id_ID"}), "Bahasa",
   "specify lang id_ID");

{
    local $ENV{LANG};
    local $ENV{LANGUAGE} = "id_ID";
    is($rimeta->langprop("summary", {}), "Bahasa",
       "specify lang id_ID via env LANGUAGE");
}

{
    local $ENV{LANG} = "id_ID";
    local $ENV{LANGUAGE};
    is($rimeta->langprop("summary", {}), "Bahasa",
       "specify lang id_ID via env LANG");
}

is($rimeta->langprop("summary", {lang=>"fr_FR"}), "{en_US English}",
   "specify non-existent lang fr_FR -> default_lang + marked");

$rimeta = rimeta {
    v => 1.1,
    default_lang => "id_ID",
    description => "Ba\nhasa\n",
    "description.alt.lang.en_US" => "Eng\nlish\n",
};

{
    local $ENV{LANG};
    local $ENV{LANGUAGE};
    is($rimeta->langprop("description"), "Ba\nhasa\n",
       "default_lang id_ID");
}

is($rimeta->langprop("description", {lang=>"id_ID"}), "Ba\nhasa\n",
   "specify lang=id_ID");
is($rimeta->langprop("description", {lang=>"en_US"}), "Eng\nlish\n",
   "specify lang=en_US");
is($rimeta->langprop("description", {lang=>"fr_FR"}), "{id_ID Ba\nhasa}\n",
   "specify non-existent lang fr_FR -> default_lang id_ID + marked");

is($rimeta->langprop("description", {lang=>"fr_FR", mark_different_lang=>0}),
   "Ba\nhasa\n",
   "mark_different_lang=0");

done_testing();