mirror of
https://gitlab.com/walljm/dynamicbible.git
synced 2025-07-25 00:09:54 -04:00
Add some data integrity tests.
* Add new test suite test/data-quality-tests.js * Make ParseBook exported so I can use it to get data for each book This is suboptimal since really the data should be in a look up table somewhere but I don't want to tackle that in this change. * Actually load the json data for each book and test that number of chapters exists.
This commit is contained in:
parent
9125607faf
commit
95e424f69f
@ -18,7 +18,7 @@ define("reference",
|
||||
};
|
||||
|
||||
function parseReference(ref, r) {
|
||||
var rest = parseBook(ref, r.start, r);
|
||||
var rest = ParseBook(ref, r.start, r);
|
||||
rest = parseFirstNum(rest, r.start, r);
|
||||
rest = maybeParseSecondNum(rest, r.start, r);
|
||||
rest = maybeParseRangeSep(rest, r, r);
|
||||
@ -28,9 +28,10 @@ define("reference",
|
||||
return r;
|
||||
}
|
||||
|
||||
function parseBook(ref, data, errAcc) {
|
||||
function ParseBook(ref, data, errAcc) {
|
||||
ref = ref.toLowerCase().trim();
|
||||
var fbook = ref.substring(0, ref.search(/\w\s+\d/i)+1);
|
||||
if (!fbook) fbook = ref;
|
||||
var rest = ref.slice(ref.search(/\w\s+\d/i)+1);
|
||||
|
||||
if (fbook.search(/\b(genesis|gen|ge|gn)\b/i) != -1) {
|
||||
@ -438,7 +439,7 @@ define("reference",
|
||||
return rest;
|
||||
}
|
||||
|
||||
function parseFirstNum(ref, r, errAcc) {
|
||||
function parseFirstNum(ref, r, errAcr) {
|
||||
ref = ref.ltrim();
|
||||
var found = false;
|
||||
for (var i = 0; i <= ref.length; i++) {
|
||||
@ -498,7 +499,7 @@ define("reference",
|
||||
}
|
||||
|
||||
function maybeParseBook(ref, r, errAcc) {
|
||||
return maybeDo(ref, r, errAcc, parseBook);
|
||||
return maybeDo(ref, r, errAcc, ParseBook);
|
||||
}
|
||||
|
||||
function maybeParseSecondNum(ref, r, errAcc, skipColon) {
|
||||
@ -670,7 +671,8 @@ define("reference",
|
||||
};
|
||||
return {
|
||||
Parse: function(ref) {return new Reference(ref);},
|
||||
bookName: bookName
|
||||
ParseBook: ParseBook,
|
||||
BookName: bookName
|
||||
};
|
||||
}
|
||||
);
|
||||
|
@ -4,5 +4,5 @@
|
||||
"dependencies": {"requirejs": ">=2.1.9"},
|
||||
"scripts": {"test": "node test/all.js"},
|
||||
"files": ["./js"],
|
||||
"devDependencies": {"test": ">=0.0.5"}
|
||||
"devDependencies": {"test": ">=0.0.5", "cjson": ">=1.0.0"}
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
require('./ref-tests.js').init(exports);
|
||||
require('./data-quality-tests.js').init(exports);
|
||||
|
||||
if (module == require.main) require('test').run(exports);
|
||||
|
42
test/data-quality-tests.js
Normal file
42
test/data-quality-tests.js
Normal file
@ -0,0 +1,42 @@
|
||||
var requirejs = require('./require-injector').requirejs;
|
||||
|
||||
var cjson = require('cjson');
|
||||
|
||||
var loadBibleData = function(b, ch) {
|
||||
return cjson.load('bibles/kjv_strongs/' + b.book + '-' + ch + ".json");
|
||||
};
|
||||
|
||||
var init = function(exports) {
|
||||
exports['test data quality'] = function(assert, done) {
|
||||
requirejs(['reference'], function(r) {
|
||||
for (var i =1; i <= 66; i++) {
|
||||
var b = {sentinel: true};
|
||||
var err = {};
|
||||
var bName = r.BookName(i);
|
||||
r.ParseBook(bName, b, err);
|
||||
if (!b.book) {
|
||||
assert.error("Got undefined for book", bName);
|
||||
}
|
||||
if (err.err) {
|
||||
assert.error(err.err);
|
||||
continue;
|
||||
}
|
||||
for (var j = 1; j <= b.lastchapter; j++) {
|
||||
var ch = loadBibleData(b, j);
|
||||
if (!ch) {
|
||||
assert.err("Got undefined for " + bName + " chapter " + j);
|
||||
}
|
||||
assert.equal(ch.ch, j, bName + " chapter " + ch.ch + "==" + j);
|
||||
}
|
||||
}
|
||||
done();
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
module.exports = {init: init};
|
||||
|
||||
if (module == require.main) {
|
||||
init(exports);
|
||||
require('test').run(exports);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user