import pytest from linguistics_robin import Soundex, RefinedSoundex, FuzzySoundex, NYSIIS, \ Metaphone, DoubleMetaphone, Caverphone from linguistics_robin.exceptions import EmptyStringError def test_caverphone(): caverphone = Caverphone() assert caverphone.phonetics('maurice') == 'MRSA' assert caverphone.phonetics('bob') == 'PP' assert caverphone.phonetics('walter') == 'WTA' assert caverphone.phonetics('Maclaverty') == 'MKLFTA' with pytest.raises(EmptyStringError): caverphone.phonetics('') def test_doublemetaphone(): dm = DoubleMetaphone() assert dm.phonetics('maurice') == ('MRS', None) assert dm.phonetics('bob') == ('PP', None) assert dm.phonetics('walter') == ('ALTR', 'FLTR') with pytest.raises(EmptyStringError): dm.phonetics('') def test_metaphone(): metaphone = Metaphone() assert metaphone.phonetics('maurice') == 'MRS' assert metaphone.phonetics('bob') == 'BB' with pytest.raises(EmptyStringError): metaphone.phonetics('') def test_nysiis(): nysiis = NYSIIS() assert nysiis.phonetics('bob') == 'BAB' assert nysiis.phonetics('aa') == 'A' assert nysiis.phonetics('b') == 'B' assert nysiis.phonetics('cat') == 'CAT' assert nysiis.phonetics('s') == 'S' assert nysiis.phonetics('w') == 'W' with pytest.raises(EmptyStringError): nysiis.phonetics('') def test_soundex(): soundex = Soundex() assert soundex.phonetics('h') == 'H000' assert soundex.phonetics('hh') == 'H000' assert soundex.phonetics('hhh') == 'H000' assert soundex.phonetics('d') == 'D000' assert soundex.phonetics('dd') == 'D000' assert soundex.phonetics('ddd') == 'D000' assert soundex.phonetics('ddm') == 'D500' assert soundex.phonetics('ddmmmm') == 'D500' assert soundex.phonetics('Pffister') == 'P236' assert soundex.phonetics('Pfister') == 'P236' with pytest.raises(EmptyStringError): soundex.phonetics('') def test_refined_soundex(): soundex = RefinedSoundex() assert soundex.phonetics('h') == 'H' assert soundex.phonetics('d') == 'D6' with pytest.raises(EmptyStringError): soundex.phonetics('') def test_fuzzy_soundex(): soundex = FuzzySoundex() assert soundex.phonetics('Catharine') == 'K365' assert soundex.phonetics('Katharine') == 'K365' with pytest.raises(EmptyStringError): soundex.phonetics('')