about summary refs log tree commit diff
path: root/assessments/semiprimes/server/test
diff options
context:
space:
mode:
Diffstat (limited to 'assessments/semiprimes/server/test')
-rw-r--r--assessments/semiprimes/server/test/server_test.exs29
1 files changed, 27 insertions, 2 deletions
diff --git a/assessments/semiprimes/server/test/server_test.exs b/assessments/semiprimes/server/test/server_test.exs
index 4fa9b617bfd9..f327efb33abb 100644
--- a/assessments/semiprimes/server/test/server_test.exs
+++ b/assessments/semiprimes/server/test/server_test.exs
@@ -2,7 +2,32 @@ defmodule ServerTest do
   use ExUnit.Case
   doctest Server
 
-  test "greets the world" do
-    assert Server.hello() == :world
+  describe "semiprime" do
+    test "returns the factors when the number is semiprime" do
+      # 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) == 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