diff options
Diffstat (limited to 'benches/language-transformer.bench.js')
| -rw-r--r-- | benches/language-transformer.bench.js | 104 | 
1 files changed, 104 insertions, 0 deletions
| diff --git a/benches/language-transformer.bench.js b/benches/language-transformer.bench.js new file mode 100644 index 00000000..9d312fb7 --- /dev/null +++ b/benches/language-transformer.bench.js @@ -0,0 +1,104 @@ +/* + * 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 fs from 'fs'; +import {fileURLToPath} from 'node:url'; +import path from 'path'; +import {bench, describe} from 'vitest'; +import {parseJson} from '../dev/json.js'; +import {LanguageTransformer} from '../ext/js/language/language-transformer.js'; + +const dirname = path.dirname(fileURLToPath(import.meta.url)); + +/** @type {import('language-transformer').LanguageTransformDescriptor} */ +const descriptor = parseJson(fs.readFileSync(path.join(dirname, '..', 'ext', 'data/language/japanese-transforms.json'), {encoding: 'utf8'})); +const languageTransformer = new LanguageTransformer(); +languageTransformer.addDescriptor(descriptor); + +describe('Language transformer basic tests', () => { +    const adjectiveInflections = [ +        '愛しい', +        '愛しそう', +        '愛しすぎる', +        '愛しかったら', +        '愛しかったり', +        '愛しくて', +        '愛しく', +        '愛しくない', +        '愛しさ', +        '愛しかった', +        '愛しくありません', +        '愛しくありませんでした', +        '愛しき' +    ]; + +    const verbInflections = [ +        '食べる', +        '食べます', +        '食べた', +        '食べました', +        '食べて', +        '食べられる', +        '食べられる', +        '食べさせる', +        '食べさせられる', +        '食べろ', +        '食べない', +        '食べません', +        '食べなかった', +        '食べませんでした', +        '食べなくて', +        '食べられない', +        '食べられない', +        '食べさせない', +        '食べさせられない', +        '食べ', +        '食べれば', +        '食べちゃう', +        '食べちまう', +        '食べなさい', +        '食べそう', +        '食べすぎる', +        '食べたい', +        '食べたら', +        '食べたり', +        '食べず', +        '食べぬ', +        '食べ', +        '食べましょう', +        '食べよう', +        '食べとく', +        '食べている', +        '食べておる', +        '食べてる', +        '食べとる', +        '食べてしまう' +    ]; + +    const inflectionCombinations = [ +        '抱き抱えていなければ', +        '抱きかかえていなければ', +        '打ち込んでいませんでした', +        '食べさせられたくなかった' +    ]; + +    bench('transformations', () => { +        for (const transform of [...adjectiveInflections, ...verbInflections, ...inflectionCombinations]) { +            languageTransformer.transform(transform); +        } +    }); +}); |