A to-do item can have a description. We would like to have an initializer that also takes a description string. To drive the implementation, we need a failing test for the existence of this initializer:
func test_Init_TakesTitleAndDescription() { _ = ToDoItem(title: "Foo", itemDescription: "Bar") }
Again, this code does not compile because there is Extra argument 'itemDescription' in call. To make this test pass, we add an itemDescription property of type String? to ToDoItem:
struct ToDoItem { let title: String let itemDescription: String? }
Run the tests. The test_Init_TakesTitle() test fails (that is, it does not compile) because there is Missing argument for parameter 'itemDescription' in the call. ...