mirror of
https://gitlab.com/walljm/dynamicbible.git
synced 2025-07-25 16:29:49 -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) {
|
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 = parseFirstNum(rest, r.start, r);
|
||||||
rest = maybeParseSecondNum(rest, r.start, r);
|
rest = maybeParseSecondNum(rest, r.start, r);
|
||||||
rest = maybeParseRangeSep(rest, r, r);
|
rest = maybeParseRangeSep(rest, r, r);
|
||||||
@ -28,9 +28,10 @@ define("reference",
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
function parseBook(ref, data, errAcc) {
|
function ParseBook(ref, data, errAcc) {
|
||||||
ref = ref.toLowerCase().trim();
|
ref = ref.toLowerCase().trim();
|
||||||
var fbook = ref.substring(0, ref.search(/\w\s+\d/i)+1);
|
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);
|
var rest = ref.slice(ref.search(/\w\s+\d/i)+1);
|
||||||
|
|
||||||
if (fbook.search(/\b(genesis|gen|ge|gn)\b/i) != -1) {
|
if (fbook.search(/\b(genesis|gen|ge|gn)\b/i) != -1) {
|
||||||
@ -438,7 +439,7 @@ define("reference",
|
|||||||
return rest;
|
return rest;
|
||||||
}
|
}
|
||||||
|
|
||||||
function parseFirstNum(ref, r, errAcc) {
|
function parseFirstNum(ref, r, errAcr) {
|
||||||
ref = ref.ltrim();
|
ref = ref.ltrim();
|
||||||
var found = false;
|
var found = false;
|
||||||
for (var i = 0; i <= ref.length; i++) {
|
for (var i = 0; i <= ref.length; i++) {
|
||||||
@ -498,7 +499,7 @@ define("reference",
|
|||||||
}
|
}
|
||||||
|
|
||||||
function maybeParseBook(ref, r, errAcc) {
|
function maybeParseBook(ref, r, errAcc) {
|
||||||
return maybeDo(ref, r, errAcc, parseBook);
|
return maybeDo(ref, r, errAcc, ParseBook);
|
||||||
}
|
}
|
||||||
|
|
||||||
function maybeParseSecondNum(ref, r, errAcc, skipColon) {
|
function maybeParseSecondNum(ref, r, errAcc, skipColon) {
|
||||||
@ -670,7 +671,8 @@ define("reference",
|
|||||||
};
|
};
|
||||||
return {
|
return {
|
||||||
Parse: function(ref) {return new Reference(ref);},
|
Parse: function(ref) {return new Reference(ref);},
|
||||||
bookName: bookName
|
ParseBook: ParseBook,
|
||||||
|
BookName: bookName
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -4,5 +4,5 @@
|
|||||||
"dependencies": {"requirejs": ">=2.1.9"},
|
"dependencies": {"requirejs": ">=2.1.9"},
|
||||||
"scripts": {"test": "node test/all.js"},
|
"scripts": {"test": "node test/all.js"},
|
||||||
"files": ["./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('./ref-tests.js').init(exports);
|
||||||
|
require('./data-quality-tests.js').init(exports);
|
||||||
|
|
||||||
if (module == require.main) require('test').run(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