mirror of https://github.com/ColorlibHQ/gentelella
200 lines
8.2 KiB
JavaScript
200 lines
8.2 KiB
JavaScript
describe('util/number', function () {
|
|
|
|
var utHelper = window.utHelper;
|
|
|
|
var testCase = utHelper.prepare(['echarts/util/number']);
|
|
|
|
describe('linearMap', function () {
|
|
|
|
testCase('accuracyError', function (numberUtil) {
|
|
var range = [-15918.3, 17724.9];
|
|
var result = numberUtil.linearMap(100, [0, 100], range, true);
|
|
// Should not be 17724.899999999998.
|
|
expect(result).toEqual(range[1]);
|
|
|
|
var range = [-62.83, 83.56];
|
|
var result = numberUtil.linearMap(100, [0, 100], range, true);
|
|
// Should not be 83.55999999999999.
|
|
expect(result).toEqual(range[1]);
|
|
});
|
|
|
|
testCase('clamp', function (numberUtil) {
|
|
// (1) normal order.
|
|
var range = [-15918.3, 17724.9];
|
|
// bigger than max
|
|
var result = numberUtil.linearMap(100.1, [0, 100], range, true);
|
|
expect(result).toEqual(range[1]);
|
|
// smaller than min
|
|
var result = numberUtil.linearMap(-2, [0, 100], range, true);
|
|
expect(result).toEqual(range[0]);
|
|
// equals to max
|
|
var result = numberUtil.linearMap(100, [0, 100], range, true);
|
|
expect(result).toEqual(range[1]);
|
|
// equals to min
|
|
var result = numberUtil.linearMap(0, [0, 100], range, true);
|
|
expect(result).toEqual(range[0]);
|
|
|
|
// (2) inverse range
|
|
var range = [17724.9, -15918.3];
|
|
// bigger than max
|
|
var result = numberUtil.linearMap(102, [0, 100], range, true);
|
|
expect(result).toEqual(range[1]);
|
|
// smaller than min
|
|
var result = numberUtil.linearMap(-0.001, [0, 100], range, true);
|
|
expect(result).toEqual(range[0]);
|
|
// equals to max
|
|
var result = numberUtil.linearMap(100, [0, 100], range, true);
|
|
expect(result).toEqual(range[1]);
|
|
// equals to min
|
|
var result = numberUtil.linearMap(0, [0, 100], range, true);
|
|
expect(result).toEqual(range[0]);
|
|
|
|
// (2) inverse domain
|
|
// bigger than max, inverse domain
|
|
var range = [-15918.3, 17724.9];
|
|
// bigger than max
|
|
var result = numberUtil.linearMap(102, [100, 0], range, true);
|
|
expect(result).toEqual(range[0]);
|
|
// smaller than min
|
|
var result = numberUtil.linearMap(-0.001, [100, 0], range, true);
|
|
expect(result).toEqual(range[1]);
|
|
// equals to max
|
|
var result = numberUtil.linearMap(100, [100, 0], range, true);
|
|
expect(result).toEqual(range[0]);
|
|
// equals to min
|
|
var result = numberUtil.linearMap(0, [100, 0], range, true);
|
|
expect(result).toEqual(range[1]);
|
|
|
|
// (3) inverse domain, inverse range
|
|
var range = [17724.9, -15918.3];
|
|
// bigger than max
|
|
var result = numberUtil.linearMap(100.1, [100, 0], range, true);
|
|
expect(result).toEqual(range[0]);
|
|
// smaller than min
|
|
var result = numberUtil.linearMap(-2, [100, 0], range, true);
|
|
expect(result).toEqual(range[1]);
|
|
// equals to max
|
|
var result = numberUtil.linearMap(100, [100, 0], range, true);
|
|
expect(result).toEqual(range[0]);
|
|
// equals to min
|
|
var result = numberUtil.linearMap(0, [100, 0], range, true);
|
|
expect(result).toEqual(range[1]);
|
|
});
|
|
|
|
testCase('noClamp', function (numberUtil) {
|
|
// (1) normal order.
|
|
var range = [-15918.3, 17724.9];
|
|
// bigger than max
|
|
var result = numberUtil.linearMap(100.1, [0, 100], range, false);
|
|
expect(result).toEqual(17758.543199999996);
|
|
// smaller than min
|
|
var result = numberUtil.linearMap(-2, [0, 100], range, false);
|
|
expect(result).toEqual(-16591.164);
|
|
// equals to max
|
|
var result = numberUtil.linearMap(100, [0, 100], range, false);
|
|
expect(result).toEqual(17724.9);
|
|
// equals to min
|
|
var result = numberUtil.linearMap(0, [0, 100], range, false);
|
|
expect(result).toEqual(-15918.3);
|
|
|
|
// (2) inverse range
|
|
var range = [17724.9, -15918.3];
|
|
// bigger than max
|
|
var result = numberUtil.linearMap(102, [0, 100], range, false);
|
|
expect(result).toEqual(-16591.163999999997);
|
|
// smaller than min
|
|
var result = numberUtil.linearMap(-0.001, [0, 100], range, false);
|
|
expect(result).toEqual(17725.236432);
|
|
// equals to max
|
|
var result = numberUtil.linearMap(100, [0, 100], range, false);
|
|
expect(result).toEqual(-15918.3);
|
|
// equals to min
|
|
var result = numberUtil.linearMap(0, [0, 100], range, false);
|
|
expect(result).toEqual(17724.9);
|
|
|
|
// (2) inverse domain
|
|
// bigger than max, inverse domain
|
|
var range = [-15918.3, 17724.9];
|
|
// bigger than max
|
|
var result = numberUtil.linearMap(102, [100, 0], range, false);
|
|
expect(result).toEqual(-16591.164);
|
|
// smaller than min
|
|
var result = numberUtil.linearMap(-0.001, [100, 0], range, false);
|
|
expect(result).toEqual(17725.236432);
|
|
// equals to max
|
|
var result = numberUtil.linearMap(100, [100, 0], range, false);
|
|
expect(result).toEqual(-15918.3);
|
|
// equals to min
|
|
var result = numberUtil.linearMap(0, [100, 0], range, false);
|
|
expect(result).toEqual(17724.9);
|
|
|
|
// (3) inverse domain, inverse range
|
|
var range = [17724.9, -15918.3];
|
|
// bigger than max
|
|
var result = numberUtil.linearMap(100.1, [100, 0], range, false);
|
|
expect(result).toEqual(17758.5432);
|
|
// smaller than min
|
|
var result = numberUtil.linearMap(-2, [100, 0], range, false);
|
|
expect(result).toEqual(-16591.163999999997);
|
|
// equals to max
|
|
var result = numberUtil.linearMap(100, [100, 0], range, false);
|
|
expect(result).toEqual(17724.9);
|
|
// equals to min
|
|
var result = numberUtil.linearMap(0, [100, 0], range, false);
|
|
expect(result).toEqual(-15918.3);
|
|
});
|
|
|
|
testCase('normal', function (numberUtil) {
|
|
|
|
doTest(true);
|
|
doTest(false);
|
|
|
|
function doTest(clamp) {
|
|
// normal
|
|
var range = [444, 555];
|
|
var result = numberUtil.linearMap(40, [0, 100], range, clamp);
|
|
expect(result).toEqual(488.4);
|
|
|
|
// inverse range
|
|
var range = [555, 444];
|
|
var result = numberUtil.linearMap(40, [0, 100], range, clamp);
|
|
expect(result).toEqual(510.6);
|
|
|
|
// inverse domain and range
|
|
var range = [555, 444];
|
|
var result = numberUtil.linearMap(40, [100, 0], range, clamp);
|
|
expect(result).toEqual(488.4);
|
|
|
|
// inverse domain
|
|
var range = [444, 555];
|
|
var result = numberUtil.linearMap(40, [100, 0], range, clamp);
|
|
expect(result).toEqual(510.6);
|
|
}
|
|
});
|
|
|
|
testCase('zeroInterval', function (numberUtil) {
|
|
|
|
doTest(true);
|
|
doTest(false);
|
|
|
|
function doTest(clamp) {
|
|
// zero domain interval
|
|
var range = [444, 555];
|
|
var result = numberUtil.linearMap(40, [1212222223.2323232, 1212222223.2323232], range, clamp);
|
|
expect(result).toEqual(499.5); // half of range.
|
|
|
|
// zero range interval
|
|
var range = [1221212.1221372238, 1221212.1221372238];
|
|
var result = numberUtil.linearMap(40, [0, 100], range, clamp);
|
|
expect(result).toEqual(1221212.1221372238);
|
|
|
|
// zero domain interval and range interval
|
|
var range = [1221212.1221372238, 1221212.1221372238];
|
|
var result = numberUtil.linearMap(40, [43.55454545, 43.55454545], range, clamp);
|
|
expect(result).toEqual(1221212.1221372238);
|
|
}
|
|
})
|
|
|
|
});
|
|
|
|
}); |