Skip to content

Commit 3bac3d9

Browse files
committed
Merge branch 'master' of https://github.com/SuperMap/iClient9
2 parents d8bd0de + b69a610 commit 3bac3d9

File tree

3 files changed

+280
-91
lines changed

3 files changed

+280
-91
lines changed

test/common/commontypes/BoundsSpec.js

Lines changed: 213 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
require('../../../src/common/commontypes/Bounds');
2+
3+
describe('Bounds', function () {
4+
it('constructor, clone, equals, toString, toArray', function () {
5+
var bounds = new SuperMap.Bounds([-180, -90, 180, 90]);
6+
var bounds1 = bounds.clone();
7+
expect(bounds).not.toBeNull();
8+
expect(bounds.CLASS_NAME).toEqual("SuperMap.Bounds");
9+
expect(bounds.bottom).toEqual(-90);
10+
expect(bounds.left).toEqual(-180);
11+
expect(bounds.right).toEqual(180);
12+
expect(bounds.top).toEqual(90);
13+
expect(bounds).toEqual(bounds1);
14+
var isEqual = bounds1.equals(bounds);
15+
expect(isEqual).toBeTruthy();
16+
var str = bounds.toString();
17+
expect(str).toEqual("-180,-90,180,90");
18+
var array = bounds.toArray(true);
19+
expect(array.length).toEqual(4);
20+
expect(array[0]).toEqual(-90);
21+
expect(array[1]).toEqual(-180);
22+
expect(array[2]).toEqual(90);
23+
expect(array[3]).toEqual(180);
24+
var array1 = bounds.toArray(false);
25+
expect(array1.length).toEqual(4);
26+
expect(array1[0]).toEqual(-180);
27+
expect(array1[1]).toEqual(-90);
28+
expect(array1[2]).toEqual(180);
29+
expect(array1[3]).toEqual(90);
30+
bounds.destroy();
31+
});
32+
33+
//取小数点后decimal位数字进行四舍五入再转换为BBOX字符串
34+
it('toBBOX', function () {
35+
var bounds = new SuperMap.Bounds(-1.1234567, -1.7654321, 1.4444444, 1.5555555);
36+
var str1 = bounds.toBBOX();
37+
expect(str1).toEqual("-1.123457,-1.765432,1.444444,1.555556");
38+
var str2 = bounds.toBBOX(1);
39+
expect(str2).toEqual("-1.1,-1.8,1.4,1.6");
40+
var str3 = bounds.toBBOX(1, true);
41+
expect(str3).toEqual("-1.8,-1.1,1.6,1.4");
42+
bounds.destroy();
43+
});
44+
45+
//基于当前边界范围创建一个新的多边形对象
46+
it('toGeometry', function () {
47+
var bounds = new SuperMap.Bounds(-180, -90, 100, 80);
48+
var geo = bounds.toGeometry();
49+
expect(geo).not.toBeNull();
50+
expect(geo.CLASS_NAME).toEqual("SuperMap.Geometry.Polygon");
51+
expect(geo.id).toContain("SuperMap.Geometry");
52+
expect(geo.componentTypes[0]).toEqual("SuperMap.Geometry.LinearRing");
53+
bounds.destroy();
54+
});
55+
56+
it('getSize, getCenterPixel', function () {
57+
var bounds = new SuperMap.Bounds(-180, -90, 100, 80);
58+
var size = bounds.getSize();
59+
var pixel = bounds.getCenterPixel();
60+
expect(size.w).toEqual(280);
61+
expect(size.h).toEqual(170);
62+
expect(pixel.x).toEqual(-40);
63+
expect(pixel.y).toEqual(-5);
64+
bounds.destroy();
65+
});
66+
67+
it('scale', function () {
68+
var bounds = new SuperMap.Bounds(-50, -50, 40, 40);
69+
var bounds1 = bounds.scale(2);
70+
expect(bounds1).not.toBeNull();
71+
expect(bounds1.bottom).toEqual(-95);
72+
expect(bounds1.left).toEqual(-95);
73+
expect(bounds1.right).toEqual(85);
74+
expect(bounds1.top).toEqual(85);
75+
var origin = new SuperMap.Pixel(40, 50);
76+
var bounds2 = bounds.scale(2, origin);
77+
expect(bounds2).not.toBeNull();
78+
expect(bounds2.bottom).toEqual(-150);
79+
expect(bounds2.left).toEqual(-140);
80+
expect(bounds2.right).toEqual(40);
81+
expect(bounds2.top).toEqual(30);
82+
bounds.destroy();
83+
});
84+
85+
it('add', function () {
86+
var bounds = new SuperMap.Bounds(-50, -50, 40, 40);
87+
var newBounds = bounds.add(20, 10);
88+
expect(newBounds).not.toBeNull();
89+
expect(newBounds.bottom).toEqual(-40);
90+
expect(newBounds.left).toEqual(-30);
91+
expect(newBounds.right).toEqual(60);
92+
expect(newBounds.top).toEqual(50);
93+
bounds.destroy();
94+
});
95+
96+
//在当前bounds上扩展bounds
97+
it('extend', function () {
98+
var bounds = new SuperMap.Bounds(-50, -50, 40, 40);
99+
spyOn(bounds, 'extend').and.callThrough();
100+
bounds.extend(new SuperMap.LonLat(50, 60));
101+
expect(bounds).not.toBeNull();
102+
bounds.extend(new SuperMap.Geometry.Point(50, 60));
103+
expect(bounds).not.toBeNull();
104+
bounds.extend(new SuperMap.Bounds(50, 60));
105+
expect(bounds).not.toBeNull();
106+
expect(bounds.bottom).toEqual(-50);
107+
expect(bounds.left).toEqual(-50);
108+
expect(bounds.right).toEqual(50);
109+
expect(bounds.top).toEqual(60);
110+
bounds.destroy();
111+
});
112+
113+
//判断传入的坐标是否在范围内
114+
it('containsLonLat', function () {
115+
var bounds = new SuperMap.Bounds(-50, -50, 40, 40);
116+
var isContains1 = bounds.containsLonLat(new SuperMap.LonLat(40, 40), true);
117+
expect(isContains1).toBeTruthy();
118+
var isContains2 = bounds.containsLonLat(
119+
new SuperMap.LonLat(400, 40),
120+
{
121+
inclusive: true,
122+
worldBounds: new SuperMap.Bounds(-180, -90, 180, 90)
123+
}
124+
);
125+
expect(isContains2).toBeTruthy();
126+
bounds.destroy();
127+
});
128+
129+
it('containsPixel', function () {
130+
var bounds = new SuperMap.Bounds(-50, -50, 40, 40);
131+
var isContains = bounds.containsPixel(new SuperMap.Pixel(40, 40), true);
132+
expect(isContains).toBeTruthy();
133+
bounds.destroy();
134+
});
135+
136+
it('contains', function () {
137+
var bounds = new SuperMap.Bounds(-50, -50, 40, 40);
138+
var isContains1 = bounds.contains(40, 40);
139+
var isContains2 = bounds.contains();
140+
var isContains3 = bounds.contains(40, 40, false);
141+
expect(isContains1).toBeTruthy();
142+
expect(isContains2).toBeFalsy();
143+
expect(isContains3).toBeFalsy();
144+
bounds.destroy();
145+
});
146+
147+
//判断目标边界范围是否与当前边界范围相交
148+
it('intersectsBounds', function () {
149+
var bounds = new SuperMap.Bounds(-180, -90, 100, 80);
150+
var options1 = {
151+
inclusive: false,
152+
worldBounds: new SuperMap.Bounds(-170, -90, 120, 80)
153+
};
154+
var options2 = {
155+
inclusive: false,
156+
worldBounds: new SuperMap.Bounds(-180, -90, 100, 80)
157+
};
158+
var isIntersects1 = bounds.intersectsBounds(
159+
new SuperMap.Bounds(100, -90, 120, 80),
160+
options1
161+
);
162+
var isIntersects2 = bounds.intersectsBounds(
163+
new SuperMap.Bounds(100, -90, 100, 80),
164+
options2
165+
);
166+
expect(isIntersects1).toBeTruthy();
167+
expect(isIntersects2).toBeFalsy();
168+
bounds.destroy();
169+
});
170+
171+
it('determineQuadrant', function () {
172+
var bounds = new SuperMap.Bounds(-180, -90, 100, 80);
173+
var str = bounds.determineQuadrant(new SuperMap.LonLat(20, 20));
174+
expect(str).toEqual("tr");
175+
bounds.destroy();
176+
});
177+
178+
it('toServerJSONObject', function () {
179+
var bounds = new SuperMap.Bounds(-180, -90, 100, 80);
180+
var obj = bounds.toServerJSONObject();
181+
expect(obj).not.toBeNull();
182+
expect(obj.bottom).toEqual(-90);
183+
expect(obj.left).toEqual(-180);
184+
expect(obj.right).toEqual(100);
185+
expect(obj.top).toEqual(80);
186+
expect(obj.leftBottom).not.toBeNull();
187+
expect(obj.rightTop).not.toBeNull();
188+
bounds.destroy();
189+
});
190+
191+
it('fromString', function () {
192+
var bounds = SuperMap.Bounds.fromString("-180,-90,100,80", false);
193+
expect(bounds).not.toBeNull();
194+
expect(bounds.bottom).toEqual(-90);
195+
expect(bounds.left).toEqual(-180);
196+
expect(bounds.right).toEqual(100);
197+
expect(bounds.top).toEqual(80);
198+
});
199+
200+
it('fromSize', function () {
201+
var bounds = SuperMap.Bounds.fromSize(new SuperMap.Size(20, 10));
202+
expect(bounds).not.toBeNull();
203+
expect(bounds.bottom).toEqual(10);
204+
expect(bounds.left).toEqual(0);
205+
expect(bounds.right).toEqual(20);
206+
expect(bounds.top).toEqual(0);
207+
});
208+
209+
it('oppositeQuadrant', function () {
210+
var oppositeQuadrant = SuperMap.Bounds.oppositeQuadrant("tl");
211+
expect(oppositeQuadrant).toEqual("br");
212+
});
213+
});

0 commit comments

Comments
 (0)