prime.class.test.ts 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. import {
  2. assert,
  3. assertEquals,
  4. } from "https://deno.land/std@0.161.0/testing/asserts.ts";
  5. import { Prime } from "./prime.class.ts";
  6. Deno.test("Prime class", async (t) => {
  7. await t.step("static method isPrime()", async (t) => {
  8. await t.step("validate prime numbers", () => {
  9. [2, 3, 5, 7, 11, 13].forEach((number) => {
  10. assert(Prime.isPrime(number), `${number} is a prime`);
  11. });
  12. });
  13. await t.step("validate non-prime numbers", () => {
  14. [1, 4, 6, 8, 9, 10, 15].forEach((number) => {
  15. assert(!Prime.isPrime(number), `${number} is NOT a prime`);
  16. });
  17. });
  18. });
  19. await t.step("static method factors()", async (t) => {
  20. await t.step("returns the list of prime factors", () => {
  21. assertEquals(Prime.factors(13), [13]);
  22. assertEquals(Prime.factors(625), [5, 5, 5, 5]);
  23. assertEquals(Prime.factors(901255), [5, 17, 23, 461]);
  24. assertEquals(Prime.factors(93819012551), [11, 9539, 894119]);
  25. });
  26. });
  27. await t.step("static method isGood()", async (t) => {
  28. await t.step("validate good prime numbers (the deep version)", () => {
  29. [
  30. 5,
  31. 11,
  32. 17,
  33. 29,
  34. 37,
  35. 41,
  36. 53,
  37. 59,
  38. 67,
  39. 71,
  40. 97,
  41. 101,
  42. 127,
  43. 149,
  44. 179,
  45. 191,
  46. 223,
  47. 227,
  48. 251,
  49. 257,
  50. 269,
  51. 307,
  52. 311,
  53. 331,
  54. 347,
  55. 419,
  56. 431,
  57. 541,
  58. 557,
  59. 563,
  60. 569,
  61. 587,
  62. 593,
  63. 599,
  64. 641,
  65. 727,
  66. 733,
  67. 739,
  68. 809,
  69. 821,
  70. 853,
  71. 929,
  72. 937,
  73. 967,
  74. ].forEach((number) => {
  75. assert(Prime.isGood(number), `${number} is a good prime`);
  76. });
  77. });
  78. await t.step("validate non-prime numbers", () => {
  79. [1, 4, 6, 8, 9, 10, 15, 79, 137].forEach((number) => {
  80. assert(!Prime.isGood(number), `${number} is NOT a good prime`);
  81. });
  82. });
  83. });
  84. await t.step("static method isGoodWeak()", async (t) => {
  85. await t.step("validate good prime numbers (the weak version)", () => {
  86. [
  87. 5,
  88. 11,
  89. 17,
  90. 29,
  91. 37,
  92. 41,
  93. 53,
  94. 59,
  95. 67,
  96. 71,
  97. 79,
  98. 97,
  99. 101,
  100. 107,
  101. 127,
  102. 137,
  103. 149,
  104. 157,
  105. 163,
  106. 173,
  107. 179,
  108. 191,
  109. 197,
  110. 211,
  111. 223,
  112. 227,
  113. 239,
  114. 251,
  115. 257,
  116. 263,
  117. 269,
  118. 277,
  119. 281,
  120. 307,
  121. 311,
  122. 331,
  123. 347,
  124. 367,
  125. 373,
  126. 379,
  127. 397,
  128. 419,
  129. 431,
  130. 439,
  131. 457,
  132. 461,
  133. 479,
  134. 487,
  135. 499,
  136. 521,
  137. 541,
  138. 557,
  139. 563,
  140. 569,
  141. 587,
  142. 593,
  143. 599,
  144. 607,
  145. 613,
  146. 617,
  147. 631,
  148. 641,
  149. 653,
  150. 659,
  151. 673,
  152. 701,
  153. 719,
  154. 727,
  155. 733,
  156. 739,
  157. 751,
  158. 757,
  159. 769,
  160. 787,
  161. 809,
  162. 821,
  163. 827,
  164. 853,
  165. 857,
  166. 877,
  167. 881,
  168. 907,
  169. 929,
  170. 937,
  171. 947,
  172. 967,
  173. 977,
  174. 991,
  175. ].forEach((number) => {
  176. assert(Prime.isGoodWeak(number), `${number} is a weak good prime`);
  177. });
  178. });
  179. await t.step("validate non-prime numbers", () => {
  180. [1, 4, 6, 8, 9, 10, 15, 978, 999, 1000].forEach((number) => {
  181. assert(!Prime.isGood(number), `${number} is NOT a weak good prime`);
  182. });
  183. });
  184. });
  185. await t.step("static method list()", async (t) => {
  186. await t.step("returns the list of prime numbers", () => {
  187. assertEquals(Prime.list(10), [
  188. 2,
  189. 3,
  190. 5,
  191. 7,
  192. ]);
  193. });
  194. });
  195. });