124 lines
2.7 KiB
Gleam
124 lines
2.7 KiB
Gleam
import gleeunit
|
|
import gleeunit/should
|
|
import task1/task1
|
|
import task2/task2
|
|
|
|
pub fn main() {
|
|
gleeunit.main()
|
|
}
|
|
|
|
// Task 1 tests
|
|
pub fn task1_tail_recursive_test() {
|
|
task1.sum_multiples_tail_recursive(10)
|
|
|> should.equal(23)
|
|
|
|
task1.sum_multiples_tail_recursive(1000)
|
|
|> should.equal(233_168)
|
|
|
|
task1.sum_multiples_tail_recursive(0)
|
|
|> should.equal(0)
|
|
|
|
task1.sum_multiples_tail_recursive(1)
|
|
|> should.equal(0)
|
|
}
|
|
|
|
pub fn task1_recursive_test() {
|
|
task1.sum_multiples_recursive(10)
|
|
|> should.equal(23)
|
|
|
|
task1.sum_multiples_recursive(1000)
|
|
|> should.equal(233_168)
|
|
|
|
task1.sum_multiples_recursive(0)
|
|
|> should.equal(0)
|
|
|
|
task1.sum_multiples_recursive(1)
|
|
|> should.equal(0)
|
|
}
|
|
|
|
pub fn task1_modular_test() {
|
|
task1.sum_multiples_modular(10)
|
|
|> should.equal(23)
|
|
|
|
task1.sum_multiples_modular(1000)
|
|
|> should.equal(233_168)
|
|
|
|
task1.sum_multiples_modular(0)
|
|
|> should.equal(0)
|
|
|
|
task1.sum_multiples_modular(1)
|
|
|> should.equal(0)
|
|
}
|
|
|
|
pub fn task1_map_test() {
|
|
task1.sum_multiples_map(10)
|
|
|> should.equal(23)
|
|
|
|
task1.sum_multiples_map(1000)
|
|
|> should.equal(233_168)
|
|
|
|
task1.sum_multiples_map(0)
|
|
|> should.equal(0)
|
|
|
|
task1.sum_multiples_map(1)
|
|
|> should.equal(0)
|
|
}
|
|
|
|
pub fn task1_all_implementations_equal_test() {
|
|
let limit = 1000
|
|
let result1 = task1.sum_multiples_tail_recursive(limit)
|
|
let result2 = task1.sum_multiples_recursive(limit)
|
|
let result3 = task1.sum_multiples_modular(limit)
|
|
let result4 = task1.sum_multiples_map(limit)
|
|
|
|
result1 |> should.equal(result2)
|
|
result1 |> should.equal(result3)
|
|
result1 |> should.equal(result4)
|
|
}
|
|
|
|
// Task 2 tests
|
|
pub fn task2_tail_recursive_test() {
|
|
task2.sum_power_equals_tail_recursive(4, 10_000)
|
|
|> should.equal(19_316)
|
|
|
|
task2.sum_power_equals_tail_recursive(5, 354_294)
|
|
|> should.equal(443_839)
|
|
}
|
|
|
|
pub fn task2_recursive_test() {
|
|
task2.sum_power_equals_recursive(4, 10_000)
|
|
|> should.equal(19_316)
|
|
|
|
task2.sum_power_equals_recursive(5, 354_294)
|
|
|> should.equal(443_839)
|
|
}
|
|
|
|
pub fn task2_modular_test() {
|
|
task2.sum_power_equals_modular(4, 10_000)
|
|
|> should.equal(19_316)
|
|
|
|
task2.sum_power_equals_modular(5, 354_294)
|
|
|> should.equal(443_839)
|
|
}
|
|
|
|
pub fn task2_map_test() {
|
|
task2.sum_power_equals_map(4, 10_000)
|
|
|> should.equal(19_316)
|
|
|
|
task2.sum_power_equals_map(5, 354_294)
|
|
|> should.equal(443_839)
|
|
}
|
|
|
|
pub fn task2_all_implementations_equal_test() {
|
|
let power = 5
|
|
let max_limit = 354_294
|
|
let result1 = task2.sum_power_equals_tail_recursive(power, max_limit)
|
|
let result2 = task2.sum_power_equals_recursive(power, max_limit)
|
|
let result3 = task2.sum_power_equals_modular(power, max_limit)
|
|
let result4 = task2.sum_power_equals_map(power, max_limit)
|
|
|
|
result1 |> should.equal(result2)
|
|
result1 |> should.equal(result3)
|
|
result1 |> should.equal(result4)
|
|
}
|