about summary refs log tree commit diff
path: root/assessments/semiprimes/server/test/math_test.exs
blob: c7186c824a8ca401495cd63ee8a2b87cbbff11b4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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} ->
        assert Math.factor(input) == expected
      end)
    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