-
Notifications
You must be signed in to change notification settings - Fork 0
/
singlish.test.js
83 lines (77 loc) · 4.69 KB
/
singlish.test.js
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import { getPossibleMatches, isSinglishQuery } from './singlish.js'
describe('Singlish Query', () => {
test('nirvana is a singlish query', () => {
expect(isSinglishQuery('nirvana')).toBe(true);
expect(isSinglishQuery('නිර්වාන')).toBe(false);
expect(isSinglishQuery('නිර්වානnir')).toBe(true);
});
})
describe('get matches', () => {
const expectedMatches = [
'ණිර්වණ', 'නිර්වණ', 'ණිර්වාණ',
'නිර්වාණ', 'ණිර්වන', 'නිර්වන',
'ණිර්වාන', 'නිර්වාන', 'ණිර්වණා',
'නිර්වණා', 'ණිර්වාණා', 'නිර්වාණා',
'ණිර්වනා', 'නිර්වනා', 'ණිර්වානා',
'නිර්වානා'].sort() // sort in case out of order
const matches = getPossibleMatches('nirvana')
test('nirvana', () => {
expect(matches.sort()).toEqual(expectedMatches);
});
test('expected', () => {
expect(matches.includes('නිර්වාන') && matches.includes('නිර්වාණ')).toBe(true)
})
})
describe('length check', () => {
const test1 = 'ආනන්ද මෛත්රී හිමියන් ගේ ගන්දබ්බ්'
test('1', () => {
expect(getPossibleMatches(test1)).toEqual([test1])
})
const test2 = 'ආනන්ද මෛත්රී hiමි'
test('2', () => {
expect(getPossibleMatches(test2)).toEqual(['ආනන්ද මෛත්රී හිමි'])
})
})
describe('explosion check', () => {
const matches = getPossibleMatches('janadhipathi')
test('expected', () => {
expect(matches.includes('ජනාධිපති')).toBe(true)
})
test('length', () => {
expect(matches.length < 500)
})
const matches2 = getPossibleMatches('janadhipathivaranaya') //this still has more than 4000 results
test('expected', () => {
expect(matches2.includes('ජනාධිපතිවරණය')).toBe(true)
})
})
describe('rakar check', () => {
const matches = getPossibleMatches('shasthraya')
test('expected', () => {
expect(matches.includes('ශාස්ත්රය')).toBe(true)
})
})
describe('yansa check', () => {
const matches = getPossibleMatches('sankhyava')
const expectedMatches = [
'සඞ්ඛ්යව', 'සාඞ්ඛ්යව', 'සංඛ්යව', 'සාංඛ්යව', 'සණ්ඛ්යව',
'සාණ්ඛ්යව', 'සන්ඛ්යව', 'සාන්ඛ්යව', 'සඞ්ඛ්යාව', 'සාඞ්ඛ්යාව',
'සංඛ්යාව', 'සාංඛ්යාව', 'සණ්ඛ්යාව', 'සාණ්ඛ්යාව', 'සන්ඛ්යාව',
'සාන්ඛ්යාව', 'සඞ්ඛ්යවා', 'සාඞ්ඛ්යවා', 'සංඛ්යවා', 'සාංඛ්යවා',
'සණ්ඛ්යවා', 'සාණ්ඛ්යවා', 'සන්ඛ්යවා', 'සාන්ඛ්යවා', 'සඞ්ඛ්යාවා',
'සාඞ්ඛ්යාවා', 'සංඛ්යාවා', 'සාංඛ්යාවා', 'සණ්ඛ්යාවා', 'සාණ්ඛ්යාවා',
'සන්ඛ්යාවා', 'සාන්ඛ්යාවා', 'සඞ්ඛ්යව', 'සාඞ්ඛ්යව', 'සංඛ්යව',
'සාංඛ්යව', 'සණ්ඛ්යව', 'සාණ්ඛ්යව', 'සන්ඛ්යව', 'සාන්ඛ්යව',
'සඞ්ඛ්යාව', 'සාඞ්ඛ්යාව', 'සංඛ්යාව', 'සාංඛ්යාව', 'සණ්ඛ්යාව',
'සාණ්ඛ්යාව', 'සන්ඛ්යාව', 'සාන්ඛ්යාව', 'සඞ්ඛ්යවා', 'සාඞ්ඛ්යවා',
'සංඛ්යවා', 'සාංඛ්යවා', 'සණ්ඛ්යවා', 'සාණ්ඛ්යවා', 'සන්ඛ්යවා',
'සාන්ඛ්යවා', 'සඞ්ඛ්යාවා', 'සාඞ්ඛ්යාවා', 'සංඛ්යාවා', 'සාංඛ්යාවා',
'සණ්ඛ්යාවා', 'සාණ්ඛ්යාවා', 'සන්ඛ්යාවා', 'සාන්ඛ්යාවා'
].sort()
test('sankhyava', () => {
expect(matches.sort()).toEqual(expectedMatches);
});
test('expected', () => {
expect(matches.includes('සංඛ්යාව')).toBe(true)
})
})