exercism/elixir/sum-of-multiples/test/sum_of_multiples_test.exs

78 lines
1.9 KiB
Elixir

defmodule SumOfMultiplesTest do
use ExUnit.Case
test "no multiples within limit" do
assert SumOfMultiples.to(1, [3, 5]) == 0
end
test "one factor has multiples within limit" do
assert SumOfMultiples.to(4, [3, 5]) == 3
end
test "more than one multiple within limit0" do
assert SumOfMultiples.to(7, [3]) == 9
end
test "more than one factor with multiples within limit" do
assert SumOfMultiples.to(10, [3, 5]) == 23
end
test "each multiple is only counted once" do
assert SumOfMultiples.to(100, [3, 5]) == 2318
end
test "a much larger limit" do
assert SumOfMultiples.to(1000, [3, 5]) == 233_168
end
test "three factors" do
multiples = [7, 13, 17]
assert SumOfMultiples.to(20, multiples) == 51
end
test "factors not relatively prime" do
multiples = [4, 6]
assert SumOfMultiples.to(15, multiples) == 30
end
test "some pairs of factors relatively prime and some not" do
multiples = [5, 6, 8]
assert SumOfMultiples.to(150, multiples) == 4419
end
test "one factor is a multiple of another" do
multiples = [5, 25]
assert SumOfMultiples.to(51, multiples) == 275
end
test "much larger factors" do
multiples = [43, 47]
assert SumOfMultiples.to(10000, multiples) == 2_203_160
end
test "all numbers are multiples of 1" do
multiples = [1]
assert SumOfMultiples.to(100, multiples) == 4950
end
test "no factors means an empty sum" do
multiples = []
assert SumOfMultiples.to(10000, multiples) == 0
end
test "the only multiple of 0 is 0" do
multiples = [0]
assert SumOfMultiples.to(1, multiples) == 0
end
test "the factor 0 does not affect the sum of multiples of other factors" do
multiples = [3, 0]
assert SumOfMultiples.to(4, multiples) == 3
end
test "solutions using include-exclude must extend to cardinality greater than 3" do
multiples = [2, 3, 5, 7, 11]
assert SumOfMultiples.to(10000, multiples) == 39_614_537
end
end