test-cat.scm 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. ; Tests for (ploy cat).
  2. ; (c) Daniel Llorens - 2012-2013
  3. ; This library is free software; you can redistribute it and/or modify it under
  4. ; the terms of the GNU General Public License as published by the Free
  5. ; Software Foundation; either version 3 of the License, or (at your option) any
  6. ; later version.
  7. (import (srfi srfi-1) (srfi srfi-9) (srfi srfi-26) (ploy test) (ploy ploy) (ploy cat))
  8. ; ---------------------------------------------------------------------
  9. ; cat
  10. ; ---------------------------------------------------------------------
  11. (define A #2f64((0 1) (2 3) (4 5)))
  12. (define B #2f64((10 11) (12 13) (14 15)))
  13. (define C #2f64((20) (21) (22)))
  14. (assert (equal? (cat 0 A) A) "bad cat 0")
  15. (T-msg "bad cat 0"
  16. (cat 0 A B A)
  17. #2f64((0 1) (2 3) (4 5) (10 11) (12 13) (14 15) (0 1) (2 3) (4 5)))
  18. (T-msg "bad cat 1"
  19. (cat 1 A B C)
  20. #2f64((0 1 10 11 20) (2 3 12 13 21) (4 5 14 15 22)))
  21. (define A #2f64((0 1) (2 3) (4 5)))
  22. (define B #2f64((10 11) (12 13) (14 15)))
  23. (define C #2f64((20) (21) (22)))
  24. (T-msg "bad cat 2"
  25. #3f64(((0 10) (1 11)) ((2 12) (3 13)) ((4 14) (5 15)))
  26. (cat 2 A B))
  27. (T-msg "bad cat 3"
  28. #4f64((((0 10)) ((1 11))) (((2 12)) ((3 13))) (((4 14)) ((5 15))))
  29. (cat 3 A B))
  30. (T-msg "bad cat 3"
  31. #5f64(((((0 10 0))) (((1 11 1)))) ((((2 12 2))) (((3 13 3)))) ((((4 14 4))) (((5 15 5)))))
  32. (cat 4 A B A))
  33. (T-msg "bad example a) with cat 0" (cat 0 (i. 1 2) (i. 2 2)) #2((0 1) (0 1) (2 3)))
  34. (T-msg "bad example b) with cat 0" (cat 0 #(1 2) #(3 4 5)) #(1 2 3 4 5))
  35. (T-msg "bad example c) with cat -1" (cat -1 #(1 2) #(4 5)) #2((1 2) (4 5)))
  36. (T-msg "bad example d) with cat 1" (cat 1 #(1 2) #(4 5)) #2((1 4) (2 5)))
  37. (define a (i. 2 2))
  38. (cat! -1 a #(3 7) #(4 5))
  39. (T-msg "bad example c) with cat! -1" a #2((3 7) (4 5)))
  40. (T #(a 0 1) (cat 0 'a #(0 1)))
  41. (T #2((a 0) (a 1)) (cat 1 'a #(0 1)))
  42. (T #2((a a) (0 1)) (cat -1 'a #(0 1)))
  43. (T #2((a 0 1) (b 2 3)) (cat 1 #(a b) #2((0 1) (2 3))))
  44. (T #2((a a) (b b) (0 1) (2 3)) (cat 0 #(a b) #2((0 1) (2 3))))
  45. ; ---------------------------------------------------------------------
  46. ; icat
  47. ; ---------------------------------------------------------------------
  48. (T #(a b c) (icat 0 'a 'b 'c))
  49. (T #2((a) (b) (c)) (icat 1 'a 'b 'c))
  50. (T #(1 2 3 4 5 6) (icat 0 #(1 2 3) 4 #(5 6)))
  51. (T #2((0 1 a b) (2 3 a b)) (icat 0 #2((0 1) (2 3)) #(a b)))
  52. (T #2((0 1) (2 3) (a b)) (icat 1 #2((0 1) (2 3)) #(a b)))
  53. (assert-fail (icat 1 #2((0 1)) #(a)))
  54. (T #2((0 1 a)) (icat 0 #2((0 1)) #(a)))
  55. (T '(7 6 5 7 3 2) ($ (icat 2 (i. 7 6 5 4 3 2) (i. 3 2) (i. 5 2 3 2))))
  56. (T #2((1 a) (2 b) (3 c)) (icat -1 #(1 2 3) #(a b c)))
  57. (T #2((a x) (a y) (a z)) (icat -1 'a #(x y z)))