12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- (ns bombnet.manager-test
- (:require [clojure.test :refer :all]
- [clojure.core.async :refer [<! chan close! go]]
- [bombnet.manager :refer :all]))
- (defn new-room []
- (->Room {} #{} nil nil nil))
- (defn closed-chan []
- (let [ch (chan)]
- (close! ch)
- ch))
- (deftest room-test
- (testing "Clients can join"
- (let [room (new-room)]
- (is (= (->Room {100 {:id 100 :channel "chan"}} #{} nil nil nil)
- (client-join room {:id 100 :channel "chan"})))))
- (testing "Players leave when the client leaves"
- (let [ch (closed-chan)
- room (-> (new-room)
- (client-join {:id 100 :channel ch})
- (player-join 100))
- left-room (-> room
- (client-join {:id 101 :channel "chan"})
- (client-leave 100) )]
- (is (= (->Room {100 {:id 100 :channel ch}} #{100} nil nil nil)
- room))
- (is (= (->Room {101 {:id 101 :channel "chan"}} #{} nil nil nil)
- left-room))))
- (testing "Only up to 4 players can join"
- (let [chan-1 (chan)
- chan-5 (chan)
- empty-room (->Room {1 {:id 1 :channel chan-1}}
- #{} nil nil nil)
- full-room (->Room {1 {:id 1}
- 2 {:id 2}
- 3 {:id 3}
- 4 {:id 4}
- 5 {:id 5 :channel chan-5}}
- #{1 2 3 4}
- nil nil nil)]
- (go (is (= (<! chan-1) {:message "Joined game."})))
- (player-join empty-room 1)
- (go (is (= (<! chan-5) {:message "Could not join game. Lobby is full."})))
- (player-join full-room 5))))
|