forked from Kitware/vtk-js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
testSerialization.js
74 lines (61 loc) · 2.15 KB
/
testSerialization.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import test from 'tape-catch';
import vtk from 'vtk.js/Sources/vtk';
import macro from 'vtk.js/Sources/macro';
import vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';
import vtkPoints from 'vtk.js/Sources/Common/Core/Points';
import vtkLookupTable from 'vtk.js/Sources/Common/Core/LookupTable';
import vtkScalarsToColors from 'vtk.js/Sources/Common/Core/ScalarsToColors';
import vtkPolyData from 'vtk.js/Sources/Common/DataModel/PolyData';
const { vtkDebugMacro } = macro;
const classToTest = [
'vtkDataArray',
'vtkPoints',
'vtkLookupTable',
'vtkScalarsToColors',
'vtkPolyData',
];
const SERIALIZABLE_CLASSES = {
vtkDataArray: {
class: vtkDataArray,
data: { values: [1.1, 2.2, 3.3, 4.4, 5.5] },
},
vtkPoints: {
class: vtkPoints,
data: {
values: [0, 0, 0, 1, 0, 0, 0, 1, 0],
},
},
vtkLookupTable,
vtkScalarsToColors,
vtkPolyData: {
class: vtkPolyData,
data: {
points: { vtkClass: 'vtkPoints', values: [0, 0, 0, 1, 1, 1, 2, 2, 2], numberOfComponents: 3 },
polys: { vtkClass: 'vtkDataArray', values: [1, 0, 1, 2], dataType: 'Uint32Array' },
},
},
};
function ignoreMTime(json) {
return JSON.stringify(json).replace(/"mtime":[0-9]+/g, '"mtime":0');
}
classToTest.forEach((testName) => {
const klass = SERIALIZABLE_CLASSES[testName].class || SERIALIZABLE_CLASSES[testName];
const initData = SERIALIZABLE_CLASSES[testName].data;
const debug = SERIALIZABLE_CLASSES[testName].debug;
test(`Test ${testName} serialization/deserialization`, (t) => {
t.ok(klass, 'Make sure the class definition exist');
const instance = klass.newInstance(initData);
t.ok(instance, 'Make sure the instance exist');
const state = instance.getState();
t.ok(instance, 'Make sure we can get serialize data');
const instance2 = vtk(state);
t.ok(instance, 'Make sure we can get deserialize data');
const state2 = instance2.getState();
if (debug) {
vtkDebugMacro(state);
}
t.notEqual(instance, instance2, 'We have two different instances');
t.deepEqual(ignoreMTime(state), ignoreMTime(state2), 'But same serialized content');
t.end();
});
});