about summary refs log blame commit diff
path: root/assessments/semiprimes/server/test/math_test.exs
blob: 81c60e40667ebc036a48d0a4dbf8959be7fdd086 (plain) (tree)































                                                                     
defmodule MathTest do
  use ExUnit.Case
  doctest Math

  describe "factor" do
    test "returns the prime factors for an input" do
      [
        {15, [3, 5]},
        {12, [2, 2, 3]},
        {9, [3, 3]},
        {21, [3, 7]}
      ]
      |> Enum.map(fn {input, expected} ->
        Math.factor(input) == expected
      end)
      |> Enum.all?()
      |> assert
    end

    test "handles large numbers" do
      assert Math.factor(104_023) == [17, 29, 211]
    end

    test "returns an empty list for 1" do
      assert Math.factor(1) == []
    end

    test "returns the prime number itself when the input is prime" do
      assert Math.factor(7) == [7]
    end
  end
end