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