/test/lib/numeric/integer/test_integer1.e

http://github.com/tybor/Liberty · Specman e · 372 lines · 340 code · 6 blank · 26 comment · 1 complexity · 7657cbb23991ad97167f47a4f0a963c6 MD5 · raw file

  1. -- This file is part of SmartEiffel The GNU Eiffel Compiler Tools and Libraries.
  2. -- See the Copyright notice at the end of this file.
  3. --
  4. class TEST_INTEGER1
  5. insert
  6. ANY
  7. PLATFORM
  8. create {}
  9. make
  10. feature {ANY}
  11. make
  12. local
  13. tmp_string: STRING; i: INTEGER
  14. do
  15. assert(1 = 1)
  16. assert(0 = 0)
  17. assert(-1 = -1)
  18. assert(0 + 1 = 1)
  19. assert(1 = 1 + 0)
  20. assert(0 - 1 = -1)
  21. assert(-1 = -1 + 0)
  22. assert(2 + 2 = 4)
  23. assert(2 + 2 /= 3)
  24. assert(2 * 2 = 4)
  25. assert(4 = 2 * 2)
  26. i := 76
  27. assert(76 = i)
  28. assert(i + 1 = 77)
  29. assert(76 = i)
  30. i := 0
  31. assert(i // 1 = 0)
  32. assert(i \\ 1 = 0)
  33. assert(i // -1 = 0)
  34. assert(i \\ -1 = 0)
  35. assert(i // 10 = 0)
  36. assert(i \\ 10 = 0)
  37. assert(i // -10 = 0)
  38. assert(i \\ -10 = 0)
  39. assert(i // Minimum_integer = 0)
  40. assert(i \\ Minimum_integer = 0)
  41. assert(i // Maximum_integer = 0)
  42. assert(i \\ Maximum_integer = 0)
  43. assert(i // (Minimum_integer + 10) = 0)
  44. assert(i \\ (Minimum_integer + 10) = 0)
  45. assert(i // (Maximum_integer - 10) = 0)
  46. assert(i \\ (Maximum_integer - 10) = 0)
  47. assert(i = 0)
  48. i := 1
  49. assert(i // 1 = 1)
  50. assert(i \\ 1 = 0)
  51. assert(i // -1 = -1)
  52. assert(i \\ -1 = 0)
  53. assert(i // 10 = 0)
  54. assert(i \\ 10 = 1)
  55. assert(i // -10 = 0)
  56. assert(i \\ -10 = 1)
  57. assert(i // Minimum_integer = 0)
  58. assert(i \\ Minimum_integer = 1)
  59. assert(i // Maximum_integer = 0)
  60. assert(i \\ Maximum_integer = 1)
  61. assert(i // (Minimum_integer + 10) = 0)
  62. assert(i \\ (Minimum_integer + 10) = 1)
  63. assert(i // (Maximum_integer - 10) = 0)
  64. assert(i \\ (Maximum_integer - 10) = 1)
  65. assert(i = 1)
  66. i := -1
  67. assert(i // 1 = -1)
  68. assert(i \\ 1 = 0)
  69. assert(i // -1 = 1)
  70. assert(i \\ -1 = 0)
  71. assert(i // 10 = -1)
  72. assert(i \\ 10 = 9)
  73. assert(i // -10 = 1)
  74. assert(i \\ -10 = 9)
  75. assert(i // Minimum_integer_32 = 1)
  76. assert(i \\ Minimum_integer = Maximum_integer)
  77. assert(i // Maximum_integer = -1)
  78. assert(i \\ Maximum_integer = Maximum_integer - 1)
  79. assert(i // (Minimum_integer + 10) = 1)
  80. assert(i \\ (Minimum_integer + 10) = Maximum_integer - 10)
  81. assert(i // (Maximum_integer - 10) = -1)
  82. assert(i \\ (Maximum_integer - 10) = Maximum_integer - 11)
  83. assert(i = -1)
  84. i := 10
  85. assert(i // 1 = 10)
  86. assert(i \\ 1 = 0)
  87. assert(i // -1 = -10)
  88. assert(i \\ -1 = 0)
  89. assert(i // 10 = 1)
  90. assert(i \\ 10 = 0)
  91. assert(i // -10 = -1)
  92. assert(i \\ -10 = 0)
  93. assert(i // Minimum_integer = 0)
  94. assert(i \\ Minimum_integer = 10)
  95. assert(i // Maximum_integer = 0)
  96. assert(i \\ Maximum_integer = 10)
  97. assert(i // (Minimum_integer + 10) = 0)
  98. assert(i \\ (Minimum_integer + 10) = 10)
  99. assert(i // (Maximum_integer - 10) = 0)
  100. assert(i \\ (Maximum_integer - 10) = 10)
  101. assert(i = 10)
  102. i := -10
  103. assert(i // 1 = -10)
  104. assert(i \\ 1 = 0)
  105. assert(i // -1 = 10)
  106. assert(i \\ -1 = 0)
  107. assert(i // 10 = -1)
  108. assert(i \\ 10 = 0)
  109. assert(i // -10 = 1)
  110. assert(i \\ -10 = 0)
  111. assert(i // Minimum_integer = 1)
  112. assert(i \\ Minimum_integer = Maximum_integer - 9)
  113. assert(i // Maximum_integer = -1)
  114. assert(i \\ Maximum_integer = Maximum_integer - 10)
  115. assert(i // (Minimum_integer + 10) = 1)
  116. assert(i \\ (Minimum_integer + 10) = Maximum_integer - 19)
  117. assert(i // (Maximum_integer - 10) = -1)
  118. assert(i \\ (Maximum_integer - 10) = Maximum_integer - 20)
  119. assert(i = -10)
  120. i := 30
  121. assert(i // 1 = 30)
  122. assert(i \\ 1 = 0)
  123. assert(i // -1 = -30)
  124. assert(i \\ -1 = 0)
  125. assert(i // 10 = 3)
  126. assert(i \\ 10 = 0)
  127. assert(i // -10 = -3)
  128. assert(i \\ -10 = 0)
  129. assert(i // Minimum_integer = 0)
  130. assert(i \\ Minimum_integer = 30)
  131. assert(i // Maximum_integer = 0)
  132. assert(i \\ Maximum_integer = 30)
  133. assert(i // (Minimum_integer + 10) = 0)
  134. assert(i \\ (Minimum_integer + 10) = 30)
  135. assert(i // (Maximum_integer - 10) = 0)
  136. assert(i \\ (Maximum_integer - 10) = 30)
  137. assert(i = 30)
  138. i := -30
  139. assert(i // 1 = -30)
  140. assert(i \\ 1 = 0)
  141. assert(i // -1 = 30)
  142. assert(i \\ -1 = 0)
  143. assert(i // 10 = -3)
  144. assert(i \\ 10 = 0)
  145. assert(i // -10 = 3)
  146. assert(i \\ -10 = 0)
  147. assert(i // Minimum_integer = 1)
  148. assert(i \\ Minimum_integer = Maximum_integer - 29)
  149. assert(i // Maximum_integer = -1)
  150. assert(i \\ Maximum_integer = Maximum_integer - 30)
  151. assert(i // (Minimum_integer + 10) = 1)
  152. assert(i \\ (Minimum_integer + 10) = Maximum_integer - 39)
  153. assert(i // (Maximum_integer - 10) = -1)
  154. assert(i \\ (Maximum_integer - 10) = Maximum_integer - 40)
  155. assert(i = -30)
  156. i := 31
  157. assert(i // 1 = 31)
  158. assert(i \\ 1 = 0)
  159. assert(i // -1 = -31)
  160. assert(i \\ -1 = 0)
  161. assert(i // 10 = 3)
  162. assert(i \\ 10 = 1)
  163. assert(i // -10 = -3)
  164. assert(i \\ -10 = 1)
  165. assert(i // Minimum_integer = 0)
  166. assert(i \\ Minimum_integer = 31)
  167. assert(i // Maximum_integer = 0)
  168. assert(i \\ Maximum_integer = 31)
  169. assert(i // (Minimum_integer + 10) = 0)
  170. assert(i \\ (Minimum_integer + 10) = 31)
  171. assert(i // (Maximum_integer - 10) = 0)
  172. assert(i \\ (Maximum_integer - 10) = 31)
  173. assert(i = 31)
  174. i := -31
  175. assert(i // 1 = -31)
  176. assert(i \\ 1 = 0)
  177. assert(i // -1 = 31)
  178. assert(i \\ -1 = 0)
  179. assert(i // 10 = -4)
  180. assert(i \\ 10 = 9)
  181. assert(i // -10 = 4)
  182. assert(i \\ -10 = 9)
  183. assert(i // Minimum_integer = 1)
  184. assert(i \\ Minimum_integer = Maximum_integer - 30)
  185. assert(i // Maximum_integer = -1)
  186. assert(i \\ Maximum_integer = Maximum_integer - 31)
  187. assert(i // (Minimum_integer + 10) = 1)
  188. assert(i \\ (Minimum_integer + 10) = Maximum_integer - 40)
  189. assert(i // (Maximum_integer - 10) = -1)
  190. assert(i \\ (Maximum_integer - 10) = Maximum_integer - 41)
  191. assert(i = -31)
  192. i := 29
  193. assert(i // 1 = 29)
  194. assert(i \\ 1 = 0)
  195. assert(i // -1 = -29)
  196. assert(i \\ -1 = 0)
  197. assert(i // 10 = 2)
  198. assert(i \\ 10 = 9)
  199. assert(i // -10 = -2)
  200. assert(i \\ -10 = 9)
  201. assert(i // Minimum_integer = 0)
  202. assert(i \\ Minimum_integer = 29)
  203. assert(i // Maximum_integer = 0)
  204. assert(i \\ Maximum_integer = 29)
  205. assert(i // (Minimum_integer + 10) = 0)
  206. assert(i \\ (Minimum_integer + 10) = 29)
  207. assert(i // (Maximum_integer - 10) = 0)
  208. assert(i \\ (Maximum_integer - 10) = 29)
  209. assert(i = 29)
  210. i := -29
  211. assert(i // 1 = -29)
  212. assert(i \\ 1 = 0)
  213. assert(i // -1 = 29)
  214. assert(i \\ -1 = 0)
  215. assert(i // 10 = -3)
  216. assert(i \\ 10 = 1)
  217. assert(i // -10 = 3)
  218. assert(i \\ -10 = 1)
  219. assert(i // Minimum_integer = 1)
  220. assert(i \\ Minimum_integer = Maximum_integer - 28)
  221. assert(i // Maximum_integer = -1)
  222. assert(i \\ Maximum_integer = Maximum_integer - 29)
  223. assert(i // (Minimum_integer + 10) = 1)
  224. assert(i \\ (Minimum_integer + 10) = Maximum_integer - 38)
  225. assert(i // (Maximum_integer - 10) = -1)
  226. assert(i \\ (Maximum_integer - 10) = Maximum_integer - 39)
  227. assert(i = -29)
  228. i := Maximum_integer
  229. assert(i // 1 = Maximum_integer)
  230. assert(i \\ 1 = 0)
  231. assert(i // -1 = -Maximum_integer)
  232. assert(i \\ -1 = 0)
  233. assert(i // 10 = 214748364)
  234. assert(i \\ 10 = 7)
  235. assert(i // -10 = -214748364)
  236. assert(i \\ -10 = 7)
  237. assert(i // Minimum_integer = 0)
  238. assert(i \\ Minimum_integer = Maximum_integer)
  239. assert(i // Maximum_integer = 1)
  240. assert(i \\ Maximum_integer = 0)
  241. assert(i // (Minimum_integer + 10) = -1)
  242. assert(i \\ (Minimum_integer + 10) = 9)
  243. assert(i // (Maximum_integer - 10) = 1)
  244. assert(i \\ (Maximum_integer - 10) = 10)
  245. assert(i = Maximum_integer)
  246. i := Minimum_integer
  247. assert(i // 1 = Minimum_integer)
  248. assert(i \\ 1 = 0)
  249. -- assert(i // -1 = -Minimum_integer) overflow !!
  250. -- *** C ANSI 99 BUG !!! (i #\\ -1) give an overflow !!!
  251. -- (Vincent Croizier, 02/11/2004) ***
  252. -- assert(i \\ -1 = 0)
  253. assert(i // 10 = -214748365)
  254. assert(i \\ 10 = 2)
  255. assert(i // -10 = 214748365)
  256. assert(i \\ -10 = 2)
  257. assert(i // Minimum_integer = 1)
  258. assert(i \\ Minimum_integer = 0)
  259. assert(i // Maximum_integer = -2)
  260. assert(i \\ Maximum_integer = Maximum_integer - 1)
  261. assert(i // (Minimum_integer + 10) = 2)
  262. assert(i \\ (Minimum_integer + 10) = Maximum_integer - 19)
  263. assert(i // (Maximum_integer - 10) = -2)
  264. assert(i \\ (Maximum_integer - 10) = Maximum_integer - 21)
  265. assert(i = Minimum_integer)
  266. assert(2 ^ 0 = 1)
  267. assert(2 ^ 1 = 2)
  268. assert(2 ^ 2 = 4)
  269. assert(2 ^ 3 = 8)
  270. assert(3 ^ 0 = 1)
  271. assert(3 ^ 1 = 3)
  272. assert(3 ^ 2 = 9)
  273. assert(3 ^ 3 = 27)
  274. assert(-3 < -1)
  275. assert(-1 < 0)
  276. assert(-1 < 1)
  277. assert(0 < 1)
  278. assert(1 < 2)
  279. assert(-3 <= -1)
  280. assert(-3 <= -3)
  281. assert(-1 <= 0)
  282. assert(-1 <= 1)
  283. assert(-1 <= -1)
  284. assert(0 <= 1)
  285. assert(1 <= 2)
  286. assert(2 <= 2)
  287. assert(not (3 <= 2))
  288. assert(3 = 3)
  289. assert(3 = +(1 + 2))
  290. assert(-3 = 3 - 6)
  291. assert(("0").is_equal(0.to_string))
  292. assert(("25").is_equal(25.to_string))
  293. assert(("-25").is_equal((-25).to_string))
  294. assert((" 25").is_equal(25.to_string_format(3)))
  295. assert((" -25").is_equal((-25).to_string_format(4)))
  296. assert('0' = 0.digit)
  297. assert('5' = 5.digit)
  298. assert('9' = 9.digit)
  299. assert(' ' = 32.to_character)
  300. assert((-25).abs = 25)
  301. assert(25.abs = 25)
  302. assert(3.max(4) = 4)
  303. assert(4.max(3) = 4)
  304. assert(3.min(4) = 3)
  305. assert(4.min(3) = 3)
  306. assert((-2).min(2) = -2)
  307. assert(2.max(-2) = 2)
  308. -- testing to_octal_in
  309. tmp_string := ""
  310. 0.to_octal_in(tmp_string)
  311. assert(tmp_string.is_equal("000"))
  312. tmp_string.clear_count
  313. 7.to_octal_in(tmp_string)
  314. assert(tmp_string.is_equal("007"))
  315. tmp_string.clear_count
  316. 8.to_octal_in(tmp_string)
  317. assert(tmp_string.is_equal("010"))
  318. tmp_string.clear_count
  319. 9.to_octal_in(tmp_string)
  320. assert(tmp_string.is_equal("011"))
  321. tmp_string.clear_count
  322. ;(-10).to_octal_in(tmp_string)
  323. assert(tmp_string.is_equal("366"))
  324. tmp_string.clear_count
  325. 400.to_octal_in(tmp_string)
  326. assert(tmp_string.is_equal("000620"))
  327. tmp_string.clear_count
  328. ;(-400).to_octal_in(tmp_string)
  329. assert(tmp_string.is_equal("177160"))
  330. tmp_string.clear_count
  331. 255.to_octal_in(tmp_string)
  332. assert(tmp_string.is_equal("000377"))
  333. tmp_string.clear_count
  334. 127.to_octal_in(tmp_string)
  335. assert(tmp_string.is_equal("177"))
  336. end
  337. assert (b: BOOLEAN)
  338. do
  339. cpt := cpt + 1
  340. if not b then
  341. sedb_breakpoint
  342. std_output.put_string("TEST_INTEGER1: ERROR Test # ")
  343. std_output.put_integer(cpt)
  344. std_output.put_string("%N")
  345. end
  346. end
  347. cpt: INTEGER
  348. end -- class TEST_INTEGER1
  349. --
  350. -- ------------------------------------------------------------------------------------------------------------------------------
  351. -- Copyright notice below. Please read.
  352. --
  353. -- SmartEiffel is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License,
  354. -- as published by the Free Software Foundation; either version 2, or (at your option) any later version.
  355. -- SmartEiffel is distributed in the hope that it will be useful but WITHOUT ANY WARRANTY; without even the implied warranty
  356. -- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have
  357. -- received a copy of the GNU General Public License along with SmartEiffel; see the file COPYING. If not, write to the Free
  358. -- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
  359. --
  360. -- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P. - University of Nancy 1 - FRANCE
  361. -- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
  362. --
  363. -- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
  364. --
  365. -- http://SmartEiffel.loria.fr - SmartEiffel@loria.fr
  366. -- ------------------------------------------------------------------------------------------------------------------------------