The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use utf8;
use Test::More;
use t::Util;

sub run;

my $parser = make_parser
    q{05202,"016  ","0160812","アキタケン","ノシロシ","ナカジマ(1-97-116)","秋田県","能代市","中嶋(1−97〜116)",1,0,0,0,0,0},
    q{04205,"988  ","9880927","ミヤギケン","ケセンヌマシ","カラクワチョウニシモウネ(200バンイジョウ)","宮城県","気仙沼市","唐桑町西舞根(200番以上)",1,0,0,0,0,0},
    q{44201,"870  ","8700924","オオイタケン","オオイタシ","マキ(1-3チョウメ、シラタキB・C、タカミ)","大分県","大分市","牧(1〜3丁目、白滝B・C、高見)",1,0,0,0,0,0},
    q{45206,"88301","8830104","ミヤザキケン","ヒュウガシ","トウゴウチョウヤマゲボ(513ノ1イナイ)","宮崎県","日向市","東郷町山陰戊(513の1以内)",1,0,0,0,0,0},
    q{46201,"892  ","8920876","カゴシマケン","カゴシマシ","オカノハラチョウ(832ノ2・4)","鹿児島県","鹿児島市","岡之原町(832の2・4)",1,0,0,0,0,0},
    q{45201,"88917","8891713","ミヤザキケン","ミヤザキシ","タカオカチョウカミクラナガ(1206-1268バンチ、ウチノヤエ)","宮崎県","宮崎市","高岡町上倉永(1206〜1268番地、内の八重)",1,0,0,0,0,0},
    q{01632,"08011","0801189","ホッカイドウ","カトウグンシホロチョウ","シホロ(ミナミイック18ゴウ-21ゴウ)","北海道","河東郡士幌町","士幌(南一区18号〜21号南)",1,0,0,1,0,0},
    q{01639,"08915","0891583","ホッカイドウ","カサイグンサラベツムラ","カミサラベツ(1ク)","北海道","河西郡更別村","上更別(1区)",1,0,0,0,0,0},
    q{01639,"08915","0891542","ホッカイドウ","カサイグンサラベツムラ","サラベツ(ク)","北海道","河西郡更別村","更別(区)",1,0,0,0,0,0},
    q{01639,"08915","0891562","ホッカイドウ","カサイグンサラベツムラ","サラベツ(ヒガシク)","北海道","河西郡更別村","更別(東区)",1,0,0,0,0,0},
    q{08220,"305  ","3050804","イバラキケン","ツクバシ","アサヒ(1)","茨城県","つくば市","旭(1)",1,0,0,0,0,0},
    q{08220,"30026","3002632","イバラキケン","ツクバシ","アサヒ(ソノタ)","茨城県","つくば市","旭(その他)",1,0,0,0,0,0},
    q{08220,"305  ","3050801","イバラキケン","ツクバシ","オオホ(1-1)","茨城県","つくば市","大穂(1−1)",1,0,0,0,0,0},
    q{08220,"305  ","3050802","イバラキケン","ツクバシ","タチハラ(1、2、3)","茨城県","つくば市","立原(1、2、3)",1,0,0,0,0,0},
    q{09407,"32503","3250304","トチギケン","ナスグンナスマチ","タカクコウ(2888、5256-6140、6328、6437)","栃木県","那須郡那須町","高久甲(2888、5256〜6140、6328、6437)",1,0,0,0,0,0},
    q{10425,"37714","3771405","グンマケン","アガツマグンツマゴイムラ","カンバラ(モロシコ<アサマエン>)","群馬県","吾妻郡嬬恋村","鎌原(モロシコ「浅間園」)",1,0,0,0,0,0},
    q{10425,"37715","3771528","グンマケン","アガツマグンツマゴイムラ","ホシマタ(アガツマコウザン、マンザオンセン)","群馬県","吾妻郡嬬恋村","干俣(吾妻鉱山、万座温泉)",1,0,0,0,0,0},
    q{10429,"37033","3703321","グンマケン","アガツマグンヒガシアガツママチ","イズミサワ(エボシ(ハルナコハン)、エボシコクユウリン77リンハン)","群馬県","吾妻郡東吾妻町","泉沢(烏帽子「榛名湖畔」、烏帽子国有林77林班)",1,0,0,0,0,0},
    q{13104,"169  ","1690052","トウキョウト","シンジュクク","トヤマ(3チョウメ18・21バン)","東京都","新宿区","戸山(3丁目18・21番)",1,0,1,0,0,0},
    q{13123,"134  ","1340015","トウキョウト","エドガワク","ニシミズエ(4チョウメ1-2バン・10-27バン、5チョウメ)","東京都","江戸川区","西瑞江(4丁目1〜2番・10〜27番、5丁目)",1,0,1,0,0,0},
    q{27142,"59001","5900105","オオサカフ","サカイシナカク","タケシロダイ(1チョウ1-18・13-5-7・9)","大阪府","堺市中区","竹城台(1丁1−18・13−5〜7・9)",0,0,1,1,0,0}
