vector_test.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. module("lunr.Vector")
  2. test("calculating the magnitude of a vector", function () {
  3. var vector = new lunr.Vector,
  4. elements = [4,5,6]
  5. elements.forEach(function (el, i) { vector.insert(i, el) })
  6. equal(vector.magnitude(), Math.sqrt(77))
  7. })
  8. test("calculating the dot product with another vector", function () {
  9. var v1 = new lunr.Vector,
  10. v2 = new lunr.Vector,
  11. els1 = [1, 3, -5],
  12. els2 = [4, -2, -1]
  13. els1.forEach(function (el, i) { v1.insert(i, el) })
  14. els2.forEach(function (el, i) { v2.insert(i, el) })
  15. equal(v1.dot(v2), 3)
  16. })
  17. test("calculating the similarity between two vectors", function () {
  18. var v1 = new lunr.Vector,
  19. v2 = new lunr.Vector,
  20. els1 = [1, 3, -5],
  21. els2 = [4, -2, -1]
  22. els1.forEach(function (el, i) { v1.insert(i, el) })
  23. els2.forEach(function (el, i) { v2.insert(i, el) })
  24. var similarity = v1.similarity(v2),
  25. roundedSimilarity = Math.round(similarity * 1000) / 1000
  26. equal(roundedSimilarity, 0.111)
  27. })
  28. test("inserting an element invalidates the magnitude cache", function () {
  29. var vector = new lunr.Vector,
  30. elements = [4,5,6]
  31. elements.forEach(function (el, i) { vector.insert(i, el) })
  32. equal(vector.magnitude(), Math.sqrt(77))
  33. vector.insert(3, 7)
  34. equal(vector.magnitude(), Math.sqrt(126))
  35. })
  36. test("inserted elements are kept in index order", function () {
  37. var vector = new lunr.Vector,
  38. elements = [6,5,4]
  39. vector.insert(2, 4)
  40. vector.insert(1, 5)
  41. vector.insert(0, 6)
  42. equal(vector.list.idx, 0)
  43. equal(vector.list.next.idx, 1)
  44. equal(vector.list.next.next.idx, 2)
  45. })