Files
exercism-workspace/tracks-on-tracks-on-tracks/test/tracks_on_tracks_on_tracks_test.gleam
2025-11-03 21:47:09 +01:00

131 lines
3.8 KiB
Gleam

import exercism/should
import exercism/test_runner
import tracks_on_tracks_on_tracks
pub fn main() {
test_runner.main()
}
pub fn new_list_test() {
tracks_on_tracks_on_tracks.new_list()
|> should.equal([])
}
pub fn existing_list_test() {
tracks_on_tracks_on_tracks.existing_list()
|> should.equal(["Gleam", "Go", "TypeScript"])
}
pub fn add_language_to_new_list_test() {
tracks_on_tracks_on_tracks.add_language([], "Elixir")
|> should.equal(["Elixir"])
}
pub fn add_language_to_existing_list_test() {
tracks_on_tracks_on_tracks.add_language(["Gleam", "Go", "TypeScript"], "Lua")
|> should.equal(["Lua", "Gleam", "Go", "TypeScript"])
}
pub fn add_language_to_custom_list_test() {
tracks_on_tracks_on_tracks.add_language(["Scheme"], "Racket")
|> should.equal(["Racket", "Scheme"])
}
pub fn count_languages_on_new_list_test() {
tracks_on_tracks_on_tracks.count_languages(
tracks_on_tracks_on_tracks.new_list(),
)
|> should.equal(0)
}
pub fn count_languages_on_existing_list_test() {
tracks_on_tracks_on_tracks.count_languages(
tracks_on_tracks_on_tracks.existing_list(),
)
|> should.equal(3)
}
pub fn count_languages_on_custom_list_test() {
tracks_on_tracks_on_tracks.count_languages(["Python", "JavaScript"])
|> should.equal(2)
}
pub fn reverse_order_of_new_list_test() {
tracks_on_tracks_on_tracks.reverse_list(tracks_on_tracks_on_tracks.new_list())
|> should.equal([])
}
pub fn reverse_order_of_existing_list_test() {
tracks_on_tracks_on_tracks.reverse_list(
tracks_on_tracks_on_tracks.existing_list(),
)
|> should.equal(["TypeScript", "Go", "Gleam"])
}
pub fn reverse_order_of_custom_list_test() {
tracks_on_tracks_on_tracks.reverse_list(["Kotlin", "Java", "Scala", "Clojure"])
|> should.equal(["Clojure", "Scala", "Java", "Kotlin"])
}
pub fn empty_list_is_not_exciting_test() {
let assert False = tracks_on_tracks_on_tracks.exciting_list([])
}
pub fn singleton_list_with_gleam_is_exciting_test() {
let assert True = tracks_on_tracks_on_tracks.exciting_list(["Gleam"])
}
pub fn singleton_list_without_gleam_is_not_exciting_test() {
let assert False = tracks_on_tracks_on_tracks.exciting_list(["Go"])
}
pub fn two_item_list_with_gleam_as_first_item_is_exciting_test() {
let assert True =
tracks_on_tracks_on_tracks.exciting_list(["Gleam", "Clojure"])
}
pub fn two_item_list_with_gleam_as_second_item_is_exciting_test() {
let assert True = tracks_on_tracks_on_tracks.exciting_list(["Raku", "Gleam"])
}
pub fn two_item_list_without_gleam_is_not_exciting_test() {
let assert False = tracks_on_tracks_on_tracks.exciting_list(["Python", "Go"])
}
pub fn three_item_list_with_gleam_as_first_item_is_exciting_test() {
let assert True =
tracks_on_tracks_on_tracks.exciting_list(["Gleam", "Lisp", "Clojure"])
}
pub fn three_item_list_with_gleam_as_second_item_is_exciting_test() {
let assert True =
tracks_on_tracks_on_tracks.exciting_list(["Java", "Gleam", "C#"])
}
pub fn three_item_list_with_gleam_as_third_item_is_not_exciting_test() {
let assert False =
tracks_on_tracks_on_tracks.exciting_list(["Julia", "Assembly", "Gleam"])
}
pub fn four_item_list_with_gleam_as_first_item_is_exciting_test() {
let assert True =
tracks_on_tracks_on_tracks.exciting_list(["Gleam", "C", "C++", "C#"])
}
pub fn four_item_list_with_gleam_as_second_item_is_not_exciting_test() {
let assert False =
tracks_on_tracks_on_tracks.exciting_list(["Elm", "Gleam", "C#", "Scheme"])
}
pub fn four_item_list_with_gleam_as_third_item_is_not_exciting_test() {
let assert False =
tracks_on_tracks_on_tracks.exciting_list(["Delphi", "D", "Gleam", "Prolog"])
}
pub fn four_item_list_with_gleam_as_fourth_item_is_not_exciting_test() {
let assert False =
tracks_on_tracks_on_tracks.exciting_list([
"Julia", "Assembly", "Crystal", "Gleam",
])
}