Commit e67ebfe

mo khan <mo.khan@gmail.com>
2019-12-08 19:30:09
Add countdown
1 parent 233ade5
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))
+//}