package snake class M01UtilSuite extends munit.FunSuite: test("range(0) is empty") { assertEquals(Util.range(0), Nil) } test("range(3) counts from zero up to n-1") { assertEquals(Util.range(3), List(0, 1, 2)) } test("dropLast of an empty list is empty") { assertEquals(Util.dropLast(List.empty[Int]), Nil) } test("dropLast removes only the last element") { assertEquals(Util.dropLast(List(1, 2, 3)), List(1, 2)) } test("dropLast leaves its input untouched") { val xs = List(1, 2, 3) assertEquals(Util.dropLast(xs), List(1, 2)) assertEquals(xs, List(1, 2, 3)) } private val sameParity = (a: Int, b: Int) => a % 2 == b % 2 test("contains finds an element using the supplied equality") { assertEquals(Util.contains(List(1, 2, 3), 5, sameParity), true) } test("contains is false when no element is equal") { assertEquals(Util.contains(List(2, 4), 3, sameParity), false) } test("contains is false for an empty list") { assertEquals(Util.contains(List.empty[Int], 1, _ == _), false) } test("contains compares structurally when given a structural equality") { assertEquals(Util.contains(List(Point(1, 2)), Point(1, 2), _ == _), true) }