tdiff.nim 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. discard """
  2. matrix: "--mm:refc; --mm:orc"
  3. targets: "c js"
  4. """
  5. import experimental/diff
  6. import std/strutils
  7. import std/assertions
  8. proc testHelper(f: seq[Item]): string =
  9. result = ""
  10. for it in f:
  11. result.add(
  12. $it.deletedA & "." & $it.insertedB & "." & $it.startA & "." & $it.startB & "*"
  13. )
  14. proc main() =
  15. var a, b: string
  16. # Diff Self Test
  17. # test all changes
  18. a = "a,b,c,d,e,f,g,h,i,j,k,l".replace(',', '\n')
  19. b = "0,1,2,3,4,5,6,7,8,9".replace(',', '\n')
  20. doAssert(testHelper(diffText(a, b)) ==
  21. "12.10.0.0*",
  22. "all-changes test failed.")
  23. # test all same
  24. a = "a,b,c,d,e,f,g,h,i,j,k,l".replace(',', '\n')
  25. b = a
  26. doAssert(testHelper(diffText(a, b)) ==
  27. "",
  28. "all-same test failed.")
  29. # test snake
  30. a = "a,b,c,d,e,f".replace(',', '\n')
  31. b = "b,c,d,e,f,x".replace(',', '\n')
  32. doAssert(testHelper(diffText(a, b)) ==
  33. "1.0.0.0*0.1.6.5*",
  34. "snake test failed.")
  35. # 2002.09.20 - repro
  36. a = "c1,a,c2,b,c,d,e,g,h,i,j,c3,k,l".replace(',', '\n')
  37. b = "C1,a,C2,b,c,d,e,I1,e,g,h,i,j,C3,k,I2,l".replace(',', '\n')
  38. doAssert(testHelper(diffText(a, b)) ==
  39. "1.1.0.0*1.1.2.2*0.2.7.7*1.1.11.13*0.1.13.15*",
  40. "repro20020920 test failed.")
  41. # 2003.02.07 - repro
  42. a = "F".replace(',', '\n')
  43. b = "0,F,1,2,3,4,5,6,7".replace(',', '\n')
  44. doAssert(testHelper(diffText(a, b)) ==
  45. "0.1.0.0*0.7.1.2*",
  46. "repro20030207 test failed.")
  47. # Muegel - repro
  48. a = "HELLO\nWORLD"
  49. b = "\n\nhello\n\n\n\nworld\n"
  50. doAssert(testHelper(diffText(a, b)) ==
  51. "2.8.0.0*",
  52. "repro20030409 test failed.")
  53. # test some differences
  54. a = "a,b,-,c,d,e,f,f".replace(',', '\n')
  55. b = "a,b,x,c,e,f".replace(',', '\n')
  56. doAssert(testHelper(diffText(a, b)) ==
  57. "1.1.2.2*1.0.4.4*1.0.7.6*",
  58. "some-changes test failed.")
  59. # test one change within long chain of repeats
  60. a = "a,a,a,a,a,a,a,a,a,a".replace(',', '\n')
  61. b = "a,a,a,a,-,a,a,a,a,a".replace(',', '\n')
  62. doAssert(testHelper(diffText(a, b)) ==
  63. "0.1.4.4*1.0.9.10*",
  64. "long chain of repeats test failed.")
  65. main()
  66. static: main()