/test/lib/numeric/number/test_number109.e

http://github.com/tybor/Liberty · Specman e · 121 lines · 89 code · 5 blank · 27 comment · 0 complexity · bd6cb60458075ae419e4188ac0a01225 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_NUMBER109
  5. --
  6. -- Test of depassement of INTEGER_64_NUMBER capacity
  7. -- during a division between 2 integers which
  8. -- symbolized by a BIG_INTEGER_NUMBER
  9. -- Result is an small integer
  10. --
  11. insert
  12. EIFFELTEST_TOOLS
  13. create {}
  14. make
  15. feature {ANY}
  16. make
  17. local
  18. a, b, q, r: NUMBER
  19. do
  20. a := nt.from_string("100000000000000000000000000")
  21. b := nt.from_string("1000000000000000000000")
  22. q := a // b
  23. r := a \\ b
  24. assert(q.is_integer_general_number)
  25. assert(q.is_positive)
  26. assert(q @= 100000)
  27. assert(r.is_integer_general_number)
  28. assert(r.is_zero)
  29. a := nt.from_string("-100000000000000000000000000")
  30. b := nt.from_string("1000000000000000000000")
  31. q := a // b
  32. r := a \\ b
  33. assert(q.is_integer_general_number)
  34. assert(not q.is_positive)
  35. assert(q @= -100000)
  36. assert(r.is_integer_general_number)
  37. assert(r.is_zero)
  38. a := nt.from_string("100000000000000000000000000")
  39. b := nt.from_string("-1000000000000000000000")
  40. q := a // b
  41. r := a \\ b
  42. assert(q.is_integer_general_number)
  43. assert(not q.is_positive)
  44. assert(q @= -100000)
  45. assert(r.is_integer_general_number)
  46. assert(r.is_zero)
  47. a := nt.from_string("-100000000000000000000000000")
  48. b := nt.from_string("-1000000000000000000000")
  49. q := a // b
  50. r := a \\ b
  51. assert(q.is_integer_general_number)
  52. assert(q.is_positive)
  53. assert(q @= 100000)
  54. assert(r.is_integer_general_number)
  55. assert(r.is_zero)
  56. a := nt.from_string("100000000000000000000000999")
  57. b := nt.from_string("1000000000000000000000")
  58. q := a // b
  59. r := a \\ b
  60. assert(q.is_integer_general_number)
  61. assert(q.is_positive)
  62. assert(q @= 100000)
  63. assert(r.is_integer_general_number)
  64. assert(r.is_positive)
  65. assert(r @= 999)
  66. a := nt.from_string("-99999999999999999999999001")
  67. b := nt.from_string("1000000000000000000000")
  68. q := a // b
  69. r := a \\ b
  70. assert(q.is_integer_general_number)
  71. assert(not q.is_positive)
  72. assert(q @= -100000)
  73. assert(r.is_integer_general_number)
  74. assert(r.is_positive)
  75. assert(r @= 999)
  76. a := nt.from_string("100000000000000000000000999")
  77. b := nt.from_string("-1000000000000000000000")
  78. q := a // b
  79. r := a \\ b
  80. assert(q.is_integer_general_number)
  81. assert(not q.is_positive)
  82. assert(q @= -100000)
  83. assert(r.is_integer_general_number)
  84. assert(r.is_positive)
  85. assert(r @= 999)
  86. a := nt.from_string("-99999999999999999999999001")
  87. b := nt.from_string("-1000000000000000000000")
  88. q := a // b
  89. r := a \\ b
  90. assert(q.is_integer_general_number)
  91. assert(q.is_positive)
  92. assert(q @= 100000)
  93. assert(r.is_integer_general_number)
  94. assert(r.is_positive)
  95. assert(r @= 999)
  96. end
  97. nt: NUMBER_TOOLS
  98. end -- class TEST_NUMBER109
  99. --
  100. -- ------------------------------------------------------------------------------------------------------------------------------
  101. -- Copyright notice below. Please read.
  102. --
  103. -- SmartEiffel is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License,
  104. -- as published by the Free Software Foundation; either version 2, or (at your option) any later version.
  105. -- SmartEiffel is distributed in the hope that it will be useful but WITHOUT ANY WARRANTY; without even the implied warranty
  106. -- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have
  107. -- received a copy of the GNU General Public License along with SmartEiffel; see the file COPYING. If not, write to the Free
  108. -- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
  109. --
  110. -- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P. - University of Nancy 1 - FRANCE
  111. -- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
  112. --
  113. -- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
  114. --
  115. -- http://SmartEiffel.loria.fr - SmartEiffel@loria.fr
  116. -- ------------------------------------------------------------------------------------------------------------------------------