pronounceability
Version:
Calculate pronounceability for a given word.
65 lines (54 loc) • 1.51 kB
text/typescript
import { Pronounceable } from '../src/index';
const pronounceable = new Pronounceable();
describe('Utilities', () => {
test('vowels', () => {
expect(pronounceable.hasVowels('Smart')).toBe(true);
});
test('clean', () => {
expect(pronounceable.clean('Sma-rt')).toBe('smart');
});
test('percent', () => {
expect(pronounceable.percent(10, 20)).toBe(50);
});
});
describe('Training', () => {
test('Tuples', () => {
const tuples = {
a: { r: 10 },
m: { a: 10 },
n: { o: 10 },
o: { n: 10, u: 10 },
p: { r: 10 },
r: { o: 10, t: 10 },
s: { m: 10 },
u: { n: 10 },
};
expect(pronounceable.trainTuples(['Smart', 'Pronoun'])).toStrictEqual(tuples);
});
test('Triples', () => {
const triples = {
a: { r: { t: 12.5 } },
m: { a: { r: 12.5 } },
n: { o: { u: 12.5 } },
o: { n: { o: 12.5 }, u: { n: 12.5 } },
p: { r: { o: 12.5 } },
r: { o: { n: 12.5 } },
s: { m: { a: 12.5 } },
};
expect(pronounceable.trainTriples(['Smart', 'Pronoun'])).toStrictEqual(triples);
});
});
describe('Score', () => {
test('with vowel', () => {
expect(pronounceable.score('Smart')).toBe(0.038513178036421514);
});
test('without vowel', () => {
expect(pronounceable.score('Phpht')).toBe(0);
});
test('single letter', () => {
expect(pronounceable.score('a')).toBe(1);
});
test('two letters', () => {
expect(pronounceable.score('in')).toBe(2.2900156132406293);
});
});