~linuxgoose/linguistics-robin

ref: ee09466607e02c1dc37042cd7d8eb29bd904ef8e linguistics-robin/tests/test_corner_cases.py -rw-r--r-- 1.5 KiB
ee094666 — Jordan Robinson Merge pull request #18 from linuxgoose/1-add-nysiis-algorithm 8 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import pytest
from linguistics_robin import Soundex, RefinedSoundex, FuzzySoundex, NYSIIS
from linguistics_robin.exceptions import EmptyStringError

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('')