srfi-4.test 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. ;;;; srfi-4.test --- Test suite for Guile's SRFI-4 functions. -*- scheme -*-
  2. ;;;; Martin Grabmueller, 2001-06-26
  3. ;;;;
  4. ;;;; Copyright (C) 2001, 2006 Free Software Foundation, Inc.
  5. ;;;;
  6. ;;;; This program is free software; you can redistribute it and/or modify
  7. ;;;; it under the terms of the GNU General Public License as published by
  8. ;;;; the Free Software Foundation; either version 2, or (at your option)
  9. ;;;; any later version.
  10. ;;;;
  11. ;;;; This program is distributed in the hope that it will be useful,
  12. ;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. ;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. ;;;; GNU General Public License for more details.
  15. ;;;;
  16. ;;;; You should have received a copy of the GNU General Public License
  17. ;;;; along with this software; see the file COPYING. If not, write to
  18. ;;;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
  19. ;;;; Boston, MA 02110-1301 USA
  20. (use-modules (srfi srfi-4)
  21. (test-suite lib))
  22. (with-test-prefix "u8 vectors"
  23. (pass-if "u8vector? success"
  24. (u8vector? (u8vector)))
  25. (pass-if "u8vector? failure"
  26. (not (u8vector? (s8vector))))
  27. (pass-if "u8vector-length success 1"
  28. (= (u8vector-length (u8vector)) 0))
  29. (pass-if "u8vector-length success 2"
  30. (= (u8vector-length (u8vector 3)) 1))
  31. (pass-if "u8vector-length failure"
  32. (not (= (u8vector-length (u8vector 3)) 3)))
  33. (pass-if "u8vector-ref"
  34. (= (u8vector-ref (u8vector 1 2 3) 1) 2))
  35. (pass-if "u8vector-set!/ref"
  36. (= (let ((s (make-u8vector 10 0)))
  37. (u8vector-set! s 4 33)
  38. (u8vector-ref s 4)) 33))
  39. (pass-if "u8vector->list/list->u8vector"
  40. (equal? (u8vector->list (u8vector 1 2 3 4))
  41. (u8vector->list (list->u8vector '(1 2 3 4))))))
  42. (with-test-prefix "s8 vectors"
  43. (pass-if "s8vector? success"
  44. (s8vector? (s8vector)))
  45. (pass-if "s8vector? failure"
  46. (not (s8vector? (u8vector))))
  47. (pass-if "s8vector-length success 1"
  48. (= (s8vector-length (s8vector)) 0))
  49. (pass-if "s8vector-length success 2"
  50. (= (s8vector-length (s8vector -3)) 1))
  51. (pass-if "s8vector-length failure"
  52. (not (= (s8vector-length (s8vector 3)) 3)))
  53. (pass-if "s8vector-ref"
  54. (= (s8vector-ref (s8vector 1 2 3) 1) 2))
  55. (pass-if "s8vector-set!/ref"
  56. (= (let ((s (make-s8vector 10 0)))
  57. (s8vector-set! s 4 33)
  58. (s8vector-ref s 4)) 33))
  59. (pass-if "s8vector->list/list->s8vector"
  60. (equal? (s8vector->list (s8vector 1 2 3 4))
  61. (s8vector->list (list->s8vector '(1 2 3 4))))))
  62. (with-test-prefix "u16 vectors"
  63. (pass-if "u16vector? success"
  64. (u16vector? (u16vector)))
  65. (pass-if "u16vector? failure"
  66. (not (u16vector? (s16vector))))
  67. (pass-if "u16vector-length success 1"
  68. (= (u16vector-length (u16vector)) 0))
  69. (pass-if "u16vector-length success 2"
  70. (= (u16vector-length (u16vector 3)) 1))
  71. (pass-if "u16vector-length failure"
  72. (not (= (u16vector-length (u16vector 3)) 3)))
  73. (pass-if "u16vector-ref"
  74. (= (u16vector-ref (u16vector 1 2 3) 1) 2))
  75. (pass-if "u16vector-set!/ref"
  76. (= (let ((s (make-u16vector 10 0)))
  77. (u16vector-set! s 4 33)
  78. (u16vector-ref s 4)) 33))
  79. (pass-if "u16vector->list/list->u16vector"
  80. (equal? (u16vector->list (u16vector 1 2 3 4))
  81. (u16vector->list (list->u16vector '(1 2 3 4))))))
  82. (with-test-prefix "s16 vectors"
  83. (pass-if "s16vector? success"
  84. (s16vector? (s16vector)))
  85. (pass-if "s16vector? failure"
  86. (not (s16vector? (u16vector))))
  87. (pass-if "s16vector-length success 1"
  88. (= (s16vector-length (s16vector)) 0))
  89. (pass-if "s16vector-length success 2"
  90. (= (s16vector-length (s16vector -3)) 1))
  91. (pass-if "s16vector-length failure"
  92. (not (= (s16vector-length (s16vector 3)) 3)))
  93. (pass-if "s16vector-ref"
  94. (= (s16vector-ref (s16vector 1 2 3) 1) 2))
  95. (pass-if "s16vector-set!/ref"
  96. (= (let ((s (make-s16vector 10 0)))
  97. (s16vector-set! s 4 33)
  98. (s16vector-ref s 4)) 33))
  99. (pass-if "s16vector->list/list->s16vector"
  100. (equal? (s16vector->list (s16vector 1 2 3 4))
  101. (s16vector->list (list->s16vector '(1 2 3 4))))))
  102. (with-test-prefix "u32 vectors"
  103. (pass-if "u32vector? success"
  104. (u32vector? (u32vector)))
  105. (pass-if "u32vector? failure"
  106. (not (u32vector? (s32vector))))
  107. (pass-if "u32vector-length success 1"
  108. (= (u32vector-length (u32vector)) 0))
  109. (pass-if "u32vector-length success 2"
  110. (= (u32vector-length (u32vector 3)) 1))
  111. (pass-if "u32vector-length failure"
  112. (not (= (u32vector-length (u32vector 3)) 3)))
  113. (pass-if "u32vector-ref"
  114. (= (u32vector-ref (u32vector 1 2 3) 1) 2))
  115. (pass-if "u32vector-set!/ref"
  116. (= (let ((s (make-u32vector 10 0)))
  117. (u32vector-set! s 4 33)
  118. (u32vector-ref s 4)) 33))
  119. (pass-if "u32vector->list/list->u32vector"
  120. (equal? (u32vector->list (u32vector 1 2 3 4))
  121. (u32vector->list (list->u32vector '(1 2 3 4))))))
  122. (with-test-prefix "s32 vectors"
  123. (pass-if "s32vector? success"
  124. (s32vector? (s32vector)))
  125. (pass-if "s32vector? failure"
  126. (not (s32vector? (u32vector))))
  127. (pass-if "s32vector-length success 1"
  128. (= (s32vector-length (s32vector)) 0))
  129. (pass-if "s32vector-length success 2"
  130. (= (s32vector-length (s32vector -3)) 1))
  131. (pass-if "s32vector-length failure"
  132. (not (= (s32vector-length (s32vector 3)) 3)))
  133. (pass-if "s32vector-ref"
  134. (= (s32vector-ref (s32vector 1 2 3) 1) 2))
  135. (pass-if "s32vector-set!/ref"
  136. (= (let ((s (make-s32vector 10 0)))
  137. (s32vector-set! s 4 33)
  138. (s32vector-ref s 4)) 33))
  139. (pass-if "s32vector->list/list->s32vector"
  140. (equal? (s32vector->list (s32vector 1 2 3 4))
  141. (s32vector->list (list->s32vector '(1 2 3 4))))))
  142. (with-test-prefix "u64 vectors"
  143. (pass-if "u64vector? success"
  144. (u64vector? (u64vector)))
  145. (pass-if "u64vector? failure"
  146. (not (u64vector? (s64vector))))
  147. (pass-if "u64vector-length success 1"
  148. (= (u64vector-length (u64vector)) 0))
  149. (pass-if "u64vector-length success 2"
  150. (= (u64vector-length (u64vector 3)) 1))
  151. (pass-if "u64vector-length failure"
  152. (not (= (u64vector-length (u64vector 3)) 3)))
  153. (pass-if "u64vector-ref"
  154. (= (u64vector-ref (u64vector 1 2 3) 1) 2))
  155. (pass-if "u64vector-set!/ref"
  156. (= (let ((s (make-u64vector 10 0)))
  157. (u64vector-set! s 4 33)
  158. (u64vector-ref s 4)) 33))
  159. (pass-if "u64vector->list/list->u64vector"
  160. (equal? (u64vector->list (u64vector 1 2 3 4))
  161. (u64vector->list (list->u64vector '(1 2 3 4))))))
  162. (with-test-prefix "s64 vectors"
  163. (pass-if "s64vector? success"
  164. (s64vector? (s64vector)))
  165. (pass-if "s64vector? failure"
  166. (not (s64vector? (u64vector))))
  167. (pass-if "s64vector-length success 1"
  168. (= (s64vector-length (s64vector)) 0))
  169. (pass-if "s64vector-length success 2"
  170. (= (s64vector-length (s64vector -3)) 1))
  171. (pass-if "s64vector-length failure"
  172. (not (= (s64vector-length (s64vector 3)) 3)))
  173. (pass-if "s64vector-ref"
  174. (= (s64vector-ref (s64vector 1 2 3) 1) 2))
  175. (pass-if "s64vector-set!/ref"
  176. (= (let ((s (make-s64vector 10 0)))
  177. (s64vector-set! s 4 33)
  178. (s64vector-ref s 4)) 33))
  179. (pass-if "s64vector->list/list->s64vector"
  180. (equal? (s64vector->list (s64vector 1 2 3 4))
  181. (s64vector->list (list->s64vector '(1 2 3 4))))))
  182. (with-test-prefix "f32 vectors"
  183. (pass-if "f32vector? success"
  184. (f32vector? (f32vector)))
  185. (pass-if "f32vector? failure"
  186. (not (f32vector? (s8vector))))
  187. (pass-if "f32vector-length success 1"
  188. (= (f32vector-length (f32vector)) 0))
  189. (pass-if "f32vector-length success 2"
  190. (= (f32vector-length (f32vector -3)) 1))
  191. (pass-if "f32vector-length failure"
  192. (not (= (f32vector-length (f32vector 3)) 3)))
  193. (pass-if "f32vector-ref"
  194. (= (f32vector-ref (f32vector 1 2 3) 1) 2))
  195. (pass-if "f32vector-set!/ref"
  196. (= (let ((s (make-f32vector 10 0)))
  197. (f32vector-set! s 4 33)
  198. (f32vector-ref s 4)) 33))
  199. (pass-if "f32vector->list/list->f32vector"
  200. (equal? (f32vector->list (f32vector 1 2 3 4))
  201. (f32vector->list (list->f32vector '(1 2 3 4))))))
  202. (with-test-prefix "f64 vectors"
  203. (pass-if "f64vector? success"
  204. (f64vector? (f64vector)))
  205. (pass-if "f64vector? failure"
  206. (not (f64vector? (f32vector))))
  207. (pass-if "f64vector-length success 1"
  208. (= (f64vector-length (f64vector)) 0))
  209. (pass-if "f64vector-length success 2"
  210. (= (f64vector-length (f64vector -3)) 1))
  211. (pass-if "f64vector-length failure"
  212. (not (= (f64vector-length (f64vector 3)) 3)))
  213. (pass-if "f64vector-ref"
  214. (= (f64vector-ref (f64vector 1 2 3) 1) 2))
  215. (pass-if "f64vector-set!/ref"
  216. (= (let ((s (make-f64vector 10 0)))
  217. (f64vector-set! s 4 33)
  218. (f64vector-ref s 4)) 33))
  219. (pass-if "f64vector->list/list->f64vector"
  220. (equal? (f64vector->list (f64vector 1 2 3 4))
  221. (f64vector->list (list->f64vector '(1 2 3 4))))))