82b47919709ab98cf502ea26ffc060e26e082f4bcd63f272047567dc73f4685b67e1e8ace1ff34b0b36d7ba18d1537523d11867911064bb44a371c5cff922c 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. const { expect } = require('chai')
  2. const {
  3. bezierCurveToPolyline,
  4. getBezierCurveLength,
  5. polylineToBezierCurve
  6. } = require('../src/index')
  7. const bezierCurve = [
  8. [20, 20],
  9. [
  10. [100, 20],[100, 80],[180,80]
  11. ]
  12. ]
  13. const polylinePrecision5 = bezierCurveToPolyline(bezierCurve)
  14. const polylinePrecision10 = bezierCurveToPolyline(bezierCurve, 10)
  15. function findNaNInArray (arr) {
  16. return arr.findIndex(n => !Number.isFinite(n)) !== -1
  17. }
  18. describe('bezierCurveToPolyline', () => {
  19. it('bezierCurveToPolyline()', () => {
  20. expect(bezierCurveToPolyline()).to.be.false
  21. })
  22. it('bezierCurveToPolyline({})', () => {
  23. expect(bezierCurveToPolyline({})).to.be.false
  24. })
  25. it(`bezierCurveToPolyline([], '1')`, () => {
  26. expect(bezierCurveToPolyline([], '1')).to.be.false
  27. })
  28. it('Return value is an array (Precision = 5)', () => {
  29. expect(polylinePrecision5).to.be.an('array')
  30. })
  31. it('Return value is an array (Precision = 10)', () => {
  32. expect(polylinePrecision10).to.be.an('array')
  33. })
  34. it('Return value length is at least 2 (Precision = 5)', () => {
  35. expect(polylinePrecision5).to.lengthOf.at.least(2)
  36. })
  37. it('Return value length is at least 2 (Precision = 10)', () => {
  38. expect(polylinePrecision10).to.lengthOf.at.least(2)
  39. })
  40. it('Return value element is an array (Precision = 5)', () => {
  41. expect(polylinePrecision5).to.satisfy(line => {
  42. return !line.find(item => !(item instanceof Array))
  43. })
  44. })
  45. it('Return value element is an array (Precision = 10)', () => {
  46. expect(polylinePrecision10).to.satisfy(line => {
  47. return !line.find(item => !(item instanceof Array))
  48. })
  49. })
  50. it('Return value element array length is 2 (Precision = 5)', () => {
  51. expect(polylinePrecision5).to.satisfy(line => {
  52. return !line.find(item => item.length !== 2)
  53. })
  54. })
  55. it('Return value element array length is 2 (Precision = 10)', () => {
  56. expect(polylinePrecision10).to.satisfy(line => {
  57. return !line.find(item => item.length !== 2)
  58. })
  59. })
  60. it('The value in the array of return value elements is a number (Precision = 5)', () => {
  61. expect(polylinePrecision5).to.satisfy(line => {
  62. return !line.find(item => item.findIndex(n => !Number.isFinite(n)) !== -1)
  63. })
  64. })
  65. it('The value in the array of return value elements is a number (Precision = 10)', () => {
  66. expect(polylinePrecision10).to.satisfy(line => {
  67. return !line.find(item => item.findIndex(n => !Number.isFinite(n)) !== -1)
  68. })
  69. })
  70. })
  71. describe('getBezierCurveLength', () => {
  72. it('getBezierCurveLength()', () => {
  73. expect(getBezierCurveLength()).to.be.false
  74. })
  75. it('getBezierCurveLength({})', () => {
  76. expect(getBezierCurveLength({})).to.be.false
  77. })
  78. it(`getBezierCurveLength([], '1')`, () => {
  79. expect(getBezierCurveLength([], '1')).to.be.false
  80. })
  81. it(`getBezierCurveLength(bezierCurve)`, () => {
  82. expect(getBezierCurveLength(bezierCurve)).to.be.finite.above(0)
  83. })
  84. it(`getBezierCurveLength(bezierCurve, 10)`, () => {
  85. expect(getBezierCurveLength(bezierCurve, 10)).to.be.finite.above(0)
  86. })
  87. })
  88. describe('polylineToBezierCurve', () => {
  89. it('polylineToBezierCurve()', () => {
  90. expect(polylineToBezierCurve()).to.be.false
  91. })
  92. it('polylineToBezierCurve({})', () => {
  93. expect(polylineToBezierCurve({})).to.be.false
  94. })
  95. it('Return value is an array (polylinePrecision5)', () => {
  96. expect(polylineToBezierCurve(polylinePrecision5)).to.be.an('array')
  97. })
  98. it('Return value is an array (polylinePrecision10)', () => {
  99. expect(polylineToBezierCurve(polylinePrecision10)).to.be.an('array')
  100. })
  101. it('Return value length is at least 2 (polylinePrecision5)', () => {
  102. expect(polylineToBezierCurve(polylinePrecision5)).to.lengthOf.at.least(2)
  103. })
  104. it('Return value length is at least 2 (polylinePrecision10)', () => {
  105. expect(polylineToBezierCurve(polylinePrecision10)).to.lengthOf.at.least(2)
  106. })
  107. it('Return value element is an array (polylinePrecision5)', () => {
  108. expect(polylineToBezierCurve(polylinePrecision5)).to.satisfy(line => {
  109. return !line.find(item => !(item instanceof Array))
  110. })
  111. })
  112. it('Return value element is an array (polylinePrecision10)', () => {
  113. expect(polylineToBezierCurve(polylinePrecision10)).to.satisfy(line => {
  114. return !line.find(item => !(item instanceof Array))
  115. })
  116. })
  117. it('Return value first element length is 2 (polylinePrecision5)', () => {
  118. expect(polylineToBezierCurve(polylinePrecision5)).to.satisfy(line => {
  119. return line[0].length === 2
  120. })
  121. })
  122. it('Return value first element length is 2 (polylinePrecision10)', () => {
  123. expect(polylineToBezierCurve(polylinePrecision10)).to.satisfy(line => {
  124. return line[0].length === 2
  125. })
  126. })
  127. it('Return value element length is 3 except first (polylinePrecision5)', () => {
  128. expect(polylineToBezierCurve(polylinePrecision5)).to.satisfy(line => {
  129. return !line.find((item, i) => {
  130. if (i === 0) return false
  131. return item.length !== 3
  132. })
  133. })
  134. })
  135. it('Return value element length is 3 except first (polylinePrecision10)', () => {
  136. expect(polylineToBezierCurve(polylinePrecision10)).to.satisfy(line => {
  137. return !line.find((item, i) => {
  138. if (i === 0) return false
  139. return item.length !== 3
  140. })
  141. })
  142. })
  143. it('The value in the array of return value elements is a number (polylinePrecision5)', () => {
  144. expect(polylineToBezierCurve(polylinePrecision5)).to.satisfy(line => {
  145. return !line.find((item, i) => {
  146. if (i === 0) {
  147. return findNaNInArray(item)
  148. } else {
  149. return item.find(itemElement => findNaNInArray(itemElement))
  150. }
  151. })
  152. })
  153. })
  154. it('The value in the array of return value elements is a number (polylinePrecision10)', () => {
  155. expect(polylineToBezierCurve(polylinePrecision10)).to.satisfy(line => {
  156. return !line.find((item, i) => {
  157. if (i === 0) {
  158. return findNaNInArray(item)
  159. } else {
  160. return item.find(itemElement => findNaNInArray(itemElement))
  161. }
  162. })
  163. })
  164. })
  165. })