Files
pinyin-pro/test/dist.test.js

392 lines
17 KiB
JavaScript

const { pinyin, customPinyin } = require('../dist/index');
const expect = require('chai').expect;
describe('aggregate', () => {
it('test1', () => {
const result = pinyin('汉语拼音', { pattern: 'num', toneType: 'num' });
expect(result).to.be.equal('4 3 1 1');
});
it('test2', () => {
const result = pinyin('汉语拼音', {
pattern: 'num',
toneType: 'num',
type: 'array',
});
expect(result).to.deep.equal(['4', '3', '1', '1']);
});
it('test3', () => {
const result = pinyin('汉语拼音', { pattern: 'num', toneType: 'none' });
expect(result).to.be.equal('4 3 1 1');
});
it('test4', () => {
const result = pinyin('汉语拼音', {
pattern: 'num',
toneType: 'none',
type: 'array',
});
expect(result).to.deep.equal(['4', '3', '1', '1']);
});
it('test5', () => {
const result = pinyin('汉语拼音', { pattern: 'initial', toneType: 'num' });
expect(result).to.be.equal('h y p y');
});
it('test6', () => {
const result = pinyin('汉语拼音', {
pattern: 'initial',
toneType: 'num',
type: 'array',
});
expect(result).to.deep.equal(['h', 'y', 'p', 'y']);
});
it('test7', () => {
const result = pinyin('汉语拼音', { pattern: 'final', toneType: 'num' });
expect(result).to.be.equal('an4 u3 in1 in1');
});
it('test8', () => {
const result = pinyin('汉语拼音', {
pattern: 'final',
toneType: 'num',
type: 'array',
});
expect(result).to.deep.equal(['an4', 'u3', 'in1', 'in1']);
});
it('test9', () => {
const result = pinyin('好', {
pattern: 'final',
toneType: 'num',
multiple: true,
});
expect(result).to.be.equal('ao3 ao4');
});
it('test10', () => {
const result = pinyin('好', {
pattern: 'final',
toneType: 'num',
multiple: true,
type: 'array',
});
expect(result).to.deep.equal(['ao3', 'ao4']);
});
});
describe('boundary', () => {
it('test1', () => {
const result = pinyin('汉语拼音');
expect(result).to.be.equal('hàn yǔ pīn yīn');
});
it('test2', () => {
const result = pinyin('汉语拼音xxx.,');
expect(result).to.be.equal('hàn yǔ pīn yīn xxx.,');
});
it('test3', () => {
const result = pinyin('汉语拼音', { type: 'array' });
expect(result).to.deep.equal(['hàn', 'yǔ', 'pīn', 'yīn']);
});
it('test4', () => {
const result = pinyin('汉语拼音xxx.,', { type: 'array' });
expect(result).to.deep.equal(['hàn', 'yǔ', 'pīn', 'yīn', 'xxx.,']);
});
it('test5', () => {
const result = pinyin('');
expect(result).to.be.equal('');
});
it('test6', () => {
const result = pinyin('', { type: 'array' });
expect(result).to.deep.equal([]);
});
it('test7', () => {
const result = pinyin('哈发生你看三零四');
expect(result).to.be.equal('hā fā shēng nǐ kàn sān líng sì');
});
it('test8', () => {
const result = pinyin('哈发生你看三零四', { type: 'array' });
expect(result).to.deep.equal([
'hā',
'fā',
'shēng',
'nǐ',
'kàn',
'sān',
'líng',
'sì',
]);
});
});
describe('multiple', () => {
it('word', () => {
const result = pinyin('汉语拼音', { multiple: true });
expect(result).to.be.equal('hàn yǔ pīn yīn');
});
it('single', () => {
const result = pinyin('好', { multiple: true });
expect(result).to.be.equal('hǎo hào');
});
it('word-array', () => {
const result = pinyin('汉语拼音', { multiple: true, type: 'array' });
expect(result).to.deep.equal(['hàn', 'yǔ', 'pīn', 'yīn']);
});
it('single-array', () => {
const result = pinyin('好', { multiple: true, type: 'array' });
expect(result).to.deep.equal(['hǎo', 'hào']);
});
it('none-find', () => {
const result = pinyin('a', { multiple: true, type: 'array' });
expect(result).to.deep.equal(['a']);
});
});
describe('pattern', () => {
it('num', () => {
const result = pinyin('汉语拼音', { pattern: 'num' });
expect(result).to.be.equal('4 3 1 1');
});
it('num-array', () => {
const result = pinyin('汉语拼音', { pattern: 'num', type: 'array' });
expect(result).to.deep.equal(['4', '3', '1', '1']);
});
it('final', () => {
const result = pinyin('汉语拼音', { pattern: 'final' });
expect(result).to.be.equal('àn ǔ īn īn');
});
it('final-array', () => {
const result = pinyin('汉语拼音', { pattern: 'final', type: 'array' });
expect(result).to.deep.equal(['àn', 'ǔ', 'īn', 'īn']);
});
it('initial', () => {
const result = pinyin('汉语拼音', { pattern: 'initial' });
expect(result).to.be.equal('h y p y');
});
it('initial-array', () => {
const result = pinyin('汉语拼音', { pattern: 'initial', type: 'array' });
expect(result).to.deep.equal(['h', 'y', 'p', 'y']);
});
});
describe('toneType', () => {
it('num', () => {
const result = pinyin('汉语拼音', { toneType: 'num' });
expect(result).to.be.equal('han4 yu3 pin1 yin1');
});
it('num-array', () => {
const result = pinyin('汉语拼音', { toneType: 'num', type: 'array' });
expect(result).to.deep.equal(['han4', 'yu3', 'pin1', 'yin1']);
});
it('none', () => {
const result = pinyin('汉语拼音', { toneType: 'none' });
expect(result).to.be.equal('han yu pin yin');
});
it('none-array', () => {
const result = pinyin('汉语拼音', { toneType: 'none', type: 'array' });
expect(result).to.deep.equal(['han', 'yu', 'pin', 'yin']);
});
it('symbol', () => {
const result = pinyin('汉语拼音', { toneType: 'symbol' });
expect(result).to.be.equal('hàn yǔ pīn yīn');
});
it('symbol-array', () => {
const result = pinyin('汉语拼音', { toneType: 'symbol', type: 'array' });
expect(result).to.deep.equal(['hàn', 'yǔ', 'pīn', 'yīn']);
});
});
describe('getPinyin', () => {
it('double symbol', () => {
const result = pinyin('aaaa');
expect(result).to.be.equal('aaaa');
});
it('length greater than 5', () => {
const result = pinyin('赵钱孙李吧你');
expect(result).to.be.equal('zhào qián sūn lǐ ba nǐ');
});
it('dict2', () => {
const result = pinyin('阿比让');
expect(result).to.be.equal('ā bǐ ràng');
});
});
describe('getNumOfTone', () => {
it('no tone', () => {
const result = pinyin('赵钱孙李吧你b', { pattern: 'num' });
expect(result).to.be.equal('4 2 1 3 0 3 ');
});
});
describe('surname', () => {
it('multiple surname1', () => {
const result = pinyin('万俟', { mode: 'surname' });
expect(result).to.be.equal('mò qí');
});
it('multiple surname2', () => {
const result = pinyin('我叫令狐冲', { mode: 'surname' });
expect(result).to.be.equal('wǒ jiào líng hú chōng');
});
});
describe('customConfig', () => {
it('custom none', () => {
customPinyin();
const result = pinyin('干一行行一行');
expect(result).to.be.equal('gān yī xíng xíng yī xíng');
});
it('custom1', () => {
customPinyin({
: 'nài',
});
const result = pinyin('我姓能');
expect(result).to.be.equal('wǒ xìng nài');
});
it('custom2', () => {
customPinyin({
好好: 'hào hǎo',
});
const result = pinyin('爱好好多');
expect(result).to.be.equal('ài hào hǎo duō');
});
it('custom3', () => {
customPinyin({
哈什玛: 'hà shén mǎ',
});
const result = pinyin('哈什玛');
expect(result).to.be.equal('hà shén mǎ');
});
it('custom4', () => {
customPinyin({
暴虎冯河: 'bào hǔ píng hé',
});
const result = pinyin('暴虎冯河');
expect(result).to.be.equal('bào hǔ píng hé');
});
it('custom>5', () => {
customPinyin({
干一行行一行: 'gàn yī háng xíng yī háng',
});
const result = pinyin('干一行行一行');
expect(result).to.be.equal('gàn yī háng xíng yī háng');
});
});
describe('pinyinFn', () => {
it('not string type', () => {
const result = pinyin(2222);
expect(result).to.be.equal(2222);
});
it('empty string', () => {
const resultStr = pinyin('');
const resultArr = pinyin('', { type: 'array' });
expect(resultStr).to.be.equal('');
expect(resultArr).to.deep.equal([]);
});
it('origin', () => {
const result = pinyin('赵钱孙李吧');
expect(result).to.be.equal('zhào qián sūn lǐ ba');
});
it('multiple', () => {
const result = pinyin('好', { multiple: true });
expect(result).to.be.equal('hǎo hào');
});
it('pattern', () => {
const resultNumStr = pinyin('赵钱孙李吧', { pattern: 'num' });
expect(resultNumStr).to.be.equal('4 2 1 3 0');
const resultNumArr = pinyin('赵钱孙李吧', {
pattern: 'num',
type: 'array',
});
expect(resultNumArr).to.deep.equal(['4', '2', '1', '3', '0']);
const resultInitial = pinyin('赵钱孙李吧', {
pattern: 'initial',
});
expect(resultInitial).to.be.equal('zh q s l b');
const resultFinal = pinyin('赵钱孙李吧', {
pattern: 'final',
});
expect(resultFinal).to.be.equal('ào ián ūn ǐ a');
const resultFirst = pinyin('赵钱孙李额', {
pattern: 'first',
});
expect(resultFirst).to.be.equal('z q s l é');
const resultFirst2 = pinyin('赵钱孙李额', {
pattern: 'first',
toneType: 'none',
});
expect(resultFirst2).to.be.equal('z q s l e');
});
it('toneType', () => {
const resultNone = pinyin('赵钱孙李吧', { toneType: 'none' });
expect(resultNone).to.be.equal('zhao qian sun li ba');
const resultNum = pinyin('赵钱孙李吧', { toneType: 'num' });
expect(resultNum).to.be.equal('zhao4 qian2 sun1 li3 ba0');
});
it('array', () => {
const result = pinyin('赵钱孙李吧', { type: 'array' });
expect(result).to.deep.equal(['zhào', 'qián', 'sūn', 'lǐ', 'ba']);
});
it('right_pinyin', () => {
const result = pinyin('手下败将');
expect(result).to.be.equal('shǒu xià bài jiàng');
});
it('left_pinyin', () => {
const result = pinyin('避难所');
expect(result).to.be.equal('bì nàn suǒ');
});
it('long_text', () => {
const result = pinyin(
`大海深处的一条美人鱼一直对大海之外的世界充满了好奇,她一直想要出去看看海之外的世界,她的父母兄弟姐妹们却告诉她海以外的世界非常险恶,人心非常险恶,如果人类发现她美人鱼的身份她就会陷入非常危险的境地,他们劝告她不要出去。她不相信,她觉得自己有能力保护好自己,等她玩一段时间她就回来,否则这始终会是她心里的一个遗憾,她不想在大海里局限的过完这一生。一天,她趁家里不注意偷偷溜上岸,幻化成人型,向离海越来越远的地方走去,美人鱼的美貌所到之处皆换来一阵惊叹,但她不知道的是她的身后一直跟着一个人,从她上岸的那刻开始。身后跟着的男人越来越接近她,在她毫无防备的情况下走向她,他打着想要跟她做朋友的名义与美人鱼交谈,美人鱼告诉他自己在家里是最小的所以自己叫小小,和家里闹了别扭就独自一人跑了出来,男人说:“我叫李浩博,你很有趣,我们可以做个朋友吗?”美人鱼心里非常高兴,没想到自己刚上岸这么快就有了朋友,单纯的美人鱼想也不想就答应了,天色渐晚,考虑到小小无处可去,李浩博问她是否愿意去自己家里先将就住着,小小想既然是朋友而且自己也没有去处就点了点头,等小小睡着后,李浩博走向一个偏僻的地方对着电话说了句又来了单生意,准备下,便挂了电话。第二天,李浩博问小小有没有工作,他可以给她介绍,小小好奇的问:“什么工作呀?”浩博对她说:“是可以让很多人知道你并且喜欢你的工作。”小小兴奋的答应了。吃过饭,浩博带她去了工作室签了协议,便将她交给了老师带她训练,每天唱歌,舞蹈的练习从未停止,虽然辛苦但为了让更多人认识她,她从不抱怨,浩博也每天忙完自己的事后就会来接她回家,会问她累不累,会给她做饭,一年之后她出道了,浩博帮她接了很多电视剧,电影,广告代言,小小的名气越来越大,粉丝越来越多,小小非常开心,浩博也一直担任着她的经纪人,慢慢的她越来越喜欢现在的生活,她甚至快忘了自己是条美人鱼,她觉得自己和其他人没有任何不同,也忘了要回到海里和海里的父母兄弟姐妹。她对浩博非常信任,他让自己做什么小小就会去做什么。虽然是一个新人,但她单纯,善良,娱乐圈里很多人都喜欢她,她的朋友也从开始的只有浩博变得越来越多,但她发现她对浩博却不再像是开始的朋友的情感,她好喜欢他,浩博对她也一直很好,小小觉得他应该也是喜欢自己的,她喝醉后他会照顾她,拍完戏累到不行的时候他会背她回家,她每天过的充实而又快乐,她好喜欢现在的生活,她希望一直像现在一样。每次接受采访,问到她与浩博是不是有不一样的关系,是不是已经在一起了,她总是笑笑,浩博跟她说对外必须说自己单身不然会影响她的发展,虽然她不在乎这些但是是浩博说的她只好答应,她觉得浩博这样做是为了保护她,十年过去,她已不再是当初刚出道的新人,手上的资源也越来越少,她想要安稳,想要浩博一直陪着她,可浩博和她在一起的时间越来越少,她对自己认为浩博也喜欢自己的想法动摇了,她问了好几次浩博喜不喜欢自己,他总是沉默或者找其他话题回避了这个问题,她想起之前一位前辈对她说的“期待所带来的满足感,最美好的,不是别人满足了自己的期待,而是我们满足了别人的期待。”“现在的我应该满足了他的期待了吧,我成为了他当初想让我成为的那种人,有了名气,可以给他带来财富,我不哭不闹,所有事情都听从他的安排,顺从他的心意,在他心里自己还有什么不好呢?”小小看着浩博想着。她觉得好累,每天不停的工作,完成他给她的每个任务,她想让自己好好休息一段时间,多一些和他相处的时间,她跟浩博说自己想休息一段时间,浩博想了想同意了,第二天她便宣布了自己将暂时退出娱乐圈,浩博送她回了家,他对她说明天带她去个地方就走了,她不知道他要带她去哪,但她相信他,她不知道他是什么时候回来的,他叫醒她的时候已经是第二天早晨了,一如既往地,他们一起吃过早餐,她跟在他身后来到一个从未来过的地方,这个地方好冷,他们一起走进去,她想要拉浩博,但他却突然跑开了,她愣在原地。一个铁制的笼子从天而降困住了她,她呆呆的望着浩博那张冷漠的脸,“我以为自己满足了你的期待,我以为我在你心里是不同的,我以为你起码对我是有一点喜欢的,我以为我们会一直在一起,我以为你会一直对我好的,原来,一切都只是我以为。为什么这么对我?”他冷冷地说:“因为你已经没有价值了,从一开始接近你就是为了利用你,就是为了让你给我赚钱,如果不是因为你对我来说是一笔巨大的财富,我怎么可能会去讨好你,说到底还是你太天真了,我说什么你都信。”小小现在才明白当初父母不让她上岸说的话,“你一开始就知道我的身份是不是?”“对,从你上岸的那一刻我就知道了,现在是你最后能发挥的价值了,也不枉我对你费心了这么多年。”“原来十几年的陪伴我在你眼里终究抵不过钱。”看着浩博决绝的转身离开的那刻小小哭的撕心裂肺,她后悔自己当初不管不顾的上岸了。她不知道自己要被带去哪,只从那些人的话语中知道他们要用自己做实验,研究东西。被运送去另一个地方的路上她被救了,是她的哥哥们将那些人打晕将她带回海里,看着哥哥们身上的血她好恨浩博,更恨自己,海里等着她的是父母兄弟姐妹,她才明白会一直在自己身后的只有家人,她发誓再不上岸,此后再不见人类。海底深处才是她的家,这些人鱼和每一条鱼才是她该依赖信任的,原来它们在这里,它们一直都在这里守着她。`
);
expect(result).to.be.equal(result);
});
});