Files
Exercism/julia/mixed-juices/runtests.jl

172 lines
5.1 KiB
Julia

using Test
include("mixed-juices.jl")
@testset verbose = true "tests" begin
@testset "1. time_to_mix_juice" begin
@testset "Returns the correct time for 'Pure Strawberry Joy'" begin
@test time_to_mix_juice("Pure Strawberry Joy") == 0.5
end
@testset "Returns the correct time for 'Energizer'" begin
@test time_to_mix_juice("Energizer") == 1.5
end
@testset "Returns the correct time for 'Green Garden'" begin
@test time_to_mix_juice("Green Garden") == 1.5
end
@testset "Returns the correct time for 'Tropical Island'" begin
@test time_to_mix_juice("Tropical Island") == 3
end
@testset "Returns the correct time for 'All or Nothing'" begin
@test time_to_mix_juice("All or Nothing") == 5
end
@testset "Returns the correct time for all other juices" begin
default_time = 2.5
@test time_to_mix_juice("Limetime") == default_time
@test time_to_mix_juice("Manic Organic") == default_time
@test time_to_mix_juice("Papaya & Peach") == default_time
end
end
@testset "2. limes_to_cut" begin
@testset "Medium order" begin
limes = [
"small",
"large",
"large",
"medium",
"small",
"large",
"large",
"medium"
]
@test limes_to_cut(42, limes) == 6
end
@testset "Small order" begin
limes = [
"medium",
"small"
]
@test limes_to_cut(4, limes) == 1
end
@testset "Large order" begin
limes = [
"small",
"large",
"large",
"medium",
"small",
"large",
"large"
]
@test limes_to_cut(80, limes) == 7
end
@testset "If no new wedges are needed, no limes are cut" begin
limes = [
"small",
"large",
"medium"
]
@test limes_to_cut(0, limes) == 0
end
@testset "works if no limes are available" begin
limes = []
@test limes_to_cut(10, limes) == 0
end
end
@testset "3. order_times" begin
@testset "correctly determines the times for current orders" begin
orders = [
"Tropical Island",
"Energizer",
"Limetime",
"All or Nothing",
"Pure Strawberry Joy"
]
expected = [3.0, 1.5, 2.5, 5.0, 0.5]
@test order_times(orders) == expected
end
@testset "correctly determines the times for current orders" begin
orders = [
"Pure Strawberry Joy",
"Pure Strawberry Joy",
"Vitality",
"Tropical Island",
"All or Nothing",
"All or Nothing",
"All or Nothing",
"Green Garden",
"Limetime"
]
expected = [0.5, 0.5, 2.5, 3.0, 5.0, 5.0, 5.0, 1.5, 2.5]
@test order_times(orders) == expected
end
@testset "correctly returns an empty list if there are no orders" begin
orders = []
@test order_times(orders) == []
end
end
@testset "4. remaining_orders" begin
@testset "correctly determines the remaining orders" begin
orders = [
"Tropical Island",
"Energizer",
"Limetime",
"All or Nothing",
"Pure Strawberry Joy"
]
expected = ["All or Nothing", "Pure Strawberry Joy"]
@test remaining_orders(7, orders) == expected
end
@testset "correctly determines the remaining orders" begin
orders = [
"Pure Strawberry Joy",
"Pure Strawberry Joy",
"Vitality",
"Tropical Island",
"All or Nothing",
"All or Nothing",
"All or Nothing",
"Green Garden",
"Limetime"
]
expected = ["All or Nothing", "Green Garden", "Limetime"]
@test remaining_orders(13, orders) == expected
end
@testset "counts all orders as fulfilled if there is enough time" begin
orders = [
"Energizer",
"Green Garden",
"Ruby Glow",
"Pure Strawberry Joy",
"Tropical Island",
"Limetime"
]
@test remaining_orders(12, orders) == []
end
@testset "works if there is only very little time left" begin
orders = [
"Bananas Gone Wild",
"Pure Strawberry Joy"
]
expected = ["Pure Strawberry Joy"]
@test remaining_orders(0.2, orders) == expected
end
end
end