-
Notifications
You must be signed in to change notification settings - Fork 16
KotlinFP
Sam0ht edited this page Jun 16, 2017
·
1 revision
PeopleRegisterTest.kt
import org.junit.*;
import org.junit.Assert.assertEquals
class PeopleRegisterTest {
val people = """Adam 18
Bob 15
Charlie 8
Dave 49
Elizabeth 12
Francis 42
George 85
Harriet 62
Janet 13
Karl 8
Laura 6
Mary 19
Nick 16
Oliver 54
Peter 27
Peter 34
Robert 36
Sally 26
Tom 58
Tom 13
Tom 58
Tom 45
Vicky 60
Wally 28"""
val register = PeopleRegisterParser.parse(people)
@Test fun should_report_twenty_four_people() {
assertEquals(24, register.count());
}
@Test fun should_say_that_Dave_is_the_oldest() {
assertEquals(Person("George", 85), register.oldestPerson()!!)
}
@Test fun should_say_that_Tom_is_the_commonest_name() {
assertEquals("Tom", register.commonestName())
}
@Test fun should_say_that_the_youngest_Peter_is_27_years_old() {
assertEquals(27, register.youngestCalled("Peter"))
}
@Test fun should_report_eight_children() {
assertEquals(8, register.countOfChildren())
}
@Test fun should_report_an_adult_to_child_ratio_of_2() {
assertEquals(2.0, register.adultToChildRatio(), 0.001)
}
@Test fun should_calculate_the_average_age() {
assertEquals(33.0, register.averageAge(), 0.001)
}
@Test fun should_calculate_the_median_age() {
assertEquals(27.5, register.medianAge(), 0.001)
}
}
class PeopleRegister(val people: List<Person>) {
fun count(): Int = TODO()
fun oldestPerson(): Person? = TODO()
fun commonestName(): String? = TODO()
fun youngestCalled(sought: String): Int? = TODO()
fun countOfChildren(): Int = TODO()
fun adultToChildRatio(): Double {
TODO()
}
fun averageAge(): Double = TODO()
fun medianAge(): Double {
TODO()
}
}
data class Person(val name: String, val age: Int)
object PersonParser {
fun parse(data: String): Person {
val params = data.trim().split(" ")
return Person(params.get(0), params.get(1).toInt())
}
}
object PeopleRegisterParser {
fun parse(personData: String): PeopleRegister = PeopleRegister(personData.trim().split("\n").map{ s -> PersonParser.parse(s)})
}
- Home
- Code of Conduct: rules on how to make this an inclusive event
- COVID-Precautions: Precautions and monitoring of room ventilation
- Schedule
- Venue Map
- Menu
- whoami: Attending? Feel free to introduce yourself.
- Session Incubation: come up with cool ideas for the conference
- Lightning Talks: get your point across in five minutes or less
- Evening Events: things to do from 7pm to 9am
- Marketplace: pictures of the current marketplace
- 2024 Sessions: Blog posts, photos and everything else produced during the conference