UNPKG

scripture-guide

Version:

A utility for biblical and scripture reference parsing that enables structured queries based on strings of traditional scripture references (e.g. John 3:16).

77 lines (65 loc) 2.73 kB
const testdata = require("./data/testdata"); const { lookupReference, setLanguage, generate, generateReference } = require("./scriptures"); const fs = require("fs"); fs.mkdirSync("./test_results", {recursive:true}); const timestamp = new Date().toISOString(); const filename = `./test_results/test_results.html`; fs.writeFileSync(filename, `<html> <head> <style> body {font-family: sans-serif;} .json-data {font-family: monospace; word-break: break-all; white-space: pre-wrap; width: 20vw;} table {border-collapse: collapse;} td {border: 1px solid black; padding: 5px;} </style> <body><table>`); const langs = Object.keys(testdata); const ref2idTest = ([input,expected,notes]) => { const {ref,verse_ids} = lookupReference(input); const {firstVerse,lastVerse,verseCount,cleanRef} = expected || {}; const {actualFirstVerse,actualLastVerse,actualVerseCount} = {actualFirstVerse:verse_ids[0],actualLastVerse:verse_ids[verse_ids.length-1],actualVerseCount:verse_ids.length}; let result = ""; if(firstVerse) result += actualFirstVerse===firstVerse ? "✅" : "❌"; if(lastVerse) result += actualLastVerse===lastVerse ? "✅" : "❌"; if(verseCount) result += actualVerseCount===verseCount ? "✅" : "❌"; if(cleanRef) result += ref===cleanRef ? "✅" : "❌"; //if(cleanRef) console.log({cleanRef,ref}); process.stdout.write(result+"•"); fs.appendFileSync(filename, `<tr> <td class="notes">${notes || ""}</td> <td class="result">${result}</td> <td class="input">${input}</td> <td class="ref">${ref}</td> <td class="json-data">${JSON.stringify({firstVerse:actualFirstVerse,lastVerse:actualLastVerse,verseCount:actualVerseCount}).replace(/"/g,"")}</td> </tr>`); } const id2refTest = ([input,expected,notes]) => { const reference = generateReference(input); let result = ""; if(expected) result += reference===expected ? "" : ""; process.stdout.write(result+""); fs.appendFileSync(filename, `<tr> <td class="notes">${notes || ""}</td> <td class="result">${result}</td> <td class="input">${input}</td> <td class="ref">${reference}</td> <td class="json-data"></td> </tr>`); } console.log(langs); for (let lang of langs) { setLanguage(null); if(lang!=="en") setLanguage(lang); const langdata = testdata[lang]; const {ref2id, id2ref, detectRef} = langdata; if(ref2id) { console.log(`\n\n[${lang}] Testing ref2id:`); ref2id.forEach(ref2idTest) } if(id2ref) { console.log(`\n\n[${lang}] Testing id2ref:`); id2ref.forEach(id2refTest) } } fs.appendFileSync(filename, `</table></body></html>`);