tests for voice
All checks were successful
NPM Audit Check / Check NPM audit (push) Successful in -1m32s

This commit is contained in:
2025-08-24 15:11:11 -05:00
parent 7f45387dac
commit 6ab158cee0
7 changed files with 1655 additions and 8 deletions

116
test/voice.test.ts Normal file
View File

@@ -0,0 +1,116 @@
import { assert, describe, expect, it } from 'vitest'
import { voiceLines, LINES } from '../src/voice.js';
import type { Voice } from '../src/voice.js';
const dummyVoice: Voice = {
'directory': '',
'extension': ''
};
describe('voiceLines', () => {
it('handles integers', () => {
expect(voiceLines(dummyVoice, 16549872)).to.include.ordered.members(
[
LINES.SIX, LINES.TEEN, LINES.MILLION, LINES.FIVE, LINES.HUNDRED, LINES.FORTY,
LINES.NINE, LINES.THOUSAND, LINES.EIGHT, LINES.HUNDRED, LINES.SEVENTY, LINES.TWO
]
);
});
it('handles floating point', () => {
expect(voiceLines(dummyVoice, 672.09435)).to.include.ordered.members(
[
LINES.SIX, LINES.HUNDRED, LINES.SEVENTY, LINES.TWO, LINES.POINT, LINES.ZERO,
LINES.NINE, LINES.FOUR, LINES.THREE, LINES.FIVE
]
);
});
it('handles the negative', () => {
expect(voiceLines(dummyVoice, -672.09435)).to.include.ordered.members(
[
LINES.NEGATIVE, LINES.SIX, LINES.HUNDRED, LINES.SEVENTY, LINES.TWO, LINES.POINT, LINES.ZERO,
LINES.NINE, LINES.FOUR, LINES.THREE, LINES.FIVE
]
);
});
it('handles zero', () => {
expect(voiceLines(dummyVoice, 0)).to.include.ordered.members(
[
LINES.ZERO
]
);
});
it('handles large numbers with many zeroes', () => {
expect(voiceLines(dummyVoice, 700000000000001)).to.include.ordered.members(
[
LINES.SEVEN, LINES.HUNDRED, LINES.TRILLION, LINES.ONE
]
);
expect(voiceLines(dummyVoice, 1000001)).to.include.ordered.members(
[
LINES.ONE, LINES.MILLION, LINES.ONE
]
);
expect(voiceLines(dummyVoice, 9000000001000)).to.include.ordered.members(
[
LINES.NINE, LINES.TRILLION, LINES.ONE, LINES.THOUSAND
]
);
expect(voiceLines(dummyVoice, 60002000000000.12)).to.include.ordered.members(
[
LINES.SIXTY, LINES.TRILLION, LINES.TWO, LINES.BILLION, LINES.POINT, LINES.ONE, LINES.TWO
]
);
expect(voiceLines(dummyVoice, 100010001)).to.include.ordered.members(
[
LINES.ONE, LINES.HUNDRED, LINES.MILLION, LINES.TEN, LINES.THOUSAND, LINES.ONE
]
);
});
it('handles irregularly named numbers', () => {
expect(voiceLines(dummyVoice, 210)).to.include.ordered.members(
[
LINES.TWO, LINES.HUNDRED, LINES.TEN
]
);
expect(voiceLines(dummyVoice, 311)).to.include.ordered.members(
[
LINES.THREE, LINES.HUNDRED, LINES.ELEVEN
]
);
expect(voiceLines(dummyVoice, 412)).to.include.ordered.members(
[
LINES.FOUR, LINES.HUNDRED, LINES.TWELVE
]
);
expect(voiceLines(dummyVoice, 513)).to.include.ordered.members(
[
LINES.FIVE, LINES.HUNDRED, LINES.THIRTEEN
]
);
expect(voiceLines(dummyVoice, 615)).to.include.ordered.members(
[
LINES.SIX, LINES.HUNDRED, LINES.FIFTEEN
]
);
});
it('returns empty array if value is unsupported', () => {
expect(voiceLines(dummyVoice, Infinity)).length.to.be.empty;
expect(voiceLines(dummyVoice, -Infinity)).length.to.be.empty;
expect(voiceLines(dummyVoice, NaN)).length.to.be.empty;
expect(voiceLines(dummyVoice, 1e21)).length.to.be.empty;
});
});