Commit e67ebfe
Changed files (3)
countdown.go
@@ -0,0 +1,36 @@
+package main
+
+import (
+ "fmt"
+ "io"
+ "os"
+ "time"
+)
+
+type Sleeper interface {
+ Sleep()
+}
+
+type DefaultSleeper struct{}
+
+func (d *DefaultSleeper) Sleep() {
+ time.Sleep(1 * time.Second)
+}
+
+const finalWord = "Go!"
+const countdownStart = 3
+
+func Countdown(out io.Writer, sleeper Sleeper) {
+ for i := countdownStart; i > 0; i-- {
+ sleeper.Sleep()
+ fmt.Fprintln(out, i)
+ }
+
+ sleeper.Sleep()
+ fmt.Fprint(out, finalWord)
+}
+
+func main() {
+ sleeper := &DefaultSleeper{}
+ Countdown(os.Stdout, sleeper)
+}
countdown_test.go
@@ -0,0 +1,35 @@
+package main
+
+import (
+ "bytes"
+ "testing"
+)
+
+type SpySleeper struct {
+ Calls int
+}
+
+func (s *SpySleeper) Sleep() {
+ s.Calls++
+}
+
+func TestCountdown(t *testing.T) {
+ buffer := &bytes.Buffer{}
+ spySleeper := &SpySleeper{}
+
+ Countdown(buffer, spySleeper)
+
+ got := buffer.String()
+ want := `3
+2
+1
+Go!`
+
+ if got != want {
+ t.Errorf("got %q want %q", got, want)
+ }
+
+ if spySleeper.Calls != 4 {
+ t.Errorf("not enough calls to sleeper, want 4 got %d", spySleeper.Calls)
+ }
+}
greet.go
@@ -14,7 +14,7 @@ func MyGreeterHandler(w http.ResponseWriter, r *http.Request) {
Greet(w, "world")
}
-func main() {
- //Greet(os.Stdout, "Elodie")
- http.ListenAndServe(":5000", http.HandlerFunc(MyGreeterHandler))
-}
+//func main() {
+////Greet(os.Stdout, "Elodie")
+//http.ListenAndServe(":5000", http.HandlerFunc(MyGreeterHandler))
+//}