#!/usr/bin/env bun /** * Test script for JMdict-based English to Katakana conversion * Usage: bun run scripts/test-jmdict-conversion.ts */ import { convertEnglishToKatakanaWithJMdictFallback, convertEnglishWordsOnly, getTextConverterInfo, initializeTextConverter, } from "../services/text-converter.js"; async function testJMdictConversion() { console.log("🧪 JMdict English→Katakana変換テスト開始\n"); try { // Initialize the text converter console.log("📚 テキストコンバーターを初期化中..."); await initializeTextConverter(); // Get status information const info = getTextConverterInfo(); console.log("✅ 初期化完了:"); console.log(` - Kuroshiro: ${info.kuroshiro ? "✓" : "✗"}`); console.log(` - JMdict: ${info.jmdict ? "✓" : "✗"}`); if (info.jmdictInfo) { console.log(` - JMdict バージョン: ${info.jmdictInfo.version}`); console.log(` - 辞書日付: ${info.jmdictInfo.dictDate}`); } console.log(); // Test words const testWords = [ "hello world", "computer science", "artificial intelligence", "machine learning", "programming language", "JavaScript TypeScript", "database management", "software development", "This is a test of English to Katakana conversion using JMdict.", "Coffee shop restaurant hotel", "Business meeting presentation report", ]; console.log("🔄 変換テスト:"); console.log("━".repeat(80)); for (const testText of testWords) { console.log(`\n📝 入力: "${testText}"`); try { // Test JMdict-enhanced conversion const jmdictResult = await convertEnglishToKatakanaWithJMdictFallback(testText); console.log(`🎯 JMdict: "${jmdictResult}"`); // Test original conversion for comparison const originalResult = await convertEnglishWordsOnly(testText); console.log(`📖 従来版: "${originalResult}"`); // Show difference if any if (jmdictResult !== originalResult) { console.log("💡 JMdictによる改善が確認されました"); } } catch (error) { console.error(`❌ 変換エラー: ${error}`); } } console.log("\n━".repeat(80)); console.log("✅ テスト完了"); } catch (error) { console.error("❌ テスト失敗:", error); process.exit(1); } } // Run the test if (import.meta.main) { testJMdictConversion().catch(console.error); } export { testJMdictConversion };