瀏覽代碼

Added GetGame methode

Ronald Peterson 10 年之前
父節點
當前提交
52d3144e68
共有 2 個文件被更改,包括 36 次插入0 次删除
  1. 20 0
      games/games.go
  2. 16 0
      games/games_test.go

+ 20 - 0
games/games.go

@@ -3,15 +3,23 @@ package games
 type Games struct {
 	addChan  chan *Game
 	listChan chan listChan
+	getChan chan getGame
 }
 
 type listChan chan []*Game
 
+type getGame struct {
+	id int64
+	returnChan chan *Game
+
+}
+
 func New() Games {
 
 	games := Games{
 		addChan:  make(chan *Game),
 		listChan: make(chan listChan),
+		getChan: make(chan getGame),
 	}
 
 	go serveGames(games)
@@ -31,6 +39,8 @@ func serveGames(games Games) {
 				v = append(v, value)
 			}
 			r <- v
+		case r := <-games.getChan:
+			r.returnChan <- gamesMap[r.id]
 		}
 	}
 }
@@ -44,3 +54,13 @@ func (games Games) ListGames() []*Game {
 	games.listChan <- r
 	return <-r
 }
+
+func (games Games) GetGame(id int64) *Game {
+	getGame := getGame {
+		id: id,
+		returnChan: make(chan *Game),
+		
+	}
+	games.getChan <- getGame
+	return <- getGame.returnChan
+}

+ 16 - 0
games/games_test.go

@@ -30,4 +30,20 @@ func TestAdd2Games(t *testing.T) {
 	if games.ListGames()[0].Id != game.Id {
 		t.Fatalf("Incorrect gameid expected %v got %v", games.ListGames()[0].Id, game.Id)
 	}
+}
+
+func TestAddGetGame(t *testing.T) {
+	
+	game := NewGame(100,100)
+	game2 := NewGame(100,100)
+	game3 := NewGame(100,100)
+	games := New()
+	
+	games.AddGame(game)
+	games.AddGame(game2)
+	games.AddGame(game3)
+	resultGame := games.GetGame(game2.Id)
+	if  resultGame.Id != game2.Id {
+		t.Fatalf("Incorrect ListGames size expeciting %v got %v", resultGame.Id, game2.Id)
+	}
 }