diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-04-11 14:24:03 -0400 | 
|---|---|---|
| committer | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-04-18 21:33:14 -0400 | 
| commit | 5f49f0fed25b421b0142b306a968f2cd435804e1 (patch) | |
| tree | f6d1a2875f902f07ce9810670725480b6ec305a4 | |
| parent | ac603d54a3a53bec2881199756f3dd6a1aa44057 (diff) | |
Add tests
| -rw-r--r-- | test/data/dictionaries/valid-dictionary1/image.gif | bin | 0 -> 45 bytes | |||
| -rw-r--r-- | test/data/dictionaries/valid-dictionary1/term_bank_1.json | 3 | ||||
| -rw-r--r-- | test/test-database.js | 52 | ||||
| -rw-r--r-- | test/yomichan-test.js | 15 | 
4 files changed, 62 insertions, 8 deletions
| diff --git a/test/data/dictionaries/valid-dictionary1/image.gif b/test/data/dictionaries/valid-dictionary1/image.gifBinary files differ new file mode 100644 index 00000000..f089d07c --- /dev/null +++ b/test/data/dictionaries/valid-dictionary1/image.gif diff --git a/test/data/dictionaries/valid-dictionary1/term_bank_1.json b/test/data/dictionaries/valid-dictionary1/term_bank_1.json index 755d9f6a..a62ad117 100644 --- a/test/data/dictionaries/valid-dictionary1/term_bank_1.json +++ b/test/data/dictionaries/valid-dictionary1/term_bank_1.json @@ -30,5 +30,6 @@      ["打ち込む", "ぶちこむ", "tag1 tag2", "v5", 29, ["definition1a (打ち込む, ぶちこむ)", "definition1b (打ち込む, ぶちこむ)"], 6, "tag3 tag4 tag5"],      ["打ち込む", "ぶちこむ", "tag1 tag2", "v5", 30, ["definition2a (打ち込む, ぶちこむ)", "definition2b (打ち込む, ぶちこむ)"], 6, "tag3 tag4 tag5"],      ["打ち込む", "ぶちこむ", "tag1 tag2", "v5", 31, ["definition3a (打ち込む, ぶちこむ)", "definition3b (打ち込む, ぶちこむ)"], 6, "tag3 tag4 tag5"], -    ["打ち込む", "ぶちこむ", "tag1 tag2", "v5", 32, ["definition4a (打ち込む, ぶちこむ)", "definition4b (打ち込む, ぶちこむ)"], 6, "tag3 tag4 tag5"] +    ["打ち込む", "ぶちこむ", "tag1 tag2", "v5", 32, ["definition4a (打ち込む, ぶちこむ)", "definition4b (打ち込む, ぶちこむ)"], 6, "tag3 tag4 tag5"], +    ["画像", "がぞう", "tag1 tag2", "", 33, ["definition1a (画像, がぞう)", {"type": "image", "path": "image.gif", "width": 350, "height": 350, "description": "An image", "pixelated": true}], 7, "tag3 tag4 tag5"]  ]
\ No newline at end of file diff --git a/test/test-database.js b/test/test-database.js index 8b7a163a..e9ec3f0b 100644 --- a/test/test-database.js +++ b/test/test-database.js @@ -92,9 +92,56 @@ class XMLHttpRequest {      }  } +class Image { +    constructor() { +        this._src = ''; +        this._loadCallbacks = []; +    } + +    get src() { +        return this._src; +    } + +    set src(value) { +        this._src = value; +        this._delayTriggerLoad(); +    } + +    get naturalWidth() { +        return 100; +    } + +    get naturalHeight() { +        return 100; +    } + +    addEventListener(eventName, callback) { +        if (eventName === 'load') { +            this._loadCallbacks.push(callback); +        } +    } + +    removeEventListener(eventName, callback) { +        if (eventName === 'load') { +            const index = this._loadCallbacks.indexOf(callback); +            if (index >= 0) { +                this._loadCallbacks.splice(index, 1); +            } +        } +    } + +    async _delayTriggerLoad() { +        await Promise.resolve(); +        for (const callback of this._loadCallbacks) { +            callback(); +        } +    } +} +  const vm = new VM({      chrome, +    Image,      XMLHttpRequest,      indexedDB: global.indexedDB,      IDBKeyRange: global.IDBKeyRange, @@ -106,6 +153,7 @@ vm.execute([      'bg/js/json-schema.js',      'bg/js/dictionary.js',      'mixed/js/core.js', +    'bg/js/media-utility.js',      'bg/js/request.js',      'bg/js/dictionary-importer.js',      'bg/js/database.js' @@ -235,8 +283,8 @@ async function testDatabase1() {              true          );          vm.assert.deepStrictEqual(counts, { -            counts: [{kanji: 2, kanjiMeta: 2, terms: 32, termMeta: 12, tagMeta: 14}], -            total: {kanji: 2, kanjiMeta: 2, terms: 32, termMeta: 12, tagMeta: 14} +            counts: [{kanji: 2, kanjiMeta: 2, terms: 33, termMeta: 12, tagMeta: 14}], +            total: {kanji: 2, kanjiMeta: 2, terms: 33, termMeta: 12, tagMeta: 14}          });          // Test find* functions diff --git a/test/yomichan-test.js b/test/yomichan-test.js index 3351ecdf..0b340abb 100644 --- a/test/yomichan-test.js +++ b/test/yomichan-test.js @@ -38,12 +38,17 @@ function createTestDictionaryArchive(dictionary, dictionaryName) {      const archive = new (getJSZip())();      for (const fileName of fileNames) { -        const source = fs.readFileSync(path.join(dictionaryDirectory, fileName), {encoding: 'utf8'}); -        const json = JSON.parse(source); -        if (fileName === 'index.json' && typeof dictionaryName === 'string') { -            json.title = dictionaryName; +        if (/\.json$/.test(fileName)) { +            const source = fs.readFileSync(path.join(dictionaryDirectory, fileName), {encoding: 'utf8'}); +            const json = JSON.parse(source); +            if (fileName === 'index.json' && typeof dictionaryName === 'string') { +                json.title = dictionaryName; +            } +            archive.file(fileName, JSON.stringify(json, null, 0)); +        } else { +            const source = fs.readFileSync(path.join(dictionaryDirectory, fileName), {encoding: null}); +            archive.file(fileName, source);          } -        archive.file(fileName, JSON.stringify(json, null, 0));      }      return archive; |