| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- import {
- assert,
- assertEquals,
- } from "https://deno.land/std@0.161.0/testing/asserts.ts";
- import { Prime } from "./prime.class.ts";
- Deno.test("Prime class", async (t) => {
- await t.step("static method isPrime()", async (t) => {
- await t.step("validate prime numbers", () => {
- [2, 3, 5, 7, 11, 13].forEach((number) => {
- assert(Prime.isPrime(number), `${number} is a prime`);
- });
- });
- await t.step("validate non-prime numbers", () => {
- [1, 4, 6, 8, 9, 10, 15].forEach((number) => {
- assert(!Prime.isPrime(number), `${number} is NOT a prime`);
- });
- });
- });
- await t.step("static method factors()", async (t) => {
- await t.step("returns the list of prime factors", () => {
- assertEquals(Prime.factors(13), [13]);
- assertEquals(Prime.factors(625), [5, 5, 5, 5]);
- assertEquals(Prime.factors(901255), [5, 17, 23, 461]);
- assertEquals(Prime.factors(93819012551), [11, 9539, 894119]);
- });
- });
- await t.step("static method isGood()", async (t) => {
- await t.step("validate good prime numbers (the deep version)", () => {
- [
- 5,
- 11,
- 17,
- 29,
- 37,
- 41,
- 53,
- 59,
- 67,
- 71,
- 97,
- 101,
- 127,
- 149,
- 179,
- 191,
- 223,
- 227,
- 251,
- 257,
- 269,
- 307,
- 311,
- 331,
- 347,
- 419,
- 431,
- 541,
- 557,
- 563,
- 569,
- 587,
- 593,
- 599,
- 641,
- 727,
- 733,
- 739,
- 809,
- 821,
- 853,
- 929,
- 937,
- 967,
- ].forEach((number) => {
- assert(Prime.isGood(number), `${number} is a good prime`);
- });
- });
- await t.step("validate non-prime numbers", () => {
- [1, 4, 6, 8, 9, 10, 15, 79, 137].forEach((number) => {
- assert(!Prime.isGood(number), `${number} is NOT a good prime`);
- });
- });
- });
- await t.step("static method isGoodWeak()", async (t) => {
- await t.step("validate good prime numbers (the weak version)", () => {
- [
- 5,
- 11,
- 17,
- 29,
- 37,
- 41,
- 53,
- 59,
- 67,
- 71,
- 79,
- 97,
- 101,
- 107,
- 127,
- 137,
- 149,
- 157,
- 163,
- 173,
- 179,
- 191,
- 197,
- 211,
- 223,
- 227,
- 239,
- 251,
- 257,
- 263,
- 269,
- 277,
- 281,
- 307,
- 311,
- 331,
- 347,
- 367,
- 373,
- 379,
- 397,
- 419,
- 431,
- 439,
- 457,
- 461,
- 479,
- 487,
- 499,
- 521,
- 541,
- 557,
- 563,
- 569,
- 587,
- 593,
- 599,
- 607,
- 613,
- 617,
- 631,
- 641,
- 653,
- 659,
- 673,
- 701,
- 719,
- 727,
- 733,
- 739,
- 751,
- 757,
- 769,
- 787,
- 809,
- 821,
- 827,
- 853,
- 857,
- 877,
- 881,
- 907,
- 929,
- 937,
- 947,
- 967,
- 977,
- 991,
- ].forEach((number) => {
- assert(Prime.isGoodWeak(number), `${number} is a weak good prime`);
- });
- });
- await t.step("validate non-prime numbers", () => {
- [1, 4, 6, 8, 9, 10, 15, 978, 999, 1000].forEach((number) => {
- assert(!Prime.isGood(number), `${number} is NOT a weak good prime`);
- });
- });
- });
- await t.step("static method list()", async (t) => {
- await t.step("returns the list of prime numbers", () => {
- assertEquals(Prime.list(10), [
- 2,
- 3,
- 5,
- 7,
- ]);
- });
- });
- });
|