From 2b7ceff3e1faabe44b1f72886a0727650c6d93bd Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Mon, 7 Oct 2024 14:27:15 +0700 Subject: [PATCH] chore(developer): add baseline tests for bcp47 codes to kmc-package Relates-to: #12012 --- .../test/fixtures/bcp47/invalid_bcp47_1.kps | 27 ++++++++++++ .../kmc-package/test/fixtures/bcp47/test.kmx | Bin 0 -> 370 bytes .../test/fixtures/bcp47/valid_bcp47.kps | 39 ++++++++++++++++++ .../kmc-package/test/test-package-compiler.ts | 24 +++++++++++ 4 files changed, 90 insertions(+) create mode 100644 developer/src/kmc-package/test/fixtures/bcp47/invalid_bcp47_1.kps create mode 100644 developer/src/kmc-package/test/fixtures/bcp47/test.kmx create mode 100644 developer/src/kmc-package/test/fixtures/bcp47/valid_bcp47.kps diff --git a/developer/src/kmc-package/test/fixtures/bcp47/invalid_bcp47_1.kps b/developer/src/kmc-package/test/fixtures/bcp47/invalid_bcp47_1.kps new file mode 100644 index 00000000000..8a656e38baa --- /dev/null +++ b/developer/src/kmc-package/test/fixtures/bcp47/invalid_bcp47_1.kps @@ -0,0 +1,27 @@ + + + + 10.0.700.0 + 7.0 + + + 1.0 + valid_bcp47 + + + + test.kmx + + + + + Invalid BCP 47 + test + 1.0 + + Not a language tag + + + + + diff --git a/developer/src/kmc-package/test/fixtures/bcp47/test.kmx b/developer/src/kmc-package/test/fixtures/bcp47/test.kmx new file mode 100644 index 0000000000000000000000000000000000000000..9e4bd15d391dea7a1b7e234e8f4f9ee80541836b GIT binary patch literal 370 zcmZvYO$$Lm6o%is!p_3S)4l&6lDtbj2`G0q?@%bfVlSjM&#>Fd| literal 0 HcmV?d00001 diff --git a/developer/src/kmc-package/test/fixtures/bcp47/valid_bcp47.kps b/developer/src/kmc-package/test/fixtures/bcp47/valid_bcp47.kps new file mode 100644 index 00000000000..72461e04c28 --- /dev/null +++ b/developer/src/kmc-package/test/fixtures/bcp47/valid_bcp47.kps @@ -0,0 +1,39 @@ + + + + 10.0.700.0 + 7.0 + + + + + + + + + + + + 1.0 + valid_bcp47 + + + + test.kmx + + + + + Valid BCP 47 + test + 1.0 + + Central Khmer (Khmer, Cambodia) + SENCOTEN + Unregistered variant of Straits Salish + Private variant of "Old" Khmer + + + + + diff --git a/developer/src/kmc-package/test/test-package-compiler.ts b/developer/src/kmc-package/test/test-package-compiler.ts index 7952e2145a2..16c523bda9a 100644 --- a/developer/src/kmc-package/test/test-package-compiler.ts +++ b/developer/src/kmc-package/test/test-package-compiler.ts @@ -12,6 +12,7 @@ import { makePathToFixture } from './helpers/index.js'; import { KmpCompiler } from '../src/compiler/kmp-compiler.js'; import { PackageCompilerMessages } from '../src/compiler/package-compiler-messages.js'; +import { PackageValidation } from '../src/compiler/package-validation.js'; const debug = false; @@ -29,6 +30,13 @@ describe('KmpCompiler', function () { assert.isTrue(await kmpCompiler.init(callbacks, null)); }); + this.afterEach(function() { + if(this.currentTest?.isFailed()) { + callbacks.printMessages(); + } + callbacks.clear(); + }); + for (let modelID of MODELS) { const kpsPath = modelID.includes('withfolders') ? makePathToFixture(modelID, 'source', `${modelID}.model.kps`) : makePathToFixture(modelID, `${modelID}.model.kps`); @@ -284,4 +292,20 @@ describe('KmpCompiler', function () { assert.equal(kmpJson.keyboards[0].version, '4.0'); // picks up example.kmx's version }); + it(`should handle a range of valid BCP47 tags`, function () { + const inputFilename = makePathToFixture('bcp47', 'valid_bcp47.kps'); + const kmpJson = kmpCompiler.transformKpsToKmpObject(inputFilename); + assert.isNotNull(kmpJson); + const validation = new PackageValidation(callbacks, {}); + assert.isTrue(validation.validate(inputFilename, kmpJson)); + }); + + it(`should reject an invalid BCP47 tag`, function () { + const inputFilename = makePathToFixture('bcp47', 'invalid_bcp47_1.kps'); + const kmpJson = kmpCompiler.transformKpsToKmpObject(inputFilename); + assert.isNotNull(kmpJson); + const validation = new PackageValidation(callbacks, {}); + assert.isFalse(validation.validate(inputFilename, kmpJson)); + }); + });