Add some basic invalid dictionaries to test

This commit is contained in:
toasted-nutbread 2020-02-22 13:38:03 -05:00
parent 77a3dadd0b
commit 12e0923b63
12 changed files with 95 additions and 0 deletions

View File

@ -0,0 +1,7 @@
{
"title": "Invalid Dictionary 1",
"format": 0,
"revision": "test",
"sequenced": true,
"description": "Invalid format number"
}

View File

@ -0,0 +1,7 @@
{
"title": "Invalid Dictionary 2",
"format": 3,
"revision": "test",
"sequenced": true,
"description": "Empty entry in kanji bank"
}

View File

@ -0,0 +1,3 @@
[
[]
]

View File

@ -0,0 +1,7 @@
{
"title": "Invalid Dictionary 3",
"format": 3,
"revision": "test",
"sequenced": true,
"description": "Invalid type entry in kanji meta bank"
}

View File

@ -0,0 +1,7 @@
{
"title": "Invalid Dictionary 4",
"format": 3,
"revision": "test",
"sequenced": true,
"description": "Invalid value as part of a tag bank entry"
}

View File

@ -0,0 +1,3 @@
[
[{"invalid": true}, "category1", 0, "tag1 notes", 0]
]

View File

@ -0,0 +1,7 @@
{
"title": "Invalid Dictionary 5",
"format": 3,
"revision": "test",
"sequenced": true,
"description": "Invalid type as part of a term bank entry"
}

View File

@ -0,0 +1,3 @@
[
["打", "だ", "tag1 tag2", "", 2, false, 1, "tag3 tag4 tag5"]
]

View File

@ -0,0 +1,7 @@
{
"title": "Invalid Dictionary 6",
"format": 3,
"revision": "test",
"sequenced": true,
"description": "Invalid root type for term meta bank"
}

View File

@ -0,0 +1 @@
false

View File

@ -849,6 +849,45 @@ async function testDatabase2() {
} }
async function testDatabase3() {
const invalidDictionaries = [
'invalid-dictionary1',
'invalid-dictionary2',
'invalid-dictionary3',
'invalid-dictionary4',
'invalid-dictionary5',
'invalid-dictionary6'
];
// Setup database
const database = new Database();
await database.prepare();
for (const invalidDictionary of invalidDictionaries) {
const testDictionary = yomichanTest.createTestDictionaryArchive(invalidDictionary);
const testDictionarySource = await testDictionary.generateAsync({type: 'string'});
let error = null;
try {
await database.importDictionary(testDictionarySource, () => {}, {});
} catch (e) {
error = e;
}
if (error === null) {
assert.ok(false, `Expected an error while importing ${invalidDictionary}`);
} else {
const prefix = 'Dictionary has invalid data';
const message = error.message;
assert.ok(typeof message, 'string');
assert.ok(message.startsWith(prefix), `Expected error message to start with '${prefix}': ${message}`);
}
}
await database.close();
}
async function main() { async function main() {
const clearTimeout = 5000; const clearTimeout = 5000;
try { try {
@ -857,6 +896,9 @@ async function main() {
await testDatabase2(); await testDatabase2();
await clearDatabase(clearTimeout); await clearDatabase(clearTimeout);
await testDatabase3();
await clearDatabase(clearTimeout);
} catch (e) { } catch (e) {
console.log(e); console.log(e);
process.exit(-1); process.exit(-1);