distark-render 1.0.6 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +158 -154
- package/dist/cli/animate.d.ts +8 -0
- package/dist/cli/animate.d.ts.map +1 -0
- package/dist/cli/animate.js +121 -0
- package/dist/cli/animate.js.map +1 -0
- package/dist/cli/diff.d.ts +8 -0
- package/dist/cli/diff.d.ts.map +1 -0
- package/dist/cli/diff.js +124 -0
- package/dist/cli/diff.js.map +1 -0
- package/dist/cli/distark-check.d.ts +13 -0
- package/dist/cli/distark-check.d.ts.map +1 -0
- package/dist/cli/distark-check.js +69 -0
- package/dist/cli/distark-check.js.map +1 -0
- package/dist/cli/query.d.ts +12 -0
- package/dist/cli/query.d.ts.map +1 -0
- package/dist/cli/query.js +64 -0
- package/dist/cli/query.js.map +1 -0
- package/dist/cli/record.d.ts +13 -0
- package/dist/cli/record.d.ts.map +1 -0
- package/dist/cli/record.js +97 -0
- package/dist/cli/record.js.map +1 -0
- package/dist/cli/render.d.ts +40 -0
- package/dist/cli/render.d.ts.map +1 -0
- package/dist/cli/render.js +75 -0
- package/dist/cli/render.js.map +1 -0
- package/dist/cli/shared.d.ts +6 -0
- package/dist/cli/shared.d.ts.map +1 -0
- package/dist/cli/shared.js +54 -0
- package/dist/cli/shared.js.map +1 -0
- package/dist/cli/test.d.ts +13 -0
- package/dist/cli/test.d.ts.map +1 -0
- package/dist/cli/test.js +130 -0
- package/dist/cli/test.js.map +1 -0
- package/dist/cli/verify.d.ts +21 -0
- package/dist/cli/verify.d.ts.map +1 -0
- package/dist/cli/verify.js +175 -0
- package/dist/cli/verify.js.map +1 -0
- package/dist/modules/adapters/p5Renderer.d.ts +0 -0
- package/dist/modules/adapters/p5Renderer.d.ts.map +0 -0
- package/dist/modules/adapters/p5Renderer.js +0 -0
- package/dist/modules/adapters/p5Renderer.js.map +0 -0
- package/dist/modules/adapters/skiaRenderer.d.ts +0 -0
- package/dist/modules/adapters/skiaRenderer.d.ts.map +0 -0
- package/dist/modules/adapters/skiaRenderer.js +0 -0
- package/dist/modules/adapters/skiaRenderer.js.map +0 -0
- package/dist/modules/animationDiff.d.ts +0 -0
- package/dist/modules/animationDiff.d.ts.map +0 -0
- package/dist/modules/animationDiff.js +0 -0
- package/dist/modules/animationDiff.js.map +0 -0
- package/dist/modules/eyeSystem.d.ts +0 -0
- package/dist/modules/eyeSystem.d.ts.map +0 -0
- package/dist/modules/eyeSystem.js +0 -0
- package/dist/modules/eyeSystem.js.map +0 -0
- package/dist/modules/imageLoad.d.ts +0 -0
- package/dist/modules/imageLoad.d.ts.map +0 -0
- package/dist/modules/imageLoad.js +0 -0
- package/dist/modules/imageLoad.js.map +0 -0
- package/dist/modules/mouthSystem.d.ts +0 -0
- package/dist/modules/mouthSystem.d.ts.map +0 -0
- package/dist/modules/mouthSystem.js +0 -0
- package/dist/modules/mouthSystem.js.map +0 -0
- package/dist/modules/renderRig.d.ts +0 -0
- package/dist/modules/renderRig.d.ts.map +0 -0
- package/dist/modules/renderRig.js +0 -0
- package/dist/modules/renderRig.js.map +0 -0
- package/dist/tests/test-animation-diff-rendering.d.ts +7 -0
- package/dist/tests/test-animation-diff-rendering.d.ts.map +1 -0
- package/dist/tests/test-animation-diff-rendering.js +444 -0
- package/dist/tests/test-animation-diff-rendering.js.map +1 -0
- package/dist/tests/test-animation-diff.d.ts +7 -0
- package/dist/tests/test-animation-diff.d.ts.map +1 -0
- package/dist/tests/test-animation-diff.js +488 -0
- package/dist/tests/test-animation-diff.js.map +1 -0
- package/dist/tests/test-cli.d.ts +8 -0
- package/dist/tests/test-cli.d.ts.map +1 -0
- package/dist/tests/test-cli.js +307 -0
- package/dist/tests/test-cli.js.map +1 -0
- package/dist/tests/test-joint-movement.d.ts +0 -0
- package/dist/tests/test-joint-movement.d.ts.map +0 -0
- package/dist/tests/test-joint-movement.js +0 -0
- package/dist/tests/test-joint-movement.js.map +0 -0
- package/dist/tests/test-skia.d.ts +0 -0
- package/dist/tests/test-skia.d.ts.map +0 -0
- package/dist/tests/test-skia.js +0 -0
- package/dist/tests/test-skia.js.map +0 -0
- package/dist/tests/test-visual-verification.d.ts +0 -0
- package/dist/tests/test-visual-verification.d.ts.map +0 -0
- package/dist/tests/test-visual-verification.js +0 -0
- package/dist/tests/test-visual-verification.js.map +0 -0
- package/dist/types.d.ts +0 -0
- package/dist/types.d.ts.map +0 -0
- package/dist/types.js +0 -0
- package/dist/types.js.map +0 -0
- package/package.json +9 -2
|
@@ -0,0 +1,488 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Animation Diff System Unit Tests
|
|
3
|
+
* Tests diff creation, application, and round-trip conversion
|
|
4
|
+
* No rendering required - pure data transformation tests
|
|
5
|
+
*/
|
|
6
|
+
import { createDiffBasedAnimation, expandDiffBasedAnimation, loadAnimation, validateDiffBasedAnimation, isDiffBasedFormat, calculateCompressionStats } from '../modules/animationDiff.js';
|
|
7
|
+
/**
|
|
8
|
+
* Deep equality check for objects
|
|
9
|
+
*/
|
|
10
|
+
function deepEqual(obj1, obj2) {
|
|
11
|
+
if (obj1 === obj2)
|
|
12
|
+
return true;
|
|
13
|
+
if (obj1 == null || obj2 == null)
|
|
14
|
+
return false;
|
|
15
|
+
if (typeof obj1 !== typeof obj2)
|
|
16
|
+
return false;
|
|
17
|
+
if (typeof obj1 === 'object') {
|
|
18
|
+
const keys1 = Object.keys(obj1).sort();
|
|
19
|
+
const keys2 = Object.keys(obj2).sort();
|
|
20
|
+
if (keys1.length !== keys2.length)
|
|
21
|
+
return false;
|
|
22
|
+
if (keys1.join(',') !== keys2.join(','))
|
|
23
|
+
return false;
|
|
24
|
+
return keys1.every(key => deepEqual(obj1[key], obj2[key]));
|
|
25
|
+
}
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Test 1: Basic Diff Creation and Application
|
|
30
|
+
*/
|
|
31
|
+
function testBasicDiffCreation() {
|
|
32
|
+
console.log('\n Test 1: Basic Diff Creation');
|
|
33
|
+
console.log(' ' + '-'.repeat(40));
|
|
34
|
+
// Create sample frames
|
|
35
|
+
const frames = [
|
|
36
|
+
// Frame 0: Base frame
|
|
37
|
+
{
|
|
38
|
+
rotationValues: { head: 0, leftArm: 0, rightArm: 0 },
|
|
39
|
+
selfRotationValues: { torso: 0 },
|
|
40
|
+
visibility: { head: true, torso: true }
|
|
41
|
+
},
|
|
42
|
+
// Frame 1: Only head rotates
|
|
43
|
+
{
|
|
44
|
+
rotationValues: { head: 0.5, leftArm: 0, rightArm: 0 },
|
|
45
|
+
selfRotationValues: { torso: 0 },
|
|
46
|
+
visibility: { head: true, torso: true }
|
|
47
|
+
},
|
|
48
|
+
// Frame 2: Head and arm rotate
|
|
49
|
+
{
|
|
50
|
+
rotationValues: { head: 1.0, leftArm: 0.3, rightArm: 0 },
|
|
51
|
+
selfRotationValues: { torso: 0 },
|
|
52
|
+
visibility: { head: true, torso: true }
|
|
53
|
+
}
|
|
54
|
+
];
|
|
55
|
+
// Create diff-based animation
|
|
56
|
+
const diffAnimation = createDiffBasedAnimation(frames);
|
|
57
|
+
// Verify diff format
|
|
58
|
+
console.log(' Base frame keys:', Object.keys(diffAnimation[0]));
|
|
59
|
+
console.log(' Diff 1 keys:', Object.keys(diffAnimation[1]));
|
|
60
|
+
console.log(' Diff 2 keys:', Object.keys(diffAnimation[2]));
|
|
61
|
+
// Diff 1 should only have rotationValues with changed head
|
|
62
|
+
const expectedDiff1 = {
|
|
63
|
+
rotationValues: { head: 0.5 }
|
|
64
|
+
};
|
|
65
|
+
const diff1Match = deepEqual(diffAnimation[1], expectedDiff1);
|
|
66
|
+
console.log(` Diff 1 correct: ${diff1Match ? '✅' : '❌'}`);
|
|
67
|
+
// Expand back to full frames
|
|
68
|
+
const expandedFrames = expandDiffBasedAnimation(diffAnimation);
|
|
69
|
+
// Verify round-trip
|
|
70
|
+
const roundTripMatch = deepEqual(frames, expandedFrames);
|
|
71
|
+
console.log(` Round-trip match: ${roundTripMatch ? '✅' : '❌'}`);
|
|
72
|
+
const passed = diff1Match && roundTripMatch;
|
|
73
|
+
console.log(` Result: ${passed ? '✅ PASS' : '❌ FAIL'}`);
|
|
74
|
+
return passed;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Test 2: Nested Object Diffs
|
|
78
|
+
*/
|
|
79
|
+
function testNestedObjectDiffs() {
|
|
80
|
+
console.log('\n Test 2: Nested Object Diffs');
|
|
81
|
+
console.log(' ' + '-'.repeat(40));
|
|
82
|
+
const frames = [
|
|
83
|
+
{
|
|
84
|
+
rotationValues: { head: 0, leftArm: 0, rightArm: 0 },
|
|
85
|
+
eyes: {
|
|
86
|
+
leftEyeXCoor: -10,
|
|
87
|
+
leftEyeYCoor: -5,
|
|
88
|
+
rightEyeXCoor: 10,
|
|
89
|
+
rightEyeYCoor: -5
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
rotationValues: { head: 0, leftArm: 0, rightArm: 0 },
|
|
94
|
+
eyes: {
|
|
95
|
+
leftEyeXCoor: -12, // Changed
|
|
96
|
+
leftEyeYCoor: -5,
|
|
97
|
+
rightEyeXCoor: 10,
|
|
98
|
+
rightEyeYCoor: -5
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
];
|
|
102
|
+
const diffAnimation = createDiffBasedAnimation(frames);
|
|
103
|
+
// Diff should only contain the changed eye property
|
|
104
|
+
const expectedDiff = {
|
|
105
|
+
eyes: { leftEyeXCoor: -12 }
|
|
106
|
+
};
|
|
107
|
+
const diffMatch = deepEqual(diffAnimation[1], expectedDiff);
|
|
108
|
+
console.log(' Diff contains only changed eye property:', diffMatch ? '✅' : '❌');
|
|
109
|
+
// Expand and verify
|
|
110
|
+
const expandedFrames = expandDiffBasedAnimation(diffAnimation);
|
|
111
|
+
const roundTripMatch = deepEqual(frames, expandedFrames);
|
|
112
|
+
console.log(' Round-trip match:', roundTripMatch ? '✅' : '❌');
|
|
113
|
+
const passed = diffMatch && roundTripMatch;
|
|
114
|
+
console.log(` Result: ${passed ? '✅ PASS' : '❌ FAIL'}`);
|
|
115
|
+
return passed;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Test 3: No Changes (Empty Diff)
|
|
119
|
+
*/
|
|
120
|
+
function testNoChanges() {
|
|
121
|
+
console.log('\n Test 3: No Changes (Empty Diff)');
|
|
122
|
+
console.log(' ' + '-'.repeat(40));
|
|
123
|
+
const frames = [
|
|
124
|
+
{ rotationValues: { head: 0 }, visibility: { head: true } },
|
|
125
|
+
{ rotationValues: { head: 0 }, visibility: { head: true } } // Identical
|
|
126
|
+
];
|
|
127
|
+
const diffAnimation = createDiffBasedAnimation(frames);
|
|
128
|
+
// Second frame should be empty object (no changes)
|
|
129
|
+
const isEmptyDiff = Object.keys(diffAnimation[1]).length === 0;
|
|
130
|
+
console.log(' Diff is empty object:', isEmptyDiff ? '✅' : '❌');
|
|
131
|
+
// Expand and verify
|
|
132
|
+
const expandedFrames = expandDiffBasedAnimation(diffAnimation);
|
|
133
|
+
const roundTripMatch = deepEqual(frames, expandedFrames);
|
|
134
|
+
console.log(' Round-trip match:', roundTripMatch ? '✅' : '❌');
|
|
135
|
+
const passed = isEmptyDiff && roundTripMatch;
|
|
136
|
+
console.log(` Result: ${passed ? '✅ PASS' : '❌ FAIL'}`);
|
|
137
|
+
return passed;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Test 4: Multiple Property Changes
|
|
141
|
+
*/
|
|
142
|
+
function testMultiplePropertyChanges() {
|
|
143
|
+
console.log('\n Test 4: Multiple Property Changes');
|
|
144
|
+
console.log(' ' + '-'.repeat(40));
|
|
145
|
+
const frames = [
|
|
146
|
+
{
|
|
147
|
+
rotationValues: { head: 0, leftArm: 0 },
|
|
148
|
+
selfRotationValues: { torso: 0 },
|
|
149
|
+
visibility: { head: true },
|
|
150
|
+
flipX: false
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
rotationValues: { head: 0.5, leftArm: 0.3 }, // Both changed
|
|
154
|
+
selfRotationValues: { torso: 0.1 }, // Changed
|
|
155
|
+
visibility: { head: true }, // No change
|
|
156
|
+
flipX: true // Changed
|
|
157
|
+
}
|
|
158
|
+
];
|
|
159
|
+
const diffAnimation = createDiffBasedAnimation(frames);
|
|
160
|
+
// Verify diff has all changed properties
|
|
161
|
+
const diff = diffAnimation[1];
|
|
162
|
+
const hasRotations = diff.rotationValues !== undefined;
|
|
163
|
+
const hasSelfRotations = diff.selfRotationValues !== undefined;
|
|
164
|
+
const hasFlipX = diff.flipX !== undefined;
|
|
165
|
+
const noVisibility = diff.visibility === undefined; // Should NOT be in diff (unchanged)
|
|
166
|
+
console.log(' Has rotationValues:', hasRotations ? '✅' : '❌');
|
|
167
|
+
console.log(' Has selfRotationValues:', hasSelfRotations ? '✅' : '❌');
|
|
168
|
+
console.log(' Has flipX:', hasFlipX ? '✅' : '❌');
|
|
169
|
+
console.log(' Visibility excluded (unchanged):', noVisibility ? '✅' : '❌');
|
|
170
|
+
// Expand and verify
|
|
171
|
+
const expandedFrames = expandDiffBasedAnimation(diffAnimation);
|
|
172
|
+
const roundTripMatch = deepEqual(frames, expandedFrames);
|
|
173
|
+
console.log(' Round-trip match:', roundTripMatch ? '✅' : '❌');
|
|
174
|
+
const passed = hasRotations && hasSelfRotations && hasFlipX && noVisibility && roundTripMatch;
|
|
175
|
+
console.log(` Result: ${passed ? '✅ PASS' : '❌ FAIL'}`);
|
|
176
|
+
return passed;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Test 5: Legacy Verbose Format Support
|
|
180
|
+
*/
|
|
181
|
+
function testLegacyVerboseFormat() {
|
|
182
|
+
console.log('\n Test 5: Legacy Verbose Format Support');
|
|
183
|
+
console.log(' ' + '-'.repeat(40));
|
|
184
|
+
const verboseFormat = {
|
|
185
|
+
version: '1.0',
|
|
186
|
+
baseFrame: { rotationValues: { head: 0 } },
|
|
187
|
+
diffs: [
|
|
188
|
+
null,
|
|
189
|
+
{ rotationValues: { head: 0.5 } },
|
|
190
|
+
{ rotationValues: { head: 1.0 } }
|
|
191
|
+
]
|
|
192
|
+
};
|
|
193
|
+
// Should be detected as diff format
|
|
194
|
+
const isDetected = isDiffBasedFormat(verboseFormat);
|
|
195
|
+
console.log(' Detected as diff format:', isDetected ? '✅' : '❌');
|
|
196
|
+
// Should validate
|
|
197
|
+
const isValid = validateDiffBasedAnimation(verboseFormat);
|
|
198
|
+
console.log(' Validates correctly:', isValid ? '✅' : '❌');
|
|
199
|
+
// Should expand correctly
|
|
200
|
+
const expanded = expandDiffBasedAnimation(verboseFormat);
|
|
201
|
+
const expectedFrames = [
|
|
202
|
+
{ rotationValues: { head: 0 } },
|
|
203
|
+
{ rotationValues: { head: 0.5 } },
|
|
204
|
+
{ rotationValues: { head: 1.0 } }
|
|
205
|
+
];
|
|
206
|
+
const expandsCorrectly = deepEqual(expanded, expectedFrames);
|
|
207
|
+
console.log(' Expands correctly:', expandsCorrectly ? '✅' : '❌');
|
|
208
|
+
const passed = isDetected && isValid && expandsCorrectly;
|
|
209
|
+
console.log(` Result: ${passed ? '✅ PASS' : '❌ FAIL'}`);
|
|
210
|
+
return passed;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Test 6: Compression Stats
|
|
214
|
+
*/
|
|
215
|
+
function testCompressionStats() {
|
|
216
|
+
console.log('\n Test 6: Compression Stats');
|
|
217
|
+
console.log(' ' + '-'.repeat(40));
|
|
218
|
+
const frames = [
|
|
219
|
+
{
|
|
220
|
+
rotationValues: { head: 0, leftArm: 0, rightArm: 0, leftLeg: 0, rightLeg: 0 },
|
|
221
|
+
selfRotationValues: { torso: 0, leftHand: 0, rightHand: 0 },
|
|
222
|
+
dimensionValues: { head: { width: 80, height: 80 }, torso: { width: 60, height: 120 } },
|
|
223
|
+
visibility: { head: true, torso: true }
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
rotationValues: { head: 0.1, leftArm: 0, rightArm: 0, leftLeg: 0, rightLeg: 0 }, // Only head changed
|
|
227
|
+
selfRotationValues: { torso: 0, leftHand: 0, rightHand: 0 },
|
|
228
|
+
dimensionValues: { head: { width: 80, height: 80 }, torso: { width: 60, height: 120 } },
|
|
229
|
+
visibility: { head: true, torso: true }
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
rotationValues: { head: 0.2, leftArm: 0, rightArm: 0, leftLeg: 0, rightLeg: 0 }, // Only head changed
|
|
233
|
+
selfRotationValues: { torso: 0, leftHand: 0, rightHand: 0 },
|
|
234
|
+
dimensionValues: { head: { width: 80, height: 80 }, torso: { width: 60, height: 120 } },
|
|
235
|
+
visibility: { head: true, torso: true }
|
|
236
|
+
}
|
|
237
|
+
];
|
|
238
|
+
const diffAnimation = createDiffBasedAnimation(frames);
|
|
239
|
+
const stats = calculateCompressionStats(frames, diffAnimation);
|
|
240
|
+
console.log(' Original size:', stats.originalSize, 'bytes');
|
|
241
|
+
console.log(' Compressed size:', stats.compressedSize, 'bytes');
|
|
242
|
+
console.log(' Saved:', stats.savedBytes, 'bytes');
|
|
243
|
+
console.log(' Compression ratio:', stats.compressionRatio);
|
|
244
|
+
// Should have significant compression since only one value changes per frame
|
|
245
|
+
const hasSavings = stats.savedBytes > 0;
|
|
246
|
+
const hasRatio = parseFloat(stats.compressionRatio) > 0;
|
|
247
|
+
console.log(' Has savings:', hasSavings ? '✅' : '❌');
|
|
248
|
+
console.log(' Has compression ratio:', hasRatio ? '✅' : '❌');
|
|
249
|
+
const passed = hasSavings && hasRatio;
|
|
250
|
+
console.log(` Result: ${passed ? '✅ PASS' : '❌ FAIL'}`);
|
|
251
|
+
return passed;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Test 7: Format Detection
|
|
255
|
+
*/
|
|
256
|
+
function testFormatDetection() {
|
|
257
|
+
console.log('\n Test 7: Format Detection');
|
|
258
|
+
console.log(' ' + '-'.repeat(40));
|
|
259
|
+
// Full-state format (should NOT be detected as diff)
|
|
260
|
+
const fullStateFormat = [
|
|
261
|
+
{ rotationValues: { head: 0 }, imagePaths: { head: 'abc' }, dimensionValues: { head: { width: 80, height: 80 } } },
|
|
262
|
+
{ rotationValues: { head: 0.5 }, imagePaths: { head: 'abc' }, dimensionValues: { head: { width: 80, height: 80 } } }
|
|
263
|
+
];
|
|
264
|
+
// Diff format (should be detected)
|
|
265
|
+
const diffFormat = [
|
|
266
|
+
{ rotationValues: { head: 0 }, imagePaths: { head: 'abc' }, dimensionValues: { head: { width: 80, height: 80 } } },
|
|
267
|
+
{ rotationValues: { head: 0.5 } } // Missing imagePaths and dimensionValues (diff!)
|
|
268
|
+
];
|
|
269
|
+
const fullStateDetected = !isDiffBasedFormat(fullStateFormat);
|
|
270
|
+
const diffDetected = isDiffBasedFormat(diffFormat);
|
|
271
|
+
console.log(' Full-state NOT detected as diff:', fullStateDetected ? '✅' : '❌');
|
|
272
|
+
console.log(' Diff format detected:', diffDetected ? '✅' : '❌');
|
|
273
|
+
const passed = fullStateDetected && diffDetected;
|
|
274
|
+
console.log(` Result: ${passed ? '✅ PASS' : '❌ FAIL'}`);
|
|
275
|
+
return passed;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Test 8: Load Animation (Smart Loader)
|
|
279
|
+
*/
|
|
280
|
+
function testLoadAnimation() {
|
|
281
|
+
console.log('\n Test 8: Load Animation (Smart Loader)');
|
|
282
|
+
console.log(' ' + '-'.repeat(40));
|
|
283
|
+
// Test with diff format
|
|
284
|
+
const diffFormat = [
|
|
285
|
+
{ rotationValues: { head: 0 }, imagePaths: { head: 'abc' } },
|
|
286
|
+
{ rotationValues: { head: 0.5 } }
|
|
287
|
+
];
|
|
288
|
+
const loadedDiff = loadAnimation(diffFormat);
|
|
289
|
+
const diffExpanded = loadedDiff.length === 2 && loadedDiff[1].imagePaths?.head === 'abc';
|
|
290
|
+
console.log(' Diff format loaded and expanded:', diffExpanded ? '✅' : '❌');
|
|
291
|
+
// Test with full-state format
|
|
292
|
+
const fullStateFormat = [
|
|
293
|
+
{ rotationValues: { head: 0 }, imagePaths: { head: 'abc' } },
|
|
294
|
+
{ rotationValues: { head: 0.5 }, imagePaths: { head: 'abc' } }
|
|
295
|
+
];
|
|
296
|
+
const loadedFull = loadAnimation(fullStateFormat);
|
|
297
|
+
const fullStatePassthrough = deepEqual(loadedFull, fullStateFormat);
|
|
298
|
+
console.log(' Full-state passed through:', fullStatePassthrough ? '✅' : '❌');
|
|
299
|
+
const passed = diffExpanded && fullStatePassthrough;
|
|
300
|
+
console.log(` Result: ${passed ? '✅ PASS' : '❌ FAIL'}`);
|
|
301
|
+
return passed;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Test 9: Complex Character Animation
|
|
305
|
+
*/
|
|
306
|
+
function testComplexCharacterAnimation() {
|
|
307
|
+
console.log('\n Test 9: Complex Character Animation');
|
|
308
|
+
console.log(' ' + '-'.repeat(40));
|
|
309
|
+
const frames = [
|
|
310
|
+
// Frame 0: T-pose
|
|
311
|
+
{
|
|
312
|
+
rotationValues: {
|
|
313
|
+
head: 0,
|
|
314
|
+
leftUpperArm: -Math.PI / 2,
|
|
315
|
+
rightUpperArm: -Math.PI / 2,
|
|
316
|
+
leftThigh: 0,
|
|
317
|
+
rightThigh: 0
|
|
318
|
+
},
|
|
319
|
+
eyes: {
|
|
320
|
+
leftIrisXCoor: 0,
|
|
321
|
+
leftIrisYCoor: 0,
|
|
322
|
+
rightIrisXCoor: 0,
|
|
323
|
+
rightIrisYCoor: 0
|
|
324
|
+
},
|
|
325
|
+
mouth: {
|
|
326
|
+
xCoor: 0,
|
|
327
|
+
yCoor: 0
|
|
328
|
+
}
|
|
329
|
+
},
|
|
330
|
+
// Frame 1: Head turns, eyes look left
|
|
331
|
+
{
|
|
332
|
+
rotationValues: {
|
|
333
|
+
head: 0.3, // Changed
|
|
334
|
+
leftUpperArm: -Math.PI / 2,
|
|
335
|
+
rightUpperArm: -Math.PI / 2,
|
|
336
|
+
leftThigh: 0,
|
|
337
|
+
rightThigh: 0
|
|
338
|
+
},
|
|
339
|
+
eyes: {
|
|
340
|
+
leftIrisXCoor: -5, // Changed
|
|
341
|
+
leftIrisYCoor: 0,
|
|
342
|
+
rightIrisXCoor: -5, // Changed
|
|
343
|
+
rightIrisYCoor: 0
|
|
344
|
+
},
|
|
345
|
+
mouth: {
|
|
346
|
+
xCoor: 0,
|
|
347
|
+
yCoor: 0
|
|
348
|
+
}
|
|
349
|
+
},
|
|
350
|
+
// Frame 2: Arms down, eyes center
|
|
351
|
+
{
|
|
352
|
+
rotationValues: {
|
|
353
|
+
head: 0.3,
|
|
354
|
+
leftUpperArm: 0, // Changed
|
|
355
|
+
rightUpperArm: 0, // Changed
|
|
356
|
+
leftThigh: 0,
|
|
357
|
+
rightThigh: 0
|
|
358
|
+
},
|
|
359
|
+
eyes: {
|
|
360
|
+
leftIrisXCoor: 0, // Changed
|
|
361
|
+
leftIrisYCoor: 0,
|
|
362
|
+
rightIrisXCoor: 0, // Changed
|
|
363
|
+
rightIrisYCoor: 0
|
|
364
|
+
},
|
|
365
|
+
mouth: {
|
|
366
|
+
xCoor: 0,
|
|
367
|
+
yCoor: 0
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
];
|
|
371
|
+
const diffAnimation = createDiffBasedAnimation(frames);
|
|
372
|
+
const expandedFrames = expandDiffBasedAnimation(diffAnimation);
|
|
373
|
+
// Verify each frame matches
|
|
374
|
+
let allMatch = true;
|
|
375
|
+
for (let i = 0; i < frames.length; i++) {
|
|
376
|
+
if (!deepEqual(frames[i], expandedFrames[i])) {
|
|
377
|
+
console.log(` Frame ${i} mismatch ❌`);
|
|
378
|
+
allMatch = false;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
console.log(' All frames match after round-trip:', allMatch ? '✅' : '❌');
|
|
382
|
+
// Check compression
|
|
383
|
+
const stats = calculateCompressionStats(frames, diffAnimation);
|
|
384
|
+
const hasCompression = stats.savedBytes > 0;
|
|
385
|
+
console.log(' Achieved compression:', hasCompression ? '✅' : '❌');
|
|
386
|
+
console.log(' Compression ratio:', stats.compressionRatio);
|
|
387
|
+
const passed = allMatch && hasCompression;
|
|
388
|
+
console.log(` Result: ${passed ? '✅ PASS' : '❌ FAIL'}`);
|
|
389
|
+
return passed;
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Test 10: Mouth Shape Animation
|
|
393
|
+
*/
|
|
394
|
+
function testMouthShapeAnimation() {
|
|
395
|
+
console.log('\n Test 10: Mouth Shape Animation');
|
|
396
|
+
console.log(' ' + '-'.repeat(40));
|
|
397
|
+
const frames = [
|
|
398
|
+
{
|
|
399
|
+
rotationValues: { head: 0 },
|
|
400
|
+
mouth: {
|
|
401
|
+
width: 60,
|
|
402
|
+
height: 40,
|
|
403
|
+
xCoor: 0,
|
|
404
|
+
yCoor: -50
|
|
405
|
+
}
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
rotationValues: { head: 0 },
|
|
409
|
+
mouth: {
|
|
410
|
+
width: 70, // Changed
|
|
411
|
+
height: 40,
|
|
412
|
+
xCoor: 0,
|
|
413
|
+
yCoor: -50
|
|
414
|
+
}
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
rotationValues: { head: 0 },
|
|
418
|
+
mouth: {
|
|
419
|
+
width: 70,
|
|
420
|
+
height: 50, // Changed
|
|
421
|
+
xCoor: 2, // Changed
|
|
422
|
+
yCoor: -50
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
];
|
|
426
|
+
const diffAnimation = createDiffBasedAnimation(frames);
|
|
427
|
+
// Diff 1 should only have mouth.width
|
|
428
|
+
const diff1HasOnlyWidth = !!(diffAnimation[1].mouth &&
|
|
429
|
+
Object.keys(diffAnimation[1].mouth).length === 1 &&
|
|
430
|
+
diffAnimation[1].mouth.width === 70);
|
|
431
|
+
console.log(' Diff 1 has only changed mouth property:', diff1HasOnlyWidth ? '✅' : '❌');
|
|
432
|
+
// Expand and verify
|
|
433
|
+
const expandedFrames = expandDiffBasedAnimation(diffAnimation);
|
|
434
|
+
const roundTripMatch = deepEqual(frames, expandedFrames);
|
|
435
|
+
console.log(' Round-trip match:', roundTripMatch ? '✅' : '❌');
|
|
436
|
+
const passed = diff1HasOnlyWidth && roundTripMatch;
|
|
437
|
+
console.log(` Result: ${passed ? '✅ PASS' : '❌ FAIL'}`);
|
|
438
|
+
return passed;
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Main test runner
|
|
442
|
+
*/
|
|
443
|
+
async function runAllTests() {
|
|
444
|
+
console.log('\n🧪 Animation Diff System Tests');
|
|
445
|
+
console.log('='.repeat(50));
|
|
446
|
+
const results = {
|
|
447
|
+
'Basic Diff Creation': testBasicDiffCreation(),
|
|
448
|
+
'Nested Object Diffs': testNestedObjectDiffs(),
|
|
449
|
+
'No Changes (Empty Diff)': testNoChanges(),
|
|
450
|
+
'Multiple Property Changes': testMultiplePropertyChanges(),
|
|
451
|
+
'Legacy Verbose Format': testLegacyVerboseFormat(),
|
|
452
|
+
'Compression Stats': testCompressionStats(),
|
|
453
|
+
'Format Detection': testFormatDetection(),
|
|
454
|
+
'Smart Loader': testLoadAnimation(),
|
|
455
|
+
'Complex Character Animation': testComplexCharacterAnimation(),
|
|
456
|
+
'Mouth Shape Animation': testMouthShapeAnimation()
|
|
457
|
+
};
|
|
458
|
+
// Summary
|
|
459
|
+
console.log('\n' + '='.repeat(50));
|
|
460
|
+
console.log('📊 Test Summary:');
|
|
461
|
+
const passed = Object.values(results).filter(r => r).length;
|
|
462
|
+
const total = Object.keys(results).length;
|
|
463
|
+
console.log(` ${passed}/${total} tests passed`);
|
|
464
|
+
Object.entries(results).forEach(([name, result]) => {
|
|
465
|
+
console.log(` ${result ? '✅' : '❌'} ${name}`);
|
|
466
|
+
});
|
|
467
|
+
const allPassed = passed === total;
|
|
468
|
+
if (allPassed) {
|
|
469
|
+
console.log('\n✅ All animation diff tests PASSED\n');
|
|
470
|
+
}
|
|
471
|
+
else {
|
|
472
|
+
console.log('\n❌ Some animation diff tests FAILED\n');
|
|
473
|
+
}
|
|
474
|
+
return allPassed;
|
|
475
|
+
}
|
|
476
|
+
// Run tests
|
|
477
|
+
async function main() {
|
|
478
|
+
try {
|
|
479
|
+
const success = await runAllTests();
|
|
480
|
+
process.exit(success ? 0 : 1);
|
|
481
|
+
}
|
|
482
|
+
catch (error) {
|
|
483
|
+
console.error('❌ Test failed with error:', error);
|
|
484
|
+
process.exit(1);
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
main();
|
|
488
|
+
//# sourceMappingURL=test-animation-diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-animation-diff.js","sourceRoot":"","sources":["../../tests/test-animation-diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-cli.d.ts","sourceRoot":"","sources":["../../tests/test-cli.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|