/* * Copyright (C) 2023-2024 Yomitan Authors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. */ import {bench, describe} from 'vitest'; import {japaneseTransforms} from '../ext/js/language/ja/japanese-transforms.js'; import {LanguageTransformer} from '../ext/js/language/language-transformer.js'; const languageTransformer = new LanguageTransformer(); languageTransformer.addDescriptor(japaneseTransforms); describe('language transformer', () => { describe('basic tests', () => { const adjectiveInflections = [ '愛しい', '愛しそう', '愛しすぎる', '愛しかったら', '愛しかったり', '愛しくて', '愛しく', '愛しくない', '愛しさ', '愛しかった', '愛しくありません', '愛しくありませんでした', '愛しき' ]; const verbInflections = [ '食べる', '食べます', '食べた', '食べました', '食べて', '食べられる', '食べられる', '食べさせる', '食べさせられる', '食べろ', '食べない', '食べません', '食べなかった', '食べませんでした', '食べなくて', '食べられない', '食べられない', '食べさせない', '食べさせられない', '食べ', '食べれば', '食べちゃう', '食べちまう', '食べなさい', '食べそう', '食べすぎる', '食べたい', '食べたら', '食べたり', '食べず', '食べぬ', '食べ', '食べましょう', '食べよう', '食べとく', '食べている', '食べておる', '食べてる', '食べとる', '食べてしまう' ]; const inflectionCombinations = [ '抱き抱えていなければ', '抱きかかえていなければ', '打ち込んでいませんでした', '食べさせられたくなかった' ]; const kuruInflections = [ 'くる', 'きます', 'きた', 'きました', 'きて', 'こられる', 'こられる', 'こさせる', 'こさせられる', 'こい', 'こない', 'きません', 'こなかった', 'きませんでした', 'こなくて', 'こられない', 'こられない', 'こさせない', 'こさせられない', 'くるな', 'きまして', 'くれば', 'きちゃう', 'きちまう', 'きなさい', 'きそう', 'きすぎる', 'きたい', 'きたら', 'きたり', 'こず', 'こぬ', 'こざる', 'こねば', 'き', 'きましょう', 'こよう', 'きとく', 'きている', 'きておる', 'きてる', 'きとる', 'きてしまう' ]; const suruInflections = [ 'する', 'します', 'した', 'しました', 'して', 'できる', '出来る', 'せられる', 'される', 'させる', 'せさせる', 'させられる', 'せさせられる', 'しろ', 'しない', 'しません', 'しなかった', 'しませんでした', 'しなくて', 'せられない', 'されない', 'させない', 'せさせない', 'させられない', 'せさせられない', 'するな', 'しまして', 'すれば', 'しちゃう', 'しちまう', 'しなさい', 'しそう', 'しすぎる', 'したい', 'したら', 'したり', 'せず', 'せぬ', 'せざる', 'せねば', 'しましょう', 'しよう', 'しとく', 'している', 'しておる', 'してる', 'しとる', 'してしまう' ]; const kansaibenInflections = [ 'よろしゅう', 'よろしゅうて', 'よろしゅうない', '買わへん', '買わへんかった', '買うて', '買うた', '買うたら' ]; const basicTransformations = [...adjectiveInflections, ...verbInflections, ...inflectionCombinations]; bench(`transformations (n=${basicTransformations.length})`, () => { for (const transform of basicTransformations) { languageTransformer.transform(transform); } }); const transformationsFull = [...basicTransformations, ...kuruInflections, ...suruInflections, ...kansaibenInflections]; bench(`transformations-full (n=${transformationsFull.length})`, () => { for (const transform of transformationsFull) { languageTransformer.transform(transform); } }); }); });