diff --git a/tests/_preload/happy-dom.js b/tests/_preload/happy-dom.js index b1250ab..8831191 100644 --- a/tests/_preload/happy-dom.js +++ b/tests/_preload/happy-dom.js @@ -7,12 +7,16 @@ import { GlobalRegistrator } from '@happy-dom/global-registrator' * @returns {Promise} */ global.onLitecanvas = function (instance, event, callback) { - return new Promise((resolve) => { + return new Promise((resolve, reject) => { const removeListener = instance.listen(event, (...args) => { - const res = callback(...args) - if (false !== res) { - removeListener() - resolve() + try { + const res = callback(...args) + if (false !== res) { + removeListener() + resolve() + } + } catch (err) { + reject(err) } }) }) diff --git a/tests/pal.js b/tests/pal.js new file mode 100644 index 0000000..5830e80 --- /dev/null +++ b/tests/pal.js @@ -0,0 +1,44 @@ +import test from 'ava' +import litecanvas from '../src/index.js' +import { defaultPalette } from '../src/palette.js' +import * as sinon from 'sinon' + +let /** @type {LitecanvasInstance} */ + local, + /** @type {sinon.SinonSpiedInstance} */ + contextSpy + +test.before(() => { + sinon.stub(console) // silent console + + local = litecanvas({ + global: false, + }) + + contextSpy = sinon.spy(local.ctx()) +}) + +test.after(() => { + local.quit() +}) + +test('change the color palette', async (t) => { + await onLitecanvas(local, 'draw', () => { + const customPalette = ['#123', '#456'] + local.pal(customPalette) + + const colors = local.stat(5) + + t.is(colors[0], customPalette[0]) + }) +}) + +test('reset the color palette', async (t) => { + await onLitecanvas(local, 'draw', () => { + local.pal() + + const colors = local.stat(5) + + t.is(colors[0], defaultPalette[0]) + }) +})