List.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. describe('List', function () {
  2. var utHelper = window.utHelper;
  3. var testCase = utHelper.prepare(['echarts/data/List']);
  4. describe('Data Manipulation', function () {
  5. testCase('initData 1d', function (List) {
  6. var list = new List(['x', 'y']);
  7. list.initData([10, 20, 30]);
  8. expect(list.get('x', 0)).toEqual(10);
  9. expect(list.get('x', 1)).toEqual(20);
  10. expect(list.get('x', 2)).toEqual(30);
  11. expect(list.get('y', 1)).toEqual(20);
  12. });
  13. testCase('initData 2d', function (List) {
  14. var list = new List(['x', 'y']);
  15. list.initData([[10, 15], [20, 25], [30, 35]]);
  16. expect(list.get('x', 1)).toEqual(20);
  17. expect(list.get('y', 1)).toEqual(25);
  18. });
  19. testCase('initData 2d yx', function (List) {
  20. var list = new List(['y', 'x']);
  21. list.initData([[10, 15], [20, 25], [30, 35]]);
  22. expect(list.get('x', 1)).toEqual(25);
  23. expect(list.get('y', 1)).toEqual(20);
  24. });
  25. testCase('Data with option 1d', function (List) {
  26. var list = new List(['x', 'y']);
  27. list.initData([1, {
  28. value: 2,
  29. somProp: 'foo'
  30. }]);
  31. expect(list.getItemModel(1).get('somProp')).toEqual('foo');
  32. expect(list.getItemModel(0).get('somProp')).toBeNull();
  33. });
  34. testCase('Empty data', function (List) {
  35. var list = new List(['x', 'y']);
  36. list.initData([1, '-']);
  37. expect(list.get('y', 1)).toBeNaN();
  38. });
  39. testCase('Stacked data', function (List) {
  40. var list1 = new List(['x', {
  41. name: 'y',
  42. stackable: true
  43. }]);
  44. var list2 = new List(['x', {
  45. name: 'y',
  46. stackable: true
  47. }]);
  48. list1.initData([1, '-', 2, -2]);
  49. list2.initData([1, 2, 3, 2]);
  50. list2.stackedOn = list1;
  51. expect(list2.get('y', 1, true)).toEqual(2);
  52. expect(list2.get('y', 2, true)).toEqual(5);
  53. expect(list2.get('y', 3, true)).toEqual(2);
  54. });
  55. testCase('getRawValue', function (List) {
  56. var list = new List(['x', 'y']);
  57. list.initData([1, 2, 3]);
  58. expect(list.getItemModel(1).option).toEqual(2);
  59. list.initData([[10, 15], [20, 25], [30, 35]]);
  60. expect(list.getItemModel(1).option).toEqual([20, 25]);
  61. });
  62. testCase('indexOfRawIndex', function (List) {
  63. var list = new List(['x']);
  64. list.initData([]);
  65. expect(list.indexOfRawIndex(1)).toEqual(-1);
  66. list.initData([0]);
  67. expect(list.indexOfRawIndex(0)).toEqual(0);
  68. expect(list.indexOfRawIndex(1)).toEqual(-1);
  69. list.initData([0, 1, 2, 3]);
  70. expect(list.indexOfRawIndex(1)).toEqual(1);
  71. expect(list.indexOfRawIndex(2)).toEqual(2);
  72. expect(list.indexOfRawIndex(5)).toEqual(-1);
  73. list.initData([0, 1, 2, 3, 4]);
  74. expect(list.indexOfRawIndex(2)).toEqual(2);
  75. expect(list.indexOfRawIndex(3)).toEqual(3);
  76. expect(list.indexOfRawIndex(5)).toEqual(-1);
  77. list.filterSelf(function (idx) {
  78. return idx >= 2;
  79. });
  80. expect(list.indexOfRawIndex(2)).toEqual(0);
  81. });
  82. testCase('getDataExtent', function (List) {
  83. var list = new List(['x', 'y']);
  84. list.initData([1, 2, 3]);
  85. expect(list.getDataExtent('x')).toEqual([1, 3]);
  86. expect(list.getDataExtent('y')).toEqual([1, 3]);
  87. });
  88. testCase('Data types', function (List) {
  89. var list = new List([{
  90. name: 'x',
  91. type: 'int'
  92. }, {
  93. name: 'y',
  94. type: 'float'
  95. }]);
  96. list.initData([[1.1, 1.1]]);
  97. expect(list.get('x', 0)).toEqual(1);
  98. expect(list.get('y', 0)).toBeCloseTo(1.1, 5);
  99. });
  100. testCase('map', function (List) {
  101. var list = new List(['x', 'y']);
  102. list.initData([[10, 15], [20, 25], [30, 35]]);
  103. expect(list.map(['x', 'y'], function (x, y) {
  104. return [x + 2, y + 2];
  105. }).mapArray('x', function (x) {
  106. return x;
  107. })).toEqual([12, 22, 32]);
  108. });
  109. testCase('mapArray', function (List) {
  110. var list = new List(['x', 'y']);
  111. list.initData([[10, 15], [20, 25], [30, 35]]);
  112. expect(list.mapArray(['x', 'y'], function (x, y) {
  113. return [x, y];
  114. })).toEqual([[10, 15], [20, 25], [30, 35]]);
  115. });
  116. testCase('filterSelf', function (List) {
  117. var list = new List(['x', 'y']);
  118. list.initData([[10, 15], [20, 25], [30, 35]]);
  119. expect(list.filterSelf(['x', 'y'], function (x, y) {
  120. return x < 30 && x > 10;
  121. }).mapArray('x', function (x) {
  122. return x;
  123. })).toEqual([20]);
  124. });
  125. });
  126. });