about summary refs log tree commit diff
path: root/assessments/semiprimes/server/test/server_test.exs
blob: 08d559734b5af03dc2d4d61f8783d6d582cae2ac (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
31
32
33
34
defmodule ServerTest do
  use ExUnit.Case
  doctest Server

  describe "semiprime" do
    test "returns the factors when the number is semiprime" do
      Cache.clear()
      # Semiprimes below 30
      [
        {4, [2, 2]},
        {6, [2, 3]},
        {9, [3, 3]},
        {10, [2, 5]},
        {14, [2, 7]},
        {15, [3, 5]},
        {21, [3, 7]},
        {22, [2, 11]},
        {25, [5, 5]},
        {26, [2, 13]}
      ]
      |> Enum.each(fn {input, expected} ->
        assert Server.semiprime(input) == {:miss, expected}
      end)
    end

    test "returns nothing when the number is a composite number" do
      # Composite numbers below 30
      [1, 2, 3, 5, 7, 8, 11, 12, 13, 16, 17, 18, 19, 20, 23, 24, 27, 28, 29]
      |> Enum.each(fn x ->
        assert Server.semiprime(x) == nil
      end)
    end
  end
end