PBT 2021 の到来 - 17 日目


Advent of PBT 2021 — Learn how to use property based testing and fast-check through examples



今日のアルゴリズムは isHumbleNumber です.
次のドキュメントとプロトタイプが付属しています.

/**
 * Check if a number is an Humber number.
 *
 * Humble numbers are positive integers which have
 * no prime factors > 7.
 *
 * Source: https://rosettacode.org/wiki/Humble_numbers
 *
 * @param n - The number to be checked,
 *            superior or equal to zero and up to 2**31 -1
 */
declare function isHumbleNumber(n: number): boolean;


すでにいくつかの例に基づいたテストを書いています:

it("should consider any prime number <=7 as humble", () => {
  expect(isHumbleNumber(2)).toBe(true);
  expect(isHumbleNumber(3)).toBe(true);
  expect(isHumbleNumber(5)).toBe(true);
  expect(isHumbleNumber(7)).toBe(true);
});

it("should consider any number <=7 as humble", () => {
  expect(isHumbleNumber(0)).toBe(true);
  expect(isHumbleNumber(1)).toBe(true);
  expect(isHumbleNumber(4)).toBe(true);
  expect(isHumbleNumber(6)).toBe(true);
});

it("should consider any compositite of 2, 3, 5 or 7 as humble", () => {
  expect(isHumbleNumber(2 * 2 * 2 * 2 * 2)).toBe(true);
  expect(isHumbleNumber(2 * 2 * 3 * 3 * 5 * 5 * 7 * 7)).toBe(true);
});

it("should consider number with prime factor >7 as non-humble", () => {
  expect(isHumbleNumber(11)).toBe(false);
  expect(isHumbleNumber(2 * 11)).toBe(false);
});


プロパティベースのテストでどのようにカバーしますか?

作業を容易にするために、セットアップ済みの CodeSandbox を提供します.これには、例に基づいたテストが既に作成されており、アルゴリズムの可能な実装が含まれています: https://codesandbox.io/s/advent-of-pbt-day-17-qvdwh?file=/src/index.spec.ts&previewwindow=tests

解決策を見たいですか?今日のアルゴリズムをカバーするために私が持ってきたプロパティのセットは次のとおりです.


他の日に取り上げられたトピックとその解決策を確認するには.

このシリーズの詳細については、ハッシュタグ .