forked from cornerstonejs/cornerstone
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdrawInvalidated_test.js
More file actions
130 lines (110 loc) · 3.47 KB
/
Copy pathdrawInvalidated_test.js
File metadata and controls
130 lines (110 loc) · 3.47 KB
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
import { assert } from 'chai';
import enable from '../src/enable.js';
import displayImage from '../src/displayImage.js';
import drawInvalidated from '../src/drawInvalidated.js';
import disable from '../src/disable.js';
import { getEnabledElement } from '../src/enabledElements.js';
describe('drawInvalidated', function () {
beforeEach(function () {
// Arrange
this.element = document.createElement('div');
const height = 2;
const width = 2;
const getPixelData = () => new Uint8Array([0, 255, 255, 0]);
this.image1 = {
imageId: 'exampleImageId',
minPixelValue: 0,
maxPixelValue: 255,
slope: 1.0,
intercept: 0,
windowCenter: 127,
windowWidth: 256,
getPixelData,
rows: height,
columns: width,
height,
width,
color: false,
sizeInBytes: width * height * 2
};
this.image2 = {
imageId: 'exampleImageId',
minPixelValue: 0,
maxPixelValue: 255,
slope: 1.0,
intercept: 0,
windowCenter: 127,
windowWidth: 256,
getPixelData,
rows: height,
columns: width,
height,
width,
color: false,
sizeInBytes: width * height * 2
};
// Arrange
this.element1 = document.createElement('div');
this.element2 = document.createElement('div');
this.element1.id = 'Element1';
this.element2.id = 'Element2';
// Enable the element for which we will test disabling
enable(this.element1);
displayImage(this.element1, this.image1);
// Enable a second element for testing purposes
enable(this.element2);
displayImage(this.element2, this.image2);
});
it('should draw only the invalidated elements', function (done) {
// Arrange
const element1 = this.element1;
const element2 = this.element2;
const enabledElement2 = getEnabledElement(this.element2);
const image2 = this.image2;
// Assert
element1.addEventListener('cornerstoneimagerendered', function () {
// If element1 is redrawn, then this test has failed.
// Only element2 should be redrawn.
done();
});
element2.addEventListener('cornerstoneimagerendered', function (event) {
// Make sure element2 is redrawn since it has been invalidated
assert.equal(event.target, element2);
assert.equal(event.detail.image, image2);
done();
});
// Act
enabledElement2.invalid = true;
drawInvalidated();
});
it('should draw all invalidated elements', function (done) {
// Arrange
const element1 = this.element1;
const enabledElement1 = getEnabledElement(this.element1);
const image1 = this.image1;
const element2 = this.element2;
const enabledElement2 = getEnabledElement(this.element2);
const image2 = this.image2;
// Assert
element1.addEventListener('cornerstoneimagerendered', function (event) {
// If element1 is redrawn, then this test has failed.
// Only element2 should be redrawn.
assert.equal(event.target, element1);
assert.equal(event.detail.image, image1);
done();
});
element2.addEventListener('cornerstoneimagerendered', function (event) {
// Make sure element2 is redrawn since it has been invalidated
assert.equal(event.target, element2);
assert.equal(event.detail.image, image2);
done();
});
// Act
enabledElement1.invalid = true;
enabledElement2.invalid = true;
drawInvalidated();
});
afterEach(function () {
disable(this.element);
});
});