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);
}
})
});
});
|