Skip to content

Commit f23dda6

Browse files
committed
补充common下的UT。review by chenmy
1 parent 0937d8b commit f23dda6

File tree

11 files changed

+1543
-0
lines changed

11 files changed

+1543
-0
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
require('../../../../src/common/overlay/levelRenderer/ComputeBoundingBox');
2+
3+
describe('ComputeBoundingBox', function () {
4+
it('computeBoundingBox', function () {
5+
var computeTool = new SuperMap.LevelRenderer.Tool.ComputeBoundingBox();
6+
var points = [[10, 10], [5, 20], [20, 5], [20, 20]];
7+
var min = [], max = [];
8+
spyOn(computeTool, 'computeBoundingBox').and.callThrough();
9+
computeTool.computeBoundingBox(points, min, max);
10+
computeTool.computeBoundingBox([], min, max);
11+
expect(computeTool.computeBoundingBox).toHaveBeenCalledWith(points, min, max);
12+
expect(computeTool.computeBoundingBox).toHaveBeenCalledWith([], min, max);
13+
expect(computeTool).not.toBeNull();
14+
expect(min[0]).toEqual(5);
15+
expect(min[1]).toEqual(5);
16+
expect(max[0]).toEqual(20);
17+
expect(max[1]).toEqual(20);
18+
});
19+
20+
it('cubeBezier', function () {
21+
var computeTool = new SuperMap.LevelRenderer.Tool.ComputeBoundingBox();
22+
var p0 = [15, 20];
23+
var p1 = [10, 30];
24+
var p2 = [20, 70];
25+
var p3 = [50, 60];
26+
var min = [], max = [];
27+
spyOn(computeTool, 'cubeBezier').and.callThrough();
28+
computeTool.cubeBezier(p0, p1, p2, p3, min, max);
29+
expect(computeTool.cubeBezier).toHaveBeenCalledWith(p0, p1, p2, p3, min, max);
30+
expect(computeTool).not.toBeNull();
31+
expect(min[0]).not.toBeNaN();
32+
expect(min[1]).not.toBeNaN();
33+
expect(max[0]).not.toBeNaN();
34+
expect(max[1]).not.toBeNaN();
35+
});
36+
37+
it('quadraticBezier', function () {
38+
var computeTool = new SuperMap.LevelRenderer.Tool.ComputeBoundingBox();
39+
var p0 = [15, 20];
40+
var p1 = [10, 30];
41+
var p2 = [20, 70];
42+
var min = [], max = [];
43+
spyOn(computeTool, 'quadraticBezier').and.callThrough();
44+
computeTool.quadraticBezier(p0, p1, p2, min, max);
45+
expect(computeTool.quadraticBezier).toHaveBeenCalledWith(p0, p1, p2, min, max);
46+
expect(computeTool).not.toBeNull();
47+
expect(min[0]).not.toBeNaN();
48+
expect(min[1]).not.toBeNaN();
49+
expect(max[0]).not.toBeNaN();
50+
expect(max[1]).not.toBeNaN();
51+
});
52+
53+
it('arc', function () {
54+
var min = [], max = [];
55+
var computeTool = new SuperMap.LevelRenderer.Tool.ComputeBoundingBox();
56+
spyOn(computeTool, 'arc').and.callThrough();
57+
computeTool.arc(100, 100, 60, -30, -120, true, min, max);
58+
computeTool.arc(100, 100, 60, 30, 120, false, min, max);
59+
expect(computeTool.arc).toHaveBeenCalledWith(100, 100, 60, 30, 120, false, min, max);
60+
expect(computeTool.arc).toHaveBeenCalledWith(100, 100, 60, -30, -120, true, min, max);
61+
expect(min[0]).not.toBeNaN();
62+
expect(min[1]).not.toBeNaN();
63+
expect(max[0]).not.toBeNaN();
64+
expect(max[1]).not.toBeNaN();
65+
});
66+
});
Lines changed: 298 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,298 @@
1+
require('../../../../src/common/overlay/levelRenderer/Painter');
2+
3+
describe('Painter', function () {
4+
var testDiv, storage;
5+
beforeAll(function () {
6+
testDiv = window.document.createElement("div");
7+
testDiv.setAttribute("id", "group");
8+
testDiv.style.styleFloat = "left";
9+
testDiv.style.marginLeft = "8px";
10+
testDiv.style.marginTop = "50px";
11+
testDiv.style.width = "400px";
12+
testDiv.style.height = "400px";
13+
testDiv.style.border = "1px solid #000000";
14+
window.document.body.appendChild(testDiv);
15+
});
16+
beforeEach(function () {
17+
storage = new SuperMap.LevelRenderer.Storage();
18+
storage.addRoot(new SuperMap.LevelRenderer.Shape.SmicStar({
19+
style: {
20+
x: 200,
21+
y: 200,
22+
r: 150,
23+
n: 5
24+
},
25+
}));
26+
});
27+
afterEach(function () {
28+
storage.dispose();
29+
});
30+
afterAll(function () {
31+
window.document.body.removeChild(testDiv);
32+
});
33+
34+
it('constructor, destroy, refreshHover, clearHover, getWidth, getHeight', function () {
35+
var painter = new SuperMap.LevelRenderer.Painter(testDiv, storage);
36+
painter.refreshHover();
37+
expect(painter).not.toBeNull();
38+
expect(painter.root.id).toEqual("group");
39+
expect(painter.root.nodeName).toEqual("DIV");
40+
expect(painter._bgDom).not.toBeNull();
41+
expect(painter._bgDom.nodeName).toEqual("DIV");
42+
expect(painter._height).toEqual(400);
43+
expect(painter._width).toEqual(400);
44+
expect(painter._layers).not.toBeNull();
45+
expect(painter.storage).not.toBeNull();
46+
expect(painter.shapeToImage).not.toBeNull();
47+
expect(painter._layerConfig).not.toBeNull();
48+
expect(painter._zlevelList).not.toBeNull();
49+
var width = painter.getWidth();
50+
var height = painter.getHeight();
51+
expect(width).toEqual(400);
52+
expect(height).toEqual(400);
53+
painter.destroy();
54+
expect(painter.root).toBeNull();
55+
expect(painter._bgDom).toBeNull();
56+
expect(painter.storage).toBeNull();
57+
expect(painter._zlevelList).toBeNull();
58+
expect(painter._layerConfig).toBeNull();
59+
expect(painter.shapeToImage).toBeNull();
60+
});
61+
62+
//渲染
63+
it('render', function () {
64+
var painter = new SuperMap.LevelRenderer.Painter(testDiv, storage);
65+
spyOn(painter, 'render').and.callThrough();
66+
painter.render();
67+
expect(painter.render).toHaveBeenCalled();
68+
expect(painter.storage._shapeList.length).toEqual(1);
69+
expect(painter.storage._shapeList[0].type).toEqual("smicstar");
70+
expect(painter._layers.hover).not.toBeNull();
71+
expect(painter._zlevelList[0]).toEqual(0);
72+
painter.destroy();
73+
});
74+
75+
// 不强制绘制所有 shape
76+
it('refresh', function () {
77+
var painter = new SuperMap.LevelRenderer.Painter(testDiv, storage);
78+
spyOn(painter, 'refresh').and.callThrough();
79+
painter.refresh(function () {
80+
painter._zlevelList[0] = "test_refresh";
81+
});
82+
expect(painter.refresh).toHaveBeenCalled();
83+
expect(painter.storage._shapeList.length).toEqual(1);
84+
expect(painter.storage._shapeList[0].type).toEqual("smicstar");
85+
expect(painter._layers.hover).not.toBeNull();
86+
expect(painter._zlevelList[0]).toEqual("test_refresh");
87+
painter.destroy();
88+
});
89+
90+
// 强制绘制所有 shape
91+
it('refresh_paintAll', function () {
92+
var painter = new SuperMap.LevelRenderer.Painter(testDiv, storage);
93+
spyOn(painter, 'refresh').and.callThrough();
94+
painter.refresh(function () {
95+
painter._zlevelList[0] = "test_refresh";
96+
}, true);
97+
expect(painter.refresh).toHaveBeenCalled();
98+
expect(painter.storage._shapeList.length).toEqual(1);
99+
expect(painter.storage._shapeList[0].type).toEqual("smicstar");
100+
expect(painter._layers.hover).not.toBeNull();
101+
expect(painter._zlevelList[0]).toEqual("test_refresh");
102+
painter.destroy();
103+
});
104+
105+
//按列表绘制图形
106+
it('_paintList', function () {
107+
storage.addRoot(new SuperMap.LevelRenderer.Shape.SmicPolygon({
108+
style: {pointList: [[0, 0], [100, 0], [100, 100], [0, 100]]},
109+
zlevel: 1
110+
}));
111+
storage.addRoot(new SuperMap.LevelRenderer.Shape.SmicText({
112+
style: {
113+
x: 200,
114+
y: 200,
115+
textFont: '14px Arial',
116+
text: 'Label'
117+
},
118+
zlevel: 2
119+
}));
120+
storage.addRoot(new SuperMap.LevelRenderer.Shape.SmicBrokenLine({
121+
style: {
122+
pointList: [[0, 0], [100, 100], [100, 0]]
123+
},
124+
}));
125+
var list = storage.getShapeList(true);
126+
var painter = new SuperMap.LevelRenderer.Painter(testDiv, storage);
127+
expect(painter._zlevelList.length).toEqual(0);
128+
expect(painter.storage._shapeList.length).toEqual(4);
129+
expect(painter.storage._shapeList[0].type).toEqual("smicstar");
130+
expect(painter.storage._shapeList[1].type).toEqual("smicbroken-line");
131+
expect(painter.storage._shapeList[2].type).toEqual("smicpolygon");
132+
expect(painter.storage._shapeList[3].type).toEqual("smictext");
133+
painter.render();
134+
painter._paintList(list, true);
135+
expect(painter).not.toBeNull();
136+
expect(painter._zlevelList.length).toEqual(3);
137+
expect(painter._zlevelList[0]).toEqual(0);
138+
expect(painter._zlevelList[1]).toEqual(1);
139+
expect(painter._zlevelList[2]).toEqual(2);
140+
painter.destroy();
141+
});
142+
143+
it('getLayer, getLayers', function () {
144+
storage.addRoot(new SuperMap.LevelRenderer.Shape.SmicPolygon({
145+
style: {pointList: [[0, 0], [100, 0], [100, 100], [0, 100]]},
146+
zlevel: 2
147+
}));
148+
var painter = new SuperMap.LevelRenderer.Painter(testDiv, storage);
149+
painter.render();
150+
var layer = painter.getLayer(0);
151+
var layers = painter.getLayers();
152+
expect(layer).not.toBeNull();
153+
expect(layer.CLASS_NAME).toEqual("SuperMap.LevelRenderer.Painter.Layer");
154+
expect(layer.painter).not.toBeNull();
155+
expect(layer.painter.storage._shapeList.length).toEqual(2);
156+
expect(layer.painter.storage._shapeList[0].type).toEqual("smicstar");
157+
expect(layer.painter.storage._shapeList[1].type).toEqual("smicpolygon");
158+
expect(layers).not.toBeNull();
159+
expect(layers[0]).not.toBeNull();
160+
expect(layers[0].CLASS_NAME).toEqual("SuperMap.LevelRenderer.Painter.Layer");
161+
expect(layers[0].painter).not.toBeNull();
162+
expect(layers.hover).not.toBeNull();
163+
expect(layers.hover.CLASS_NAME).toEqual("SuperMap.LevelRenderer.Painter.Layer");
164+
expect(layers.hover.needTransform).toBeFalsy();
165+
painter.destroy();
166+
});
167+
168+
it('refreshShapes, clear', function () {
169+
var painter = new SuperMap.LevelRenderer.Painter(testDiv, storage);
170+
var list = storage.getShapeList(true);
171+
painter.refreshShapes(list);
172+
expect(painter).not.toBeNull();
173+
expect(painter._layers).not.toBeNull();
174+
expect(painter._layers[0]).not.toBeNull();
175+
expect(painter._layers.hover).not.toBeNull();
176+
painter._layers[0].motionBlur = true;
177+
painter._layers[0].clearColor = "#000000";
178+
painter._layers[0].config = {clearColor: "#657871"};
179+
spyOn(painter._layers[0], 'clear').and.callThrough();
180+
spyOn(painter._layers[0].ctx, 'fillRect').and.callThrough();
181+
spyOn(painter._layers[0].ctx, 'drawImage').and.callThrough();
182+
painter.clear();
183+
expect(painter._layers[0].clear).toHaveBeenCalled();
184+
expect(painter._layers[0].ctx.fillRect).toHaveBeenCalled();
185+
expect(painter._layers[0].ctx.drawImage).toHaveBeenCalled();
186+
painter.destroy();
187+
});
188+
189+
//修改指定 zlevel 的绘制参数
190+
it('modLayer', function () {
191+
var painter = new SuperMap.LevelRenderer.Painter(testDiv, storage);
192+
painter.render();
193+
var config = {
194+
clearColor: 0,
195+
motionBlur: false,
196+
lastFrameAlpha: 0.7,
197+
position: [5],
198+
rotation: [3],
199+
};
200+
spyOn(painter, 'modLayer').and.callThrough();
201+
painter.modLayer(0, config);
202+
expect(painter.modLayer).toHaveBeenCalledWith(0, config);
203+
expect(painter).not.toBeNull();
204+
expect(painter._layerConfig[0].clearColor).toEqual(0);
205+
expect(painter._layerConfig[0].lastFrameAlpha).toEqual(0.7);
206+
expect(painter._layerConfig[0].motionBlur).toBeFalsy();
207+
expect(painter._layerConfig[0].position[0]).toEqual(5);
208+
expect(painter._layerConfig[0].rotation[0]).toEqual(3);
209+
painter.destroy();
210+
});
211+
212+
213+
it('delLayer, clearHover', function () {
214+
storage.addRoot(new SuperMap.LevelRenderer.Shape.SmicPolygon({
215+
style: {pointList: [[0, 0], [100, 0], [100, 100], [0, 100]]},
216+
zlevel: 1
217+
}));
218+
var painter = new SuperMap.LevelRenderer.Painter(testDiv, storage);
219+
spyOn(painter, 'delLayer').and.callThrough();
220+
painter.delLayer(1);
221+
painter.render();
222+
expect(painter._layers[0]).not.toBeNull();
223+
expect(painter._layers[1]).not.toBeNull();
224+
painter.delLayer(0);
225+
expect(painter.delLayer).toHaveBeenCalledWith(1);
226+
expect(painter.delLayer).toHaveBeenCalledWith(0);
227+
expect(painter._layers[1]).not.toBeNull();
228+
painter.clearLayer(1);
229+
expect(painter).not.toBeNull();
230+
painter.destroy();
231+
});
232+
233+
// 区域大小变化后重绘。
234+
it('resize', function () {
235+
var painter = new SuperMap.LevelRenderer.Painter(testDiv, storage);
236+
painter._width = 500;
237+
painter.resize();
238+
expect(painter).not.toBeNull();
239+
expect(painter._width).toEqual(400);
240+
painter.destroy();
241+
});
242+
243+
244+
//获取 Hover 层的 Dom。
245+
it('getDomHover', function () {
246+
var painter = new SuperMap.LevelRenderer.Painter(testDiv, storage);
247+
var dom = painter.getDomHover();
248+
expect(dom).not.toBeNull();
249+
expect(dom.nodeName).toEqual("CANVAS");
250+
expect(dom.width).toEqual(400);
251+
expect(dom.height).toEqual(400);
252+
painter.destroy();
253+
});
254+
255+
//图像导出
256+
it('toDataURL', function () {
257+
var painter = new SuperMap.LevelRenderer.Painter(testDiv, storage);
258+
var image = painter.toDataURL("PNG", "#fff", {});
259+
expect(image).not.toBeNull();
260+
expect(image).toContain("image/png");
261+
painter.destroy();
262+
});
263+
264+
it('_shapeToImage', function () {
265+
var painter = new SuperMap.LevelRenderer.Painter(testDiv, storage);
266+
var list = storage.getShapeList(true);
267+
var shape = list[0];
268+
var devicePixelRatio = SuperMap.LevelRenderer.Painter.devicePixelRatio;
269+
var imgShape = painter._shapeToImage('testId', shape, 400, 400, devicePixelRatio);
270+
expect(imgShape).not.toBeNull();
271+
expect(imgShape.id).toEqual("testId");
272+
expect(imgShape.type).toEqual("smicimage");
273+
expect(imgShape.style.image).not.toBeNull();
274+
expect(imgShape.style.image.nodeName).toEqual("CANVAS");
275+
expect(imgShape.style.x).toEqual(0);
276+
expect(imgShape.style.y).toEqual(0);
277+
painter.destroy();
278+
});
279+
280+
it('updateHoverLayer', function () {
281+
var painter = new SuperMap.LevelRenderer.Painter(testDiv, storage);
282+
var list = storage.getShapeList(true);
283+
painter.updateHoverLayer(list);
284+
expect(painter).not.toBeNull();
285+
expect(painter.root.id).toEqual("group");
286+
expect(painter.root.nodeName).toEqual("DIV");
287+
expect(painter._bgDom).not.toBeNull();
288+
expect(painter._bgDom.nodeName).toEqual("DIV");
289+
expect(painter._height).toEqual(400);
290+
expect(painter._width).toEqual(400);
291+
expect(painter._layers).not.toBeNull();
292+
expect(painter.storage).not.toBeNull();
293+
expect(painter.shapeToImage).not.toBeNull();
294+
expect(painter._layerConfig).not.toBeNull();
295+
expect(painter._zlevelList).not.toBeNull();
296+
painter.destroy();
297+
});
298+
});

0 commit comments

Comments
 (0)