diff --git a/developer/js/tests/fixtures/example.qaa.sencoten/example.qaa.sencoten.model.kmp.json b/developer/js/tests/fixtures/example.qaa.sencoten/example.qaa.sencoten.model.kmp.json new file mode 100644 index 0000000000..f3cc40bd06 --- /dev/null +++ b/developer/js/tests/fixtures/example.qaa.sencoten/example.qaa.sencoten.model.kmp.json @@ -0,0 +1 @@ +{"system":{"keymanDeveloperVersion":"12.0.1500.0","fileVersion":"12.0"},"options":{"followKeyboardVersion":true},"info":{"author":{"description":"Eddie Antonio Santos","url":"mailto:Eddie.Santos@nrc-cnrc.gc.ca"},"copyright":{"description":"© 2019 National Research Council Canada"},"name":{"description":"SENĆOŦEN (Saanich Dialect) Lexical Model"},"version":{"description":"1.0.3"}},"files":[{"name":"..\\build\\example.qaa.sencoten.model.js","description":"Lexical model example.qaa.sencoten.model.js","copyLocation":"0","fileType":".model.js"}],"lexicalModels":[{"name":"SENĆOŦEN dictionary","id":"example.qaa.sencoten","version":"1.0.3","languages":[{"name":"North Straits Salish","id":"qaa"},{"name":"SENĆOŦEN","id":"qaa-Latn"}]}]} \ No newline at end of file diff --git a/developer/js/tests/fixtures/example.qaa.sencoten/example.qaa.sencoten.model.kps b/developer/js/tests/fixtures/example.qaa.sencoten/example.qaa.sencoten.model.kps new file mode 100644 index 0000000000..571e710c94 --- /dev/null +++ b/developer/js/tests/fixtures/example.qaa.sencoten/example.qaa.sencoten.model.kps @@ -0,0 +1,35 @@ + + + + 12.0.1500.0 + 12.0 + + + + + + SENĆOŦEN (Saanich Dialect) Lexical Model + © 2019 National Research Council Canada + Eddie Antonio Santos + 1.0.3 + + + + ..\build\example.qaa.sencoten.model.js + Lexical model example.qaa.sencoten.model.js + 0 + .model.js + + + + + SENĆOŦEN dictionary + example.qaa.sencoten + 1.0.3 + + North Straits Salish + SENĆOŦEN + + + + diff --git a/developer/js/tests/test-package-compiler.ts b/developer/js/tests/test-package-compiler.ts new file mode 100644 index 0000000000..898d9debaf --- /dev/null +++ b/developer/js/tests/test-package-compiler.ts @@ -0,0 +1,41 @@ +import 'mocha'; +import * as fs from 'fs'; +import {assert} from 'chai'; + +import KmpCompiler from '../dist/package-compiler/kmp-compiler'; +import {makePathToFixture} from './helpers'; + +describe('KmpCompiler', function () { + const MODELS = [ + 'example.qaa.sencoten', + ]; + + let kmpCompiler = new KmpCompiler(); + + for (let modelID of MODELS) { + let kpsPath = makePathToFixture(modelID, `${modelID}.model.kps`); + let kmpJsonPath = makePathToFixture(modelID, `${modelID}.model.kmp.json`); + let kmpJsonFixture = JSON.parse(fs.readFileSync(kmpJsonPath, 'utf-8')); + + // + // Test just the transform from kps to kmp.json + // + it(`should transform ${modelID}.model.kps to kmp.json`, function () { + let source = fs.readFileSync(kpsPath, 'utf-8'); + let kmpJson: KmpJsonFile; + + assert.doesNotThrow(() => { + kmpJson = kmpCompiler.transformKpsToKmpObject(source); + }); + + // Test that the kmp.json data is identical + assert.deepEqual(kmpJson, kmpJsonFixture); + + // This was used when building initial test data + //fs.writeFileSync(kmpJsonPath, JSON.stringify(kmpJson), 'utf-8'); + }); + + // TODO: end-to-end test to build .model.kmp file; however, this depends on building model and kmp.json first + //let kmpPath = makePathToFixture(modelID, `${modelID}.model.kmp`); + } +});