Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
半栈学徒
incubator-echarts
提交
c6eecfe2
I
incubator-echarts
项目概览
半栈学徒
/
incubator-echarts
与 Fork 源项目一致
从无法访问的项目Fork
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
incubator-echarts
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c6eecfe2
编写于
10月 16, 2020
作者:
1
100pah
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
test: update ut for 5.0.
上级
7090bceb
变更
8
展开全部
隐藏空白更改
内联
并排
Showing
8 changed file
with
523 addition
and
464 deletion
+523
-464
test/ut/jest.config.js
test/ut/jest.config.js
+0
-1
test/ut/spec/model/Global.test.ts
test/ut/spec/model/Global.test.ts
+126
-113
test/ut/spec/model/timelineMediaOptions.test.ts
test/ut/spec/model/timelineMediaOptions.test.ts
+35
-24
test/ut/spec/scale/interval.test.ts
test/ut/spec/scale/interval.test.ts
+49
-45
test/ut/spec/util/graphic.test.ts
test/ut/spec/util/graphic.test.ts
+50
-47
test/ut/spec/util/layout.test.ts
test/ut/spec/util/layout.test.ts
+26
-18
test/ut/spec/util/model.test.ts
test/ut/spec/util/model.test.ts
+10
-9
test/ut/spec/util/number.test.ts
test/ut/spec/util/number.test.ts
+227
-207
未找到文件。
test/ut/jest.config.js
浏览文件 @
c6eecfe2
...
...
@@ -39,7 +39,6 @@ module.exports = {
'
**/spec/model/*.test.ts
'
,
'
**/spec/scale/*.test.ts
'
,
'
**/spec/util/*.test.ts
'
,
'
!**/spec/api/containPixel.test.ts
'
,
'
!**/spec/component/graphic/setOption.test.ts
'
]
};
test/ut/spec/model/Global.test.ts
浏览文件 @
c6eecfe2
此差异已折叠。
点击以展开。
test/ut/spec/model/timelineMediaOptions.test.ts
浏览文件 @
c6eecfe2
...
...
@@ -17,26 +17,37 @@
* specific language governing permissions and limitations
* under the License.
*/
const
utHelper
=
require
(
'
../../core/utHelper
'
);
import
{
EChartsType
}
from
'
../../../../src/echarts
'
;
import
SeriesModel
from
'
../../../../src/model/Series
'
;
import
{
ParsedValue
}
from
'
../../../../src/util/types
'
;
import
{
LegendOption
}
from
'
../../../../src/component/legend/LegendModel
'
;
import
TimelineModel
from
'
../../../../src/component/timeline/TimelineModel
'
;
import
{
createChart
}
from
'
../../core/utHelper
'
;
import
{
EChartsFullOption
}
from
'
../../../../src/option
'
;
describe
(
'
timelineMediaOptions
'
,
function
()
{
function
getData0
(
chart
,
seriesIndex
)
{
function
getData0
(
chart
:
EChartsType
,
seriesIndex
:
number
):
ParsedValue
{
return
getSeries
(
chart
,
seriesIndex
).
getData
().
get
(
'
y
'
,
0
);
}
function
getSeries
(
chart
,
seriesIndex
)
{
return
chart
.
getModel
().
getComponent
(
'
series
'
,
seriesIndex
);
function
getSeries
(
chart
:
EChartsType
,
seriesIndex
:
number
):
SeriesModel
{
return
chart
.
getModel
().
getComponent
(
'
series
'
,
seriesIndex
)
as
SeriesModel
;
}
function
getLegendOption
(
chart
)
{
function
getLegendOption
(
chart
:
EChartsType
):
LegendOption
{
return
chart
.
getModel
().
getComponent
(
'
legend
'
,
0
).
option
;
}
function
getTimelineComponent
(
chart
)
{
return
chart
.
getModel
().
getComponent
(
'
timeline
'
,
0
);
function
getTimelineComponent
(
chart
:
EChartsType
):
TimelineModel
{
return
chart
.
getModel
().
getComponent
(
'
timeline
'
,
0
)
as
TimelineModel
;
}
var
chart
;
let
chart
:
EChartsType
;
beforeEach
(
function
()
{
chart
=
utHelper
.
createChart
(
10
,
10
);
chart
=
createChart
({
width
:
10
,
height
:
10
});
});
afterEach
(
function
()
{
...
...
@@ -49,7 +60,7 @@ describe('timelineMediaOptions', function () {
describe
(
'
parse_timeline_media_option
'
,
function
()
{
it
(
'
parse_media_has_baseOption_has_default
'
,
function
()
{
var
o
ption
=
{
const
option
:
EChartsFullO
ption
=
{
baseOption
:
{
xAxis
:
{
data
:
[
'
a
'
]
},
yAxis
:
{},
...
...
@@ -77,7 +88,7 @@ describe('timelineMediaOptions', function () {
});
it
(
'
parse_media_no_baseOption_has_default
'
,
function
()
{
var
o
ption
=
{
const
option
:
EChartsFullO
ption
=
{
xAxis
:
{
data
:
[
'
a
'
]
},
yAxis
:
{},
legend
:
{
left
:
10
},
...
...
@@ -101,7 +112,7 @@ describe('timelineMediaOptions', function () {
});
it
(
'
parse_media_no_baseOption_no_default
'
,
function
()
{
var
o
ption
=
{
const
option
:
EChartsFullO
ption
=
{
xAxis
:
{
data
:
[
'
a
'
]
},
yAxis
:
{},
legend
:
{
left
:
10
},
...
...
@@ -121,7 +132,7 @@ describe('timelineMediaOptions', function () {
});
it
(
'
parse_timeline_media_has_baseOption
'
,
function
()
{
var
o
ption
=
{
const
option
:
EChartsFullO
ption
=
{
baseOption
:
{
timeline
:
{
axisType
:
'
category
'
},
xAxis
:
{
data
:
[
'
a
'
]
},
...
...
@@ -161,7 +172,7 @@ describe('timelineMediaOptions', function () {
});
it
(
'
parse_timeline_media_no_baseOption
'
,
function
()
{
var
o
ption
=
{
const
option
:
EChartsFullO
ption
=
{
timeline
:
{
axisType
:
'
category
'
},
xAxis
:
{
data
:
[
'
a
'
]
},
yAxis
:
{},
...
...
@@ -197,7 +208,7 @@ describe('timelineMediaOptions', function () {
});
it
(
'
parse_timeline_has_baseOption
'
,
function
()
{
var
o
ption
=
{
const
option
:
EChartsFullO
ption
=
{
baseOption
:
{
timeline
:
{
axisType
:
'
category
'
},
xAxis
:
{
data
:
[
'
a
'
]
},
...
...
@@ -221,7 +232,7 @@ describe('timelineMediaOptions', function () {
});
it
(
'
parse_timeline_has_baseOption_compat
'
,
function
()
{
var
o
ption
=
{
const
option
:
EChartsFullO
ption
=
{
timeline
:
{
axisType
:
'
category
'
},
baseOption
:
{
xAxis
:
{
data
:
[
'
a
'
]
},
...
...
@@ -245,7 +256,7 @@ describe('timelineMediaOptions', function () {
});
it
(
'
parse_timeline_has_baseOption_compat
'
,
function
()
{
var
o
ption
=
{
const
option
:
EChartsFullO
ption
=
{
timeline
:
{
axisType
:
'
category
'
},
baseOption
:
{
xAxis
:
{
data
:
[
'
a
'
]
},
...
...
@@ -269,7 +280,7 @@ describe('timelineMediaOptions', function () {
});
it
(
'
parse_timeline_no_baseOption
'
,
function
()
{
var
o
ption
=
{
const
option
:
EChartsFullO
ption
=
{
timeline
:
{
axisType
:
'
category
'
},
xAxis
:
{
data
:
[
'
a
'
]
},
yAxis
:
{},
...
...
@@ -299,7 +310,7 @@ describe('timelineMediaOptions', function () {
describe
(
'
timeline_onceMore
'
,
function
()
{
it
(
'
timeline_setOptionOnceMore_baseOption
'
,
function
()
{
var
o
ption
=
{
const
option
:
EChartsFullO
ption
=
{
baseOption
:
{
timeline
:
{
axisType
:
'
category
'
,
...
...
@@ -347,7 +358,7 @@ describe('timelineMediaOptions', function () {
it
(
'
timeline_setOptionOnceMore_substitudeTimelineOptions
'
,
function
()
{
var
o
ption
=
{
const
option
:
EChartsFullO
ption
=
{
baseOption
:
{
timeline
:
{
axisType
:
'
category
'
,
...
...
@@ -377,7 +388,7 @@ describe('timelineMediaOptions', function () {
};
chart
.
setOption
(
option
);
var
ecModel
=
chart
.
getModel
();
let
ecModel
=
chart
.
getModel
();
expect
(
getData0
(
chart
,
0
)).
toEqual
(
1111
);
expect
(
getData0
(
chart
,
1
)).
toEqual
(
2222
);
...
...
@@ -399,9 +410,9 @@ describe('timelineMediaOptions', function () {
}]
});
var
ecModel
=
chart
.
getModel
();
var
optio
n
=
ecModel
.
getOption
();
expect
(
option
.
backgroundColor
).
toEqual
(
'
#987654
'
);
ecModel
=
chart
.
getModel
();
const
optionGotte
n
=
ecModel
.
getOption
();
expect
(
option
Gotten
.
backgroundColor
).
toEqual
(
'
#987654
'
);
expect
(
getData0
(
chart
,
0
)).
toEqual
(
1111
);
expect
(
getData0
(
chart
,
1
)).
toEqual
(
2222
);
...
...
test/ut/spec/scale/interval.test.ts
浏览文件 @
c6eecfe2
...
...
@@ -18,15 +18,19 @@
* under the License.
*/
const
scaleHelper
=
require
(
'
../../../../lib/scale/helper
'
);
const
numberUtil
=
require
(
'
../../../../lib/util/number
'
);
const
IntervalScale
=
require
(
'
../../../../lib/scale/Interval
'
);
const
utHelper
=
require
(
'
../../core/utHelper
'
);
import
{
createChart
,
isValueFinite
}
from
'
../../core/utHelper
'
;
import
{
EChartsType
}
from
'
../../../../src/echarts
'
;
import
CartesianAxisModel
from
'
../../../../src/coord/cartesian/AxisModel
'
;
import
IntervalScale
from
'
../../../../src/scale/Interval
'
;
import
{
intervalScaleNiceTicks
}
from
'
../../../../src/scale/helper
'
;
import
{
getPrecisionSafe
}
from
'
../../../../src/util/number
'
;
describe
(
'
scale_interval
'
,
function
()
{
var
chart
;
let
chart
:
EChartsType
;
beforeEach
(
function
()
{
chart
=
utHelper
.
createChart
();
chart
=
createChart
();
});
afterEach
(
function
()
{
...
...
@@ -37,9 +41,9 @@ describe('scale_interval', function () {
describe
(
'
extreme
'
,
function
()
{
it
(
'
ticks_min_max
'
,
function
()
{
var
min
=
0
;
var
max
=
54.090909
;
var
splitNumber
=
5
;
const
min
=
0
;
const
max
=
54.090909
;
const
splitNumber
=
5
;
chart
.
setOption
({
xAxis
:
{},
...
...
@@ -53,12 +57,12 @@ describe('scale_interval', function () {
series
:
[{
type
:
'
line
'
,
data
:
[]}]
});
var
yAxis
=
chart
.
getModel
().
getComponent
(
'
yAxis
'
,
0
)
;
var
scale
=
yAxis
.
axis
.
scale
;
var
ticks
=
scale
.
getTicks
();
const
yAxis
=
chart
.
getModel
().
getComponent
(
'
yAxis
'
,
0
)
as
CartesianAxisModel
;
const
scale
=
yAxis
.
axis
.
scale
;
const
ticks
=
scale
.
getTicks
();
expect
(
ticks
[
0
]).
toEqual
(
min
);
expect
(
ticks
[
ticks
.
length
-
1
]).
toEqual
(
max
);
expect
(
ticks
[
0
]
.
value
).
toEqual
(
min
);
expect
(
ticks
[
ticks
.
length
-
1
]
.
value
).
toEqual
(
max
);
});
it
(
'
ticks_small_value
'
,
function
()
{
...
...
@@ -87,16 +91,16 @@ describe('scale_interval', function () {
]
});
var
yAxis
=
chart
.
getModel
().
getComponent
(
'
yAxis
'
,
0
)
;
var
scale
=
yAxis
.
axis
.
s
cale
;
var
ticks
=
scale
.
getTicks
();
var
labels
=
yAxis
.
axis
.
getViewLabels
().
map
(
function
(
item
)
{
const
yAxis
=
chart
.
getModel
().
getComponent
(
'
yAxis
'
,
0
)
as
CartesianAxisModel
;
const
scale
=
yAxis
.
axis
.
scale
as
IntervalS
cale
;
const
ticks
=
scale
.
getTicks
();
const
labels
=
yAxis
.
axis
.
getViewLabels
().
map
(
function
(
item
)
{
return
item
.
formattedLabel
;
});
var
labelPrecisioned
=
scale
.
getLabel
(
0.0000005
,
{
precision
:
10
});
const
labelPrecisioned
=
scale
.
getLabel
({
value
:
0.0000005
},
{
precision
:
10
});
expect
(
ticks
).
toEqual
(
expect
(
ticks
.
map
(
tick
=>
tick
.
value
)
).
toEqual
(
[
0
,
0.0000005
,
0.000001
,
0.0000015
,
0.000002
,
0.0000025
,
0.000003
,
0.0000035
]
);
expect
(
labels
).
toEqual
(
...
...
@@ -110,51 +114,51 @@ describe('scale_interval', function () {
describe
(
'
ticks
'
,
function
()
{
function
randomNumber
(
quantity
)
{
function
randomNumber
(
quantity
:
number
):
number
{
return
(
Math
.
random
()
-
0.5
)
*
Math
.
pow
(
10
,
(
Math
.
random
()
-
0.5
)
*
quantity
);
}
function
doSingleTest
(
extent
,
splitNumber
)
{
var
result
=
scaleHelper
.
intervalScaleNiceTicks
(
extent
,
splitNumber
);
var
intervalPrecision
=
result
.
intervalPrecision
;
var
i
nterval
=
result
.
interval
;
var
niceTickExtent
=
result
.
niceTickExtent
;
function
doSingleTest
(
extent
:
[
number
,
number
],
splitNumber
:
number
):
void
{
const
result
=
intervalScaleNiceTicks
(
extent
,
splitNumber
);
const
intervalPrecision
=
result
.
intervalPrecision
;
const
resultI
nterval
=
result
.
interval
;
const
niceTickExtent
=
result
.
niceTickExtent
;
expect
(
i
nterval
).
toBeFinite
(
);
expect
(
i
ntervalPrecision
).
toBeFinite
(
);
expect
(
niceTickExtent
[
0
]).
toBeFinite
(
);
expect
(
niceTickExtent
[
1
]).
toBeFinite
(
);
expect
(
i
sValueFinite
(
resultInterval
)).
toEqual
(
true
);
expect
(
i
sValueFinite
(
intervalPrecision
)).
toEqual
(
true
);
expect
(
isValueFinite
(
niceTickExtent
[
0
])).
toEqual
(
true
);
expect
(
isValueFinite
(
niceTickExtent
[
1
])).
toEqual
(
true
);
expect
(
niceTickExtent
[
0
]).
toBeG
eaterThanOrEqualTo
(
extent
[
0
]);
expect
(
niceTickExtent
[
0
]).
toBeG
reaterThanOrEqual
(
extent
[
0
]);
expect
(
niceTickExtent
[
1
]).
not
.
toBeGreaterThan
(
extent
[
1
]);
expect
(
niceTickExtent
[
1
]).
toBeG
eaterThanOrEqualTo
(
niceTickExtent
[
1
]);
expect
(
niceTickExtent
[
1
]).
toBeG
reaterThanOrEqual
(
niceTickExtent
[
1
]);
var
interval
=
new
IntervalScale
();
const
interval
=
new
IntervalScale
();
interval
.
setExtent
(
extent
[
0
],
extent
[
1
]);
interval
.
niceExtent
({
fixMin
:
true
,
fixMax
:
true
,
splitNumber
});
var
ticks
=
interval
.
getTicks
();
const
ticks
=
interval
.
getTicks
();
expect
(
ticks
).
not
.
toBeEmptyArray
(
);
expect
(
ticks
[
0
]).
toEqual
(
extent
[
0
]);
expect
(
ticks
[
ticks
.
length
-
1
]).
toEqual
(
extent
[
1
]);
expect
(
ticks
.
length
>
0
);
expect
(
ticks
[
0
]
.
value
).
toEqual
(
extent
[
0
]);
expect
(
ticks
[
ticks
.
length
-
1
]
.
value
).
toEqual
(
extent
[
1
]);
for
(
var
i
=
1
;
i
<
ticks
.
length
;
i
++
)
{
expect
(
ticks
[
i
-
1
]
).
not
.
toBeGeaterThanOrEqualTo
(
ticks
[
i
]
);
for
(
let
i
=
1
;
i
<
ticks
.
length
;
i
++
)
{
expect
(
ticks
[
i
-
1
]
.
value
).
not
.
toBeGreaterThanOrEqual
(
ticks
[
i
].
value
);
if
(
ticks
[
i
]
!==
extent
[
0
]
&&
ticks
[
i
]
!==
extent
[
1
])
{
var
tickPrecision
=
numberUtil
.
getPrecisionSafe
(
ticks
[
i
]
);
if
(
ticks
[
i
]
.
value
!==
extent
[
0
]
&&
ticks
[
i
].
value
!==
extent
[
1
])
{
const
tickPrecision
=
getPrecisionSafe
(
ticks
[
i
].
value
);
expect
(
tickPrecision
).
not
.
toBeGreaterThan
(
intervalPrecision
);
}
}
}
function
doRandomTest
(
count
,
splitNumber
,
quantity
)
{
for
(
var
i
=
0
;
i
<
count
;
i
++
)
{
var
extent
=
[];
function
doRandomTest
(
count
:
number
,
splitNumber
:
number
,
quantity
:
number
):
void
{
for
(
let
i
=
0
;
i
<
count
;
i
++
)
{
const
extent
:
number
[]
=
[];
extent
[
0
]
=
randomNumber
(
quantity
);
extent
[
1
]
=
extent
[
0
]
+
randomNumber
(
quantity
);
if
(
extent
[
1
]
===
extent
[
0
])
{
...
...
@@ -163,7 +167,7 @@ describe('scale_interval', function () {
if
(
extent
[
0
]
>
extent
[
1
])
{
extent
.
reverse
();
}
doSingleTest
(
extent
,
splitNumber
);
doSingleTest
(
extent
as
[
number
,
number
]
,
splitNumber
);
}
}
...
...
test/ut/spec/util/graphic.test.ts
浏览文件 @
c6eecfe2
...
...
@@ -18,67 +18,70 @@
* under the License.
*/
const
graphic
=
require
(
'
../../../../lib/util/graphic
'
);
import
{
subPixelOptimize
,
subPixelOptimizeLine
,
subPixelOptimizeRect
}
from
'
zrender/src/graphic/helper/subPixelOptimize
'
;
import
{
lineLineIntersect
}
from
'
../../../../src/util/graphic
'
;
describe
(
'
util/graphic
'
,
function
()
{
describe
(
'
subPixelOptimize
'
,
function
()
{
it
(
'
subPixelOptimize_base
'
,
function
(
done
)
{
expect
(
graphic
.
subPixelOptimize
(
5
,
1
)).
toEqual
(
4.5
);
expect
(
graphic
.
subPixelOptimize
(
5
,
2
)).
toEqual
(
5
);
expect
(
graphic
.
subPixelOptimize
(
5
,
43
)).
toEqual
(
4.5
);
expect
(
graphic
.
subPixelOptimize
(
7.5
,
1
)).
toEqual
(
7.5
);
expect
(
graphic
.
subPixelOptimize
(
7.5
,
2
)).
toEqual
(
7
);
expect
(
graphic
.
subPixelOptimize
(
14
,
1
,
true
)).
toEqual
(
14.5
);
expect
(
graphic
.
subPixelOptimize
(
14
,
2
,
true
)).
toEqual
(
14
);
expect
(
graphic
.
subPixelOptimize
(
-
11
,
1
)).
toEqual
(
-
11.5
);
expect
(
graphic
.
subPixelOptimize
(
-
11
,
2
)).
toEqual
(
-
11
);
expect
(
graphic
.
subPixelOptimize
(
0
,
2
)).
toEqual
(
0
);
expect
(
graphic
.
subPixelOptimize
(
0
,
1
)).
toEqual
(
-
0.5
);
expect
(
graphic
.
subPixelOptimize
(
5
,
0
)).
toEqual
(
5
);
done
();
it
(
'
subPixelOptimize_base
'
,
function
()
{
expect
(
subPixelOptimize
(
5
,
1
)).
toEqual
(
4.5
);
expect
(
subPixelOptimize
(
5
,
2
)).
toEqual
(
5
);
expect
(
subPixelOptimize
(
5
,
43
)).
toEqual
(
4.5
);
expect
(
subPixelOptimize
(
7.5
,
1
)).
toEqual
(
7.5
);
expect
(
subPixelOptimize
(
7.5
,
2
)).
toEqual
(
7
);
expect
(
subPixelOptimize
(
14
,
1
,
true
)).
toEqual
(
14.5
);
expect
(
subPixelOptimize
(
14
,
2
,
true
)).
toEqual
(
14
);
expect
(
subPixelOptimize
(
-
11
,
1
)).
toEqual
(
-
11.5
);
expect
(
subPixelOptimize
(
-
11
,
2
)).
toEqual
(
-
11
);
expect
(
subPixelOptimize
(
0
,
2
)).
toEqual
(
0
);
expect
(
subPixelOptimize
(
0
,
1
)).
toEqual
(
-
0.5
);
expect
(
subPixelOptimize
(
5
,
0
)).
toEqual
(
5
);
});
it
(
'
subPixelOptimize_line
'
,
function
(
done
)
{
function
doSubPixelOptimizeLine
(
x
,
y
,
width
,
height
,
lineWidth
)
{
return
graphic
.
subPixelOptimizeLine
(
makeParam
(
x
,
y
,
width
,
height
,
lineWidth
));
it
(
'
subPixelOptimize_line
'
,
function
()
{
function
doSubPixelOptimizeLine
(
x
:
number
,
y
:
number
,
width
:
number
,
height
:
number
,
lineWidth
:
number
)
{
const
params
=
makeParam
(
x
,
y
,
width
,
height
,
lineWidth
);
return
subPixelOptimizeLine
(
params
.
shape
,
params
.
shape
,
params
.
style
);
}
function
makeParam
(
x1
,
y1
,
x2
,
y2
,
lineWidth
)
{
function
makeParam
(
x1
:
number
,
y1
:
number
,
x2
:
number
,
y2
:
number
,
lineWidth
:
number
)
{
return
{
shape
:
{
x1
:
x1
,
y1
:
y1
,
x2
:
x2
,
y2
:
y2
},
style
:
{
lineWidth
:
lineWidth
}
};
}
expect
(
doSubPixelOptimizeLine
(
5
,
11
,
3
,
7
,
1
)).
toEqual
(
makeParam
(
5
,
11
,
3
,
7
,
1
));
expect
(
doSubPixelOptimizeLine
(
5
,
11
,
5
,
7
,
1
)).
toEqual
(
makeParam
(
5.5
,
11
,
5.5
,
7
,
1
));
expect
(
doSubPixelOptimizeLine
(
5
,
11
,
5
,
7
,
2
)).
toEqual
(
makeParam
(
5
,
11
,
5
,
7
,
2
));
expect
(
doSubPixelOptimizeLine
(
5
,
11
,
15
,
11
,
1
)).
toEqual
(
makeParam
(
5
,
11.5
,
15
,
11.5
,
1
));
expect
(
doSubPixelOptimizeLine
(
5
,
11
,
15
,
11
,
2
)).
toEqual
(
makeParam
(
5
,
11
,
15
,
11
,
2
));
expect
(
doSubPixelOptimizeLine
(
5
,
11
,
15
,
11
,
3
)).
toEqual
(
makeParam
(
5
,
11.5
,
15
,
11.5
,
3
));
expect
(
doSubPixelOptimizeLine
(
5
,
11
,
15
,
11.5
,
3
)).
toEqual
(
makeParam
(
5
,
11
,
15
,
11.5
,
3
));
expect
(
doSubPixelOptimizeLine
(
5
,
11.5
,
15
,
11.5
,
3
)).
toEqual
(
makeParam
(
5
,
11.5
,
15
,
11.5
,
3
));
expect
(
doSubPixelOptimizeLine
(
5
,
11.5
,
15
,
11.5
,
4
)).
toEqual
(
makeParam
(
5
,
12
,
15
,
12
,
4
));
done
();
expect
(
doSubPixelOptimizeLine
(
5
,
11
,
3
,
7
,
1
)).
toEqual
(
makeParam
(
5
,
11
,
3
,
7
,
1
).
shape
);
expect
(
doSubPixelOptimizeLine
(
5
,
11
,
5
,
7
,
1
)).
toEqual
(
makeParam
(
5.5
,
11
,
5.5
,
7
,
1
).
shape
);
expect
(
doSubPixelOptimizeLine
(
5
,
11
,
5
,
7
,
2
)).
toEqual
(
makeParam
(
5
,
11
,
5
,
7
,
2
).
shape
);
expect
(
doSubPixelOptimizeLine
(
5
,
11
,
15
,
11
,
1
)).
toEqual
(
makeParam
(
5
,
11.5
,
15
,
11.5
,
1
).
shape
);
expect
(
doSubPixelOptimizeLine
(
5
,
11
,
15
,
11
,
2
)).
toEqual
(
makeParam
(
5
,
11
,
15
,
11
,
2
).
shape
);
expect
(
doSubPixelOptimizeLine
(
5
,
11
,
15
,
11
,
3
)).
toEqual
(
makeParam
(
5
,
11.5
,
15
,
11.5
,
3
).
shape
);
expect
(
doSubPixelOptimizeLine
(
5
,
11
,
15
,
11.5
,
3
)).
toEqual
(
makeParam
(
5
,
11
,
15
,
11.5
,
3
).
shape
);
expect
(
doSubPixelOptimizeLine
(
5
,
11.5
,
15
,
11.5
,
3
)).
toEqual
(
makeParam
(
5
,
11.5
,
15
,
11.5
,
3
).
shape
);
expect
(
doSubPixelOptimizeLine
(
5
,
11.5
,
15
,
11.5
,
4
)).
toEqual
(
makeParam
(
5
,
12
,
15
,
12
,
4
).
shape
);
});
it
(
'
subPixelOptimize_rect
'
,
function
(
done
)
{
function
doSubPixelOptimizeRect
(
x
,
y
,
width
,
height
,
lineWidth
)
{
return
graphic
.
subPixelOptimizeRect
(
makeParam
(
x
,
y
,
width
,
height
,
lineWidth
));
it
(
'
subPixelOptimize_rect
'
,
function
()
{
function
doSubPixelOptimizeRect
(
x
:
number
,
y
:
number
,
width
:
number
,
height
:
number
,
lineWidth
:
number
)
{
const
params
=
makeParam
(
x
,
y
,
width
,
height
,
lineWidth
);
return
subPixelOptimizeRect
(
params
.
shape
,
params
.
shape
,
params
.
style
);
}
function
makeParam
(
x
,
y
,
width
,
height
,
lineWidth
)
{
function
makeParam
(
x
:
number
,
y
:
number
,
width
:
number
,
height
:
number
,
lineWidth
:
number
)
{
return
{
shape
:
{
x
:
x
,
y
:
y
,
width
:
width
,
height
:
height
},
style
:
{
lineWidth
:
lineWidth
}
};
}
expect
(
doSubPixelOptimizeRect
(
5
,
11
,
3
,
7
,
1
)).
toEqual
(
makeParam
(
5.5
,
11.5
,
2
,
6
,
1
));
expect
(
doSubPixelOptimizeRect
(
5
,
11
,
3
,
7
,
2
)).
toEqual
(
makeParam
(
5
,
11
,
3
,
7
,
2
));
expect
(
doSubPixelOptimizeRect
(
5
,
11
,
3
,
7
,
3
)).
toEqual
(
makeParam
(
5.5
,
11.5
,
2
,
6
,
3
));
expect
(
doSubPixelOptimizeRect
(
5
,
11
,
3
,
7
,
1
)).
toEqual
(
makeParam
(
5.5
,
11.5
,
2
,
6
,
1
)
.
shape
);
expect
(
doSubPixelOptimizeRect
(
5
,
11
,
3
,
7
,
2
)).
toEqual
(
makeParam
(
5
,
11
,
3
,
7
,
2
)
.
shape
);
expect
(
doSubPixelOptimizeRect
(
5
,
11
,
3
,
7
,
3
)).
toEqual
(
makeParam
(
5.5
,
11.5
,
2
,
6
,
3
)
.
shape
);
// Boundary value tests
expect
(
doSubPixelOptimizeRect
(
5
,
11
,
1
,
7
,
1
)).
toEqual
(
makeParam
(
5.5
,
11.5
,
1
,
6
,
1
));
expect
(
doSubPixelOptimizeRect
(
5
,
11
,
1
,
0
,
1
)).
toEqual
(
makeParam
(
5.5
,
11.5
,
1
,
0
,
1
));
done
();
expect
(
doSubPixelOptimizeRect
(
5
,
11
,
1
,
7
,
1
)).
toEqual
(
makeParam
(
5.5
,
11.5
,
1
,
6
,
1
).
shape
);
expect
(
doSubPixelOptimizeRect
(
5
,
11
,
1
,
0
,
1
)).
toEqual
(
makeParam
(
5.5
,
11.5
,
1
,
0
,
1
).
shape
);
});
});
...
...
@@ -86,20 +89,20 @@ describe('util/graphic', function () {
describe
(
'
lineLineIntersect
'
,
function
()
{
it
(
'
extreme
'
,
function
()
{
expect
(
graphic
.
lineLineIntersect
(
10
,
10
,
30
,
30
,
10
,
10
,
10
,
10
)).
toEqual
(
false
);
expect
(
lineLineIntersect
(
10
,
10
,
30
,
30
,
10
,
10
,
10
,
10
)).
toEqual
(
false
);
});
it
(
'
parallel and colinear
'
,
function
()
{
expect
(
graphic
.
lineLineIntersect
(
10
,
20
,
30
,
40
,
100
,
220
,
120
,
240
)).
toEqual
(
false
);
expect
(
graphic
.
lineLineIntersect
(
10
,
10
,
30
,
30
,
40
,
40
,
50
,
50
)).
toEqual
(
false
);
expect
(
graphic
.
lineLineIntersect
(
10
,
10
,
30
,
30
,
10
,
10
,
30
,
30
)).
toEqual
(
false
);
expect
(
graphic
.
lineLineIntersect
(
10
,
10
,
30
,
30
,
20
,
20
,
30
,
30
)).
toEqual
(
false
);
expect
(
graphic
.
lineLineIntersect
(
10
,
10
,
30
,
30
,
20
,
20
,
22
,
22
)).
toEqual
(
false
);
expect
(
lineLineIntersect
(
10
,
20
,
30
,
40
,
100
,
220
,
120
,
240
)).
toEqual
(
false
);
expect
(
lineLineIntersect
(
10
,
10
,
30
,
30
,
40
,
40
,
50
,
50
)).
toEqual
(
false
);
expect
(
lineLineIntersect
(
10
,
10
,
30
,
30
,
10
,
10
,
30
,
30
)).
toEqual
(
false
);
expect
(
lineLineIntersect
(
10
,
10
,
30
,
30
,
20
,
20
,
30
,
30
)).
toEqual
(
false
);
expect
(
lineLineIntersect
(
10
,
10
,
30
,
30
,
20
,
20
,
22
,
22
)).
toEqual
(
false
);
});
it
(
'
intersect
'
,
function
()
{
expect
(
graphic
.
lineLineIntersect
(
10
,
20
,
30
,
40
,
12
,
20
,
30
,
40
)).
toEqual
(
true
);
expect
(
graphic
.
lineLineIntersect
(
10
,
20
,
30
,
40
,
12
,
20
,
20
,
42
)).
toEqual
(
true
);
expect
(
lineLineIntersect
(
10
,
20
,
30
,
40
,
12
,
20
,
30
,
40
)).
toEqual
(
true
);
expect
(
lineLineIntersect
(
10
,
20
,
30
,
40
,
12
,
20
,
20
,
42
)).
toEqual
(
true
);
});
});
...
...
test/ut/spec/util/layout.test.ts
浏览文件 @
c6eecfe2
...
...
@@ -17,22 +17,25 @@
* specific language governing permissions and limitations
* under the License.
*/
const
layoutUtil
=
require
(
'
../../../../lib/util/layout
'
);
// import { Dictionary } from 'zrender/src/core/types';
import
{
mergeLayoutParam
}
from
'
../../../../src/util/layout
'
;
import
{
BoxLayoutOptionMixin
}
from
'
../../../../src/util/types
'
;
describe
(
'
util/number
'
,
function
()
{
describe
(
'
mergeLayoutParam
'
,
function
()
{
// The given obj has exactly the given props, has no other props.
function
expectPropsEqual
(
obj
,
props
)
{
function
expectPropsEqual
(
obj
:
object
,
props
:
object
):
void
{
expect
(
propContain
(
obj
,
props
)
&&
propContain
(
props
,
obj
)).
toEqual
(
true
);
}
function
propContain
(
more
,
less
)
{
for
(
var
key
in
more
)
{
function
propContain
(
more
:
object
,
less
:
object
):
boolean
{
for
(
const
key
in
more
)
{
if
(
more
.
hasOwnProperty
(
key
))
{
if
(
more
[
key
]
!==
less
[
key
]
&&
!
(
more
[
key
]
==
null
&&
less
[
key
]
==
null
)
if
(
(
more
as
any
)[
key
]
!==
(
less
as
any
)
[
key
]
&&
!
(
(
more
as
any
)[
key
]
==
null
&&
(
less
as
any
)
[
key
]
==
null
)
)
{
return
false
;
}
...
...
@@ -41,9 +44,9 @@ describe('util/number', function () {
return
true
;
}
function
shadowClone
(
obj
)
{
var
newObj
=
{}
;
for
(
var
key
in
obj
)
{
function
shadowClone
<
T
extends
object
>
(
obj
:
T
):
T
{
const
newObj
=
{}
as
T
;
for
(
const
key
in
obj
)
{
if
(
obj
.
hasOwnProperty
(
key
))
{
newObj
[
key
]
=
obj
[
key
];
}
...
...
@@ -53,18 +56,23 @@ describe('util/number', function () {
it
(
'
all
'
,
function
()
{
function
testMerge
(
targetOption
,
newOption
,
result
,
resultIgnoreSize
)
{
var
t1
=
shadowClone
(
targetOption
);
var
t2
=
shadowClone
(
targetOption
);
var
n1
=
shadowClone
(
newOption
);
var
n2
=
shadowClone
(
newOption
);
layoutUtil
.
mergeLayoutParam
(
t1
,
n1
);
layoutUtil
.
mergeLayoutParam
(
t2
,
n2
,
{
ignoreSize
:
true
});
function
testMerge
(
targetOption
:
BoxLayoutOptionMixin
,
newOption
:
BoxLayoutOptionMixin
,
result
:
BoxLayoutOptionMixin
,
resultIgnoreSize
?:
BoxLayoutOptionMixin
)
{
const
t1
=
shadowClone
(
targetOption
);
const
t2
=
shadowClone
(
targetOption
);
const
n1
=
shadowClone
(
newOption
);
const
n2
=
shadowClone
(
newOption
);
mergeLayoutParam
(
t1
,
n1
);
mergeLayoutParam
(
t2
,
n2
,
{
ignoreSize
:
true
});
expectPropsEqual
(
t1
,
result
);
expectPropsEqual
(
t2
,
resultIgnoreSize
||
result
);
}
function
singleValueAdd
(
val
)
{
function
singleValueAdd
(
val
:
number
|
string
):
void
{
testMerge
({},
{
width
:
val
},
{
width
:
val
});
testMerge
({},
{
left
:
val
},
{
left
:
val
});
testMerge
({},
{
right
:
val
},
{
right
:
val
});
...
...
@@ -79,7 +87,7 @@ describe('util/number', function () {
singleValueAdd
(
'
right
'
);
singleValueAdd
(
'
center
'
);
function
singleValueReplace
(
val
)
{
function
singleValueReplace
(
val
:
number
|
string
):
void
{
testMerge
({
width
:
-
999
},
{
width
:
val
},
{
width
:
val
});
testMerge
({
left
:
-
999
},
{
left
:
val
},
{
left
:
val
});
testMerge
({
right
:
-
999
},
{
right
:
val
},
{
right
:
val
});
...
...
test/ut/spec/util/model.test.ts
浏览文件 @
c6eecfe2
...
...
@@ -18,20 +18,21 @@
* under the License.
*/
const
modelUtil
=
require
(
'
../../../../lib/util/model
'
);
import
{
compressBatches
}
from
'
../../../../src/util/model
'
;
describe
(
'
util/model
'
,
function
()
{
describe
(
'
compressBatches
'
,
function
()
{
function
item
(
seriesId
,
dataIndex
)
{
function
item
(
seriesId
:
number
|
string
,
dataIndex
:
number
|
number
[]
)
{
return
{
seriesId
,
dataIndex
};
}
it
(
'
base
'
,
function
()
{
// Remove dupliate between A and B
expect
(
modelUtil
.
compressBatches
(
expect
(
compressBatches
(
[
item
(
3
,
4
),
item
(
3
,
5
),
item
(
4
,
5
)],
[
item
(
4
,
6
),
item
(
4
,
5
),
item
(
3
,
3
),
item
(
3
,
4
)]
)).
toEqual
([
...
...
@@ -40,7 +41,7 @@ describe('util/model', function () {
]);
// Compress
expect
(
modelUtil
.
compressBatches
(
expect
(
compressBatches
(
[
item
(
3
,
4
),
item
(
3
,
6
),
item
(
3
,
5
),
item
(
4
,
5
)],
[
item
(
4
,
6
),
item
(
4
,
5
),
item
(
3
,
3
),
item
(
3
,
4
),
item
(
4
,
7
)]
)).
toEqual
([
...
...
@@ -49,7 +50,7 @@ describe('util/model', function () {
]);
// Remove duplicate in themselves
expect
(
modelUtil
.
compressBatches
(
expect
(
compressBatches
(
[
item
(
3
,
4
),
item
(
3
,
6
),
item
(
3
,
5
),
item
(
4
,
5
)],
[
item
(
4
,
6
),
item
(
4
,
5
),
item
(
3
,
3
),
item
(
3
,
4
),
item
(
4
,
7
),
item
(
4
,
6
)]
)).
toEqual
([
...
...
@@ -58,7 +59,7 @@ describe('util/model', function () {
]);
// dataIndex is array
expect
(
modelUtil
.
compressBatches
(
expect
(
compressBatches
(
[
item
(
3
,
[
4
,
5
,
8
]),
item
(
4
,
4
),
item
(
3
,
[
5
,
7
,
7
])],
[
item
(
3
,
[
8
,
9
])]
)).
toEqual
([
...
...
@@ -67,14 +68,14 @@ describe('util/model', function () {
]);
// empty
expect
(
modelUtil
.
compressBatches
(
expect
(
compressBatches
(
[
item
(
3
,
[
4
,
5
,
8
]),
item
(
4
,
4
),
item
(
3
,
[
5
,
7
,
7
])],
[]
)).
toEqual
([
[
item
(
'
3
'
,
[
4
,
5
,
7
,
8
]),
item
(
'
4
'
,
[
4
])],
[]
]);
expect
(
modelUtil
.
compressBatches
(
expect
(
compressBatches
(
[],
[
item
(
3
,
[
4
,
5
,
8
]),
item
(
4
,
4
),
item
(
3
,
[
5
,
7
,
7
])]
)).
toEqual
([
...
...
@@ -83,7 +84,7 @@ describe('util/model', function () {
]);
// should not has empty array
expect
(
modelUtil
.
compressBatches
(
expect
(
compressBatches
(
[
item
(
3
,
[
4
,
5
,
8
])],
[
item
(
3
,
[
4
,
5
,
8
])]
)).
toEqual
([
...
...
test/ut/spec/util/number.test.ts
浏览文件 @
c6eecfe2
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录