Advertisement
Guest User

Untitled

a guest
Oct 29th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.41 KB | None | 0 0
  1. require './spec_helper.rb'
  2.  
  3. # I can not test server completely because it runs in a loop
  4. # I can only test before it begins work
  5.  
  6. describe Server do
  7. before do
  8. @server = Server.new
  9. end
  10. context 'initialization' do
  11. # 1
  12. it 'Client count should be 0' do
  13. expect(@server.clients.size).to eql(0)
  14. end
  15. # 2
  16. it 'Server should evaluate all request as 0 since no users are present' do
  17. expect(@server.handle_message('1', 'test')).to eql(nil)
  18. expect(@server.handle_message('2', 'test')).to eql(nil)
  19. expect(@server.handle_message('3', 'test')).to eql(nil)
  20. expect(@server.handle_message('4', 'test')).to eql(nil)
  21. expect(@server.handle_message('5', 'test')).to eql(nil)
  22. end
  23. end
  24.  
  25.  
  26. context 'Client initialization and message handling' do
  27. before do
  28. @nick_name1 = 'tester1'.to_sym
  29. @nick_name2 = 'tester2'.to_sym
  30. @nick_name3 = 'tester3'.to_sym
  31. @nick_name4 = 'tester4'.to_sym
  32. @client1 = TestClient.new
  33. @client2 = TestClient.new
  34. @client3 = TestClient.new
  35. @client4 = TestClient.new
  36. @client1.puts 'tester1'
  37. @client2.puts 'tester2'
  38. @client3.puts 'tester3'
  39. @client4.puts 'tester4'
  40. @server.init_client @client1
  41. @server.init_client @client4
  42. @server.init_client @client2
  43. @server.init_client @client3
  44. end
  45. it 'Server should properly init client' do
  46. @client5 = TestClient.new
  47. #unique nick_name
  48. nick_name5 = 'tester5'.to_sym
  49. @client5.puts "tester5\r\n"
  50. puts @client5.gets
  51. expect(@server.init_client(@client5)).to eql(nick_name5)
  52. expect(@client5.gets).to eql('Connection established! You are ready to play!')
  53. expect(@server.users[nick_name5].nick_name).to eql(nick_name5)
  54. end
  55. it 'Server should detect duplicate nick name' do
  56. @client5 = TestClient.new
  57. @client5.puts 'tester1'
  58. puts @client5.gets
  59. expect(@server.init_client(@client5)).to eql(0)
  60. expect(@client5.gets).to eql('This username already exist')
  61. end
  62. it 'Server should detect multiple new game requests' do
  63. @server.handle_message('254dasda', @nick_name1)
  64. @server.handle_message('2', @nick_name1)
  65. expect(@server.rooms[@nick_name1]).to eql(nil)
  66. end
  67. # 4
  68. it 'Server should change users state after he send seek new game msg' do
  69. @server.handle_message('2', @nick_name1)
  70. expect(@server.users[@nick_name1].state).to eql(2)
  71. expect(@client2.msg).to eql("#{@nick_name1}: Is seeking for a game")
  72. end
  73. # 5
  74. it 'Server should creat room containing paired players' do
  75. @server.handle_message('2', @nick_name1)
  76. @server.handle_message('2', @nick_name2)
  77. expect(([@nick_name1, @nick_name2]).include?(@server.rooms[@nick_name1].white))
  78. expect(([@nick_name1, @nick_name2]).include?(@server.rooms[@nick_name2].black))
  79. expect(@client1.gets).to eql('You were paired with tester2@ You\'re white!')
  80. expect(@client2.gets).to eql('You were paired with tester1@ You\'re black!')
  81. end
  82. it 'Server should creat room containing paired players' do
  83. @server.handle_message('2', @nick_name4)
  84. @server.handle_message('2', @nick_name1)
  85. expect(([@nick_name1, @nick_name4]).include?(@server.rooms[@nick_name1].white))
  86. expect(([@nick_name1, @nick_name4]).include?(@server.rooms[@nick_name4].black))
  87. expect(@client4.gets).to eql('You were paired with tester1@ You\'re white!')
  88. expect(@client1.gets).to eql('You were paired with tester4@ You\'re black!')
  89. end
  90. it 'Server should creat room containing paired players' do
  91. @server.handle_message('2125 asdasdf', @nick_name4)
  92. @server.handle_message('2', @nick_name3)
  93. expect(([@nick_name3, @nick_name4]).include?(@server.rooms[@nick_name3].white))
  94. expect(([@nick_name3, @nick_name4]).include?(@server.rooms[@nick_name4].black))
  95. expect(@client4.gets).to eql('You were paired with tester3@ You\'re white!')
  96. expect(@client3.gets).to eql('You were paired with tester4@ You\'re black!')
  97. end
  98. # 6
  99. it 'Server should change user state after he pairing' do
  100. @server.handle_message('2asd', @nick_name1)
  101. @server.handle_message('2', @nick_name2)
  102. expect(@server.users[@nick_name1].state).to eql(1)
  103. expect(@server.users[@nick_name2].state).to eql(1)
  104. end
  105. # 7
  106. it 'Server should send same messages to all clients' do
  107. @client1.puts '1'
  108. @client2.puts '2'
  109. @server.send_to_all('test')
  110. expect(@client1.msg).to eql('test')
  111. expect(@client2.msg).to eql('test')
  112. end
  113.  
  114. it 'Server should catch unhandable message' do
  115. @server.handle_message('Unhandable message', @nick_name1)
  116. end
  117.  
  118. it 'Server should relay moves properly' do
  119. @server.handle_message('2151dsadwq', @nick_name1)
  120. @server.handle_message('2', @nick_name2)
  121. expect(@server.rooms[@nick_name1].side).to eql(0)
  122. @server.handle_message('1e2e4', @nick_name1)
  123. expect(@client1.msg).to eql('Made move!')
  124. expect(@server.rooms[@nick_name1].side).to eql(1)
  125. expect(@client2.msg).to eql('1e2e4')
  126. expect(@server.handle_message('1e2e4', @nick_name1)).to eql(nil)
  127. @server.handle_message('1d7d5', @nick_name2)
  128. expect(@client2.msg).to eql('Made move!')
  129. expect(@server.rooms[@nick_name1].side).to eql(0)
  130. expect(@client1.msg).to eql('1d7d5')
  131. end
  132. it 'Server should notice if its not your move' do
  133. @server.handle_message('215 asd', @nick_name1)
  134. @server.handle_message('2', @nick_name2)
  135. expect(@server.handle_message('1e2e4', @nick_name2)).to eql(nil)
  136. end
  137. it 'Server should not let start new game if player is already in game' do
  138. @server.handle_message('2', @nick_name1)
  139. @server.handle_message('2', @nick_name2)
  140.  
  141. expect(@server.handle_message('2', @nick_name2)).to eql(nil)
  142. end
  143.  
  144. it 'Server should notice if user does not exist' do
  145. expect(@server.handle_message('3NotHere', @nick_name1)).to eql(nil)
  146. expect(@server.handle_message('4NotHere', @nick_name1)).to eql(nil)
  147. end
  148. it "Server should not let user make move if he's not in game" do
  149. expect(@server.handle_message('1e2e4', @nick_name1)).to eql(nil)
  150. end
  151. # it 'Server should notice if other user did not send invite' do
  152. # expect(@server.handle_message("4#{@nick_name2}", @nick_name1)).to eql(0)
  153. # end
  154. end
  155. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement