/test/lib/numeric/number/test_number108.e

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