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_sambodhan_ekavachana_puM_vibhakti();
test_sambodhan_ekavachana_strI_vibhakti();
test_sambodhan_ekavachana_napuMsaka_vibhakti();
test_sambodhan_dvivachana_puM_vibhakti();
test_sambodhan_dvivachana_strI_vibhakti();
test_sambodhan_dvivachana_napuMsaka_vibhakti();
test_sambodhan_bahuvachana_puM_vibhakti();
test_sambodhan_bahuvachana_strI_vibhakti();
test_sambodhan_bahuvachana_napuMsaka_vibhakti();
#########################
sub test_sambodhan_ekavachana_puM_vibhakti{
# ekavachana, puMlinga
my %sambodhan_ekavachana_puM_vibhakti_of = (
	'nara'		=>	'he nara',
	'kavi'		=>	'he kave',
	'shatru'	=>	'he shatro',
	'dhAtR'		=>	'he [ dhaataH | dhaatar ]',
	'nRpa'		=>	'he nRpa',
	);

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

    is( $computed, $expected, $expected );
	}
}
#########################
sub test_sambodhan_ekavachana_strI_vibhakti{
# ekavachana, strIlinga
my %sambodhan_ekavachana_strI_vibhakti_of = (
	'bAlA'		=>	'he bAle',
	'mati'		=>	'he mate',
	'nadI'	=>	'he nadi',
	'dhenu'		=>	'he dheno',
	'vadhU'		=>	'he vadhu',
	'mAtR'		=>	'he [ maataH | maatar ]',
	'akkaa'		=>	'he akka',
	'ambaa'		=>	'he amba',
	'allaa'		=>	'he alla',
	);

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

    is( $computed, $expected, $expected );
	}
}
#########################
sub test_sambodhan_ekavachana_napuMsaka_vibhakti{
# ekavachana, napuMsakalinga
my %sambodhan_ekavachana_napuMsaka_vibhakti_of = (
	'vana'		=>	'he vana',
	'vAri'		=>	'he [ vaari | vaare ]',
	'madhu'		=>	'he [ madho | madhu ]',
	'kartR'		=>	'he [ kartaH | kartR ]',
	'Chatra'	=>	'he Chatra',
	);

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

    is( $computed, $expected, $expected );
	}
}
#############################
#sub sandhi{
#my ($in)=@_;
#$in=~s/\s+\+\s+//;
#return $in;
#}
#########################
sub test_sambodhan_dvivachana_puM_vibhakti{
# dvivachana, puMlinga
my %sambodhan_dvivachana_puM_vibhakti_of = (
	'nara'		=>	'he narau',
	'kavi'		=>	'he kavI',
	'shatru'	=>	'he shatrU',
	'dhAtR'		=>	'he dhAtArau',
	);

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

    is( $computed, $expected, $expected );
	}
}
#########################
sub test_sambodhan_dvivachana_strI_vibhakti{
# dvivachana, strIlinga
my %sambodhan_dvivachana_strI_vibhakti_of = (
	'bAlA'		=>	'he bAle',
	'mati'		=>	'he matI',
	'nadI'		=>	'he nadyau',
	'dhenu'		=>	'he dhenU',
	'vadhU'		=>	'he vadhvau',
	'mAtR'		=>	'he mAtarau',
	);

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

    is( $computed, $expected, $expected );
	}
}
#########################
sub test_sambodhan_dvivachana_napuMsaka_vibhakti{
# dvivachana, napuMsakalinga
my %sambodhan_dvivachana_napuMsaka_vibhakti_of = (
	'vana'		=>	'he vane',
	'vAri'		=>	'he vAriNI',
	'madhu'		=>	'he madhunI',
	'kartR'		=>	'he kartRNI',
	);

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

    is( $computed, $expected, $expected );
	}
}
#############################
sub test_sambodhan_bahuvachana_puM_vibhakti{
# bahuvachana, puMlinga
my %sambodhan_bahuvachana_puM_vibhakti_of = (
	'nara'		=>	'he naraaH',
	'kavi'		=>	'he kavayaH',
	'shatru'	=>	'he shatravaH',
	'dhAtR'		=>	'he dhAtaaraH',
	);

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

    is( $computed, $expected, $expected );
	}
}
#########################
sub test_sambodhan_bahuvachana_strI_vibhakti{
# bahuvachana, strIlinga
my %sambodhan_bahuvachana_strI_vibhakti_of = (
	'bAlA'		=>	'he bAlaaH',
	'mati'		=>	'he matayaH',
	'nadI'		=>	'he nadyaH',
	'dhenu'		=>	'he dhenavaH',
	'vadhU'		=>	'he vadhvaH',
	'mAtR'		=>	'he mAtaraH',
	);

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

    is( $computed, $expected, $expected );
	}
}
#########################
sub test_sambodhan_bahuvachana_napuMsaka_vibhakti{
# bahuvachana, napuMsakalinga
my %sambodhan_bahuvachana_napuMsaka_vibhakti_of = (
	'vana'		=>	'he vanaani',
	'vAri'		=>	'he vArINi',
	'madhu'		=>	'he madhUni',
	'kartR'		=>	'he kartRRNi',
	);

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

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