|
@@ -0,0 +1,40 @@
|
|
|
|
+(ns bombnet.manager-test
|
|
|
|
+ (:require [clojure.test :refer :all]
|
|
|
|
+ [bombnet.manager :refer :all]))
|
|
|
|
+
|
|
|
|
+(deftest client-test
|
|
|
|
+ (testing "Clients can join"
|
|
|
|
+ (let [manager (new-manager)]
|
|
|
|
+ (is (nil? (room-status manager 12)))
|
|
|
|
+ (client-join manager 12 100 "chan")
|
|
|
|
+ (is (= (->Room {100 {:id 100 :channel "chan"}} #{} nil)
|
|
|
|
+ (room-status manager 12)))))
|
|
|
|
+ (testing "An empty room is removed"
|
|
|
|
+ (let [manager (new-manager)]
|
|
|
|
+ (client-join manager 12 100 "chan")
|
|
|
|
+ (client-leave manager 12 100)
|
|
|
|
+ (is (nil? (room-status manager 12)))))
|
|
|
|
+ (testing "Players leave when the client leaves"
|
|
|
|
+ (let [manager (new-manager)]
|
|
|
|
+ (client-join manager 12 100 "chan")
|
|
|
|
+ (player-join manager 12 100)
|
|
|
|
+ (is (= (->Room {100 {:id 100 :channel "chan"}} #{100} nil)
|
|
|
|
+ (room-status manager 12)))
|
|
|
|
+ (client-join manager 12 101 "chan")
|
|
|
|
+ (client-leave manager 12 100)
|
|
|
|
+ (is (= (->Room {101 {:id 101 :channel "chan"}} #{} nil)
|
|
|
|
+ (room-status manager 12)))))
|
|
|
|
+ (testing "Only up to 4 players can join"
|
|
|
|
+ (let [manager (new-manager)]
|
|
|
|
+ (client-join manager 12 1 "p1")
|
|
|
|
+ (client-join manager 12 2 "p2")
|
|
|
|
+ (client-join manager 12 3 "p3")
|
|
|
|
+ (client-join manager 12 4 "p4")
|
|
|
|
+ (client-join manager 12 5 "p5")
|
|
|
|
+ (is (player-join manager 12 1))
|
|
|
|
+ (is (player-join manager 12 2))
|
|
|
|
+ (is (player-join manager 12 3))
|
|
|
|
+ (is (player-join manager 12 4))
|
|
|
|
+ (is (not (player-join manager 12 5)))
|
|
|
|
+ (is (player-leave manager 12 4))
|
|
|
|
+ (is (player-join manager 12 5)))))
|