;

run '中嶋', 'ナカジマ', '1', ['1-97〜116'], ['1-97-116'];
run '唐桑町西舞根', 'カラクワチョウニシモウネ', '1', ['200番以上'], ['200バンイジョウ'];
run '牧', 'マキ', '3', ['1〜3丁目', '白滝B・C', '高見'], ['1-3チョウメ', 'シラタキB・C', 'タカミ'];
run '東郷町山陰戊', 'トウゴウチョウヤマゲボ', '1', ['513の1以内'], ['513ノ1イナイ'];
run '岡之原町', 'オカノハラチョウ', '1', ['832の2・4'], ['832ノ2・4'];
run '高岡町上倉永', 'タカオカチョウカミクラナガ', '2', ['1206〜1268番地', '内の八重'], ['1206-1268バンチ', 'ウチノヤエ'];
run '士幌', 'シホロ', '1', ['南一区18号〜21号南'], ['ミナミイック18ゴウ-21ゴウ'];
run '上更別', 'カミサラベツ', '1', ['1区'], ['1ク'];
run '更別', 'サラベツ', '1', ['区'], ['ク'];
run '更別', 'サラベツ', '1', ['東区'], ['ヒガシク'];
run '旭', 'アサヒ', '1', ['1'], ['1'];
run '旭', 'アサヒ', '0', [], [];
run '大穂', 'オオホ', '1', ['1-1'], ['1-1'];
run '立原', 'タチハラ', '3', ['1', '2', '3'], ['1', '2', '3'];
run '高久甲', 'タカクコウ', '4', ['2888', '5256〜6140', '6328', '6437'], ['2888', '5256-6140', '6328', '6437'];
run '鎌原', 'カンバラ', '1', ['モロシコ「浅間園」'], ['モロシコ<アサマエン>'];
run '干俣', 'ホシマタ', '2', ['吾妻鉱山', '万座温泉'], ['アガツマコウザン', 'マンザオンセン'];
run '泉沢', 'イズミサワ', '2', ['烏帽子「榛名湖畔」', '烏帽子国有林77林班'], ['エボシ(ハルナコハン)', 'エボシコクユウリン77リンハン'];
run '戸山', 'トヤマ', '1', ['3丁目18・21番'], ['3チョウメ18・21バン'];
run '西瑞江', 'ニシミズエ', '2', ['4丁目1〜2番・10〜27番', '5丁目'], ['4チョウメ1-2バン・10-27バン', '5チョウメ'];
run '竹城台', 'タケシロダイ', '1', ['1丁1-18・13-5〜7・9'], ['1チョウ1-18・13-5-7・9'];



sub run {
    my @args = @_;
    my $row = $parser->fetch_obj;
    is($row->town, $args[0]);
    is($row->town_kana, $args[1]);
    if ($args[2]) {
        is(scalar(@{ $row->subtown }), $args[2]);
        for my $i (0..($args[2] - 1)){
            is($row->subtown->[$i], $args[3]->[$i]);
            is($row->subtown_kana->[$i], $args[4]->[$i]);
        }
    } else {
        is($row->subtown, undef);
    }
};

done_testing;