32 lines
1.6 KiB
JavaScript
32 lines
1.6 KiB
JavaScript
'use strict';
|
||
const assert = require('node:assert/strict');
|
||
const utils = require('../js/spine-utils');
|
||
const render = require('../js/spine-render');
|
||
|
||
assert.equal(utils.parseAtlasPma('page.png\nsize:1,1\npma:true\nregion\n'), true);
|
||
assert.equal(utils.parseAtlasPma('page.png\r\n pma : false \r\nregion\r\n'), false);
|
||
assert.equal(utils.parseAtlasPma('page.png\nsize:1,1\nregion\n'), undefined);
|
||
assert.equal(utils.parseAtlasPma('page.png\npma:trueish\n'), undefined);
|
||
|
||
const first = { name: 'first' }, namedDefault = { name: 'default' }, explicit = { name: 'custom' };
|
||
assert.equal(utils.preferredSkin({ defaultSkin: explicit, skins: [first, namedDefault] }), explicit);
|
||
assert.equal(utils.preferredSkin({ skins: [first, namedDefault] }), namedDefault);
|
||
assert.equal(utils.preferredSkin({ skins: [first] }), first);
|
||
assert.equal(utils.preferredSkin({ skins: [] }), null);
|
||
|
||
for (const version of ['3.4', '3.5', '3.6', '3.7', '3.8', '4.0', '4.1', '4.2', '4.3']) {
|
||
const spine = render.loadRuntime(version);
|
||
const skin = new spine.Skin('visible');
|
||
const data = new spine.SkeletonData();
|
||
data.bones.push(new spine.BoneData(0, 'root', null));
|
||
data.slots.push(new spine.SlotData(0, 'slot', data.bones[0]));
|
||
data.skins.push(skin);
|
||
if ('defaultSkin' in data) data.defaultSkin = skin;
|
||
const skeleton = new spine.Skeleton(data);
|
||
assert.equal(utils.preferredSkin(data), skin, version + ' preferred skin');
|
||
assert(utils.applySkin(skeleton, skin), version + ' apply skin');
|
||
assert.equal(skeleton.skin, skin, version + ' active skin');
|
||
}
|
||
|
||
console.log('PASS: Atlas PMA detection and default/first skin selection across Spine 3.4–4.3');
|