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

# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl 2.t'

#########################

# change 'tests => 1' to 'tests => last_test_to_print';

#use Test::More tests => 4;
use Test::More 'no_plan';
#BEGIN { use_ok('Lingua::SA') };

#########################
use Lingua::SA qw(vibhakti sandhi);
test_tRtIyA_ekavachana_puM_vibhakti();
test_tRtIyA_ekavachana_strI_vibhakti();
test_tRtIyA_ekavachana_napuMsaka_vibhakti();
test_tRtIyA_dvivachana_puM_vibhakti();
test_tRtIyA_dvivachana_strI_vibhakti();
test_tRtIyA_dvivachana_napuMsaka_vibhakti();
test_tRtIyA_bahuvachana_puM_vibhakti();
test_tRtIyA_bahuvachana_strI_vibhakti();
test_tRtIyA_bahuvachana_napuMsaka_vibhakti();
#########################
sub test_tRtIyA_ekavachana_puM_vibhakti{
# ekavachana, puMlinga
my %tRtIyA_ekavachana_puM_vibhakti_of = (
	'nara'		=>	'nareNa',
	'kavi'		=>	'kavinA',
	'shatru'	=>	'shatruNA',
	'dhAtR'		=>	'dhAtrA',
	'nRpa'		=>	'nRpeNa',
	);

for my $word (keys %tRtIyA_ekavachana_puM_vibhakti_of){
    my $expected = sandhi($tRtIyA_ekavachana_puM_vibhakti_of{$word});
    my $computed =
sandhi(vibhakti({ naam=>$word, vibhakti=>'tRtIyaa', linga=>'puM', vachana=>'ekavachana'}));

    is( $computed, $expected, $expected );
	}

for my $word (keys %tRtIyA_ekavachana_puM_vibhakti_of){
    my $expected = sandhi($tRtIyA_ekavachana_puM_vibhakti_of{$word});
    my $computed =
sandhi(vibhakti({ naam=>$word, vibhakti=>'tRtiiyA', linga=>'puM', vachana=>'ekavachana'}));

    is( $computed, $expected, $expected );
	}

for my $word (keys %tRtIyA_ekavachana_puM_vibhakti_of){
    my $expected = sandhi($tRtIyA_ekavachana_puM_vibhakti_of{$word});
    my $computed =
sandhi(vibhakti({ naam=>$word, vibhakti=>'tRtiiyaa', linga=>'puM', vachana=>'ekavachana'}));

    is( $computed, $expected, $expected );
	}

for my $word (keys %tRtIyA_ekavachana_puM_vibhakti_of){
    my $expected = sandhi($tRtIyA_ekavachana_puM_vibhakti_of{$word});
    my $computed =
sandhi(vibhakti({ naam=>$word, vibhakti=>'tRtIyA', linga=>'puM', vachana=>'ekavachana'}));

    is( $computed, $expected, $expected );
	}
}
#########################
sub test_tRtIyA_ekavachana_strI_vibhakti{
# ekavachana, strIlinga
my %tRtIyA_ekavachana_strI_vibhakti_of = (
	'bAlA'		=>	'bAlayA',
	'mati'		=>	'matyA',
	'nadI'		=>	'nadyA',
	'dhenu'		=>	'dhenvA',
	'vadhU'		=>	'vadhvA',
	'mAtR'		=>	'mAtrA',
	);

for my $word (keys %tRtIyA_ekavachana_strI_vibhakti_of){
    my $expected = sandhi($tRtIyA_ekavachana_strI_vibhakti_of{$word});
    my $computed = sandhi(vibhakti({ naam=>$word, vibhakti=>'tRtIyA', linga=>'strI', vachana=>'ekavachana'}));

    is( $computed, $expected, $expected );
	}
}
#########################
sub test_tRtIyA_ekavachana_napuMsaka_vibhakti{
# ekavachana, napuMsakalinga
my %tRtIyA_ekavachana_napuMsaka_vibhakti_of = (
	'vana'		=>	'vanena',
	'vAri'		=>	'vAriNA',
	'madhu'		=>	'madhunA',
	'kartR'		=>	'kartrA | kartRNA',
	'Chatra'	=>	'ChatreNa',
	);

for my $word (keys %tRtIyA_ekavachana_napuMsaka_vibhakti_of){
    my $expected = sandhi($tRtIyA_ekavachana_napuMsaka_vibhakti_of{$word});
    my $computed =
sandhi(vibhakti({ naam=>$word, vibhakti=>'tRtIyA', linga=>'napuMsaka', vachana=>'ekavachana'}));

    is( $computed, $expected, $expected );
	}
}
#############################
sub test_tRtIyA_dvivachana_puM_vibhakti{
# dvivachana, puMlinga
my %tRtIyA_dvivachana_puM_vibhakti_of = (
	'nara'		=>	'narAbhyAm',
	'kavi'		=>	'kavibhyAm',
	'shatru'	=>	'shatrubhyAm',
	'dhAtR'		=>	'dhAtRbhyAm',
	);

for my $word (keys %tRtIyA_dvivachana_puM_vibhakti_of){
    my $expected = sandhi($tRtIyA_dvivachana_puM_vibhakti_of{$word});
    my $computed =
sandhi(vibhakti({ naam=>$word, vibhakti=>'tRtIyA', linga=>'puM',
vachana=>'dvivachana'}));

    is( $computed, $expected, $expected );
	}
}
#########################
sub test_tRtIyA_dvivachana_strI_vibhakti{
# dvivachana, strIlinga
my %tRtIyA_dvivachana_strI_vibhakti_of = (
	'bAlA'		=>	'bAlAbhyAm',
	'mati'		=>	'matibhyAm',
	'nadI'		=>	'nadIbhyAm',
	'dhenu'		=>	'dhenubhyAm',
	'vadhU'		=>	'vadhUbhyAm',
	'mAtR'		=>	'mAtRbhyAm',
	);

for my $word (keys %tRtIyA_dvivachana_strI_vibhakti_of){
    my $expected = sandhi($tRtIyA_dvivachana_strI_vibhakti_of{$word});
    my $computed = sandhi(vibhakti({ naam=>$word, vibhakti=>'tRtIyA',
linga=>'strI', vachana=>'dvivachana'}));

    is( $computed, $expected, $expected );
	}
}
#########################
sub test_tRtIyA_dvivachana_napuMsaka_vibhakti{
# dvivachana, napuMsakalinga
my %tRtIyA_dvivachana_napuMsaka_vibhakti_of = (
	'vana'		=>	'vanAbhyAm',
	'vAri'		=>	'vAribhyAm',
	'madhu'		=>	'madhubhyAm',
	'kartR'		=>	'kartRbhyAm',
	);

for my $word (keys %tRtIyA_dvivachana_napuMsaka_vibhakti_of){
    my $expected = sandhi($tRtIyA_dvivachana_napuMsaka_vibhakti_of{$word});
    my $computed =
sandhi(vibhakti({ naam=>$word, vibhakti=>'tRtIyA', linga=>'napuMsaka',
vachana=>'dvivachana'}));

    is( $computed, $expected, $expected );
	}
}
#############################
sub test_tRtIyA_bahuvachana_puM_vibhakti{
# bahuvachana, puMlinga
my %tRtIyA_bahuvachana_puM_vibhakti_of = (
	'nara'		=>	'naraiH',
	'kavi'		=>	'kavibhiH',
	'shatru'	=>	'shatrubhiH',
	'dhAtR'		=>	'dhAtRbhiH',
	);

for my $word (keys %tRtIyA_bahuvachana_puM_vibhakti_of){
    my $expected = sandhi($tRtIyA_bahuvachana_puM_vibhakti_of{$word});
    my $computed =
sandhi(vibhakti({ naam=>$word, vibhakti=>'tRtIyA', linga=>'puM',
vachana=>'bahuvachana'}));

    is( $computed, $expected, $expected );
	}
}
#########################
sub test_tRtIyA_bahuvachana_strI_vibhakti{
# bahuvachana, strIlinga
my %tRtIyA_bahuvachana_strI_vibhakti_of = (
	'bAlA'		=>	'bAlAbhiH',
	'mati'		=>	'matibhiH',
	'nadI'		=>	'nadIbhiH',
	'dhenu'		=>	'dhenubhiH',
	'vadhU'		=>	'vadhUbhiH',
	'mAtR'		=>	'mAtRbhiH',
	);

for my $word (keys %tRtIyA_bahuvachana_strI_vibhakti_of){
    my $expected = sandhi($tRtIyA_bahuvachana_strI_vibhakti_of{$word});
    my $computed = sandhi(vibhakti({ naam=>$word, vibhakti=>'tRtIyA',
linga=>'strI', vachana=>'bahuvachana'}));

    is( $computed, $expected, $expected );
	}
}
#########################
sub test_tRtIyA_bahuvachana_napuMsaka_vibhakti{
# bahuvachana, napuMsakalinga
my %tRtIyA_bahuvachana_napuMsaka_vibhakti_of = (
	'vana'		=>	'vanaiH',
	'vAri'		=>	'vAribhiH',
	'madhu'		=>	'madhubhiH',
	'kartR'		=>	'kartRbhiH',
	);

for my $word (keys %tRtIyA_bahuvachana_napuMsaka_vibhakti_of){
    my $expected = sandhi($tRtIyA_bahuvachana_napuMsaka_vibhakti_of{$word});
    my $computed =
sandhi(vibhakti({ naam=>$word, vibhakti=>'tRtIyA', linga=>'napuMsaka',
vachana=>'bahuvachana'}));

    is( $computed, $expected, $expected );
	}
}
#############################