Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require './spec_helper.rb'
- # I can not test server completely because it runs in a loop
- # I can only test before it begins work
- describe Server do
- before do
- @server = Server.new
- end
- context 'initialization' do
- # 1
- it 'Client count should be 0' do
- expect(@server.clients.size).to eql(0)
- end
- # 2
- it 'Server should evaluate all request as 0 since no users are present' do
- expect(@server.handle_message('1', 'test')).to eql(nil)
- expect(@server.handle_message('2', 'test')).to eql(nil)
- expect(@server.handle_message('3', 'test')).to eql(nil)
- expect(@server.handle_message('4', 'test')).to eql(nil)
- expect(@server.handle_message('5', 'test')).to eql(nil)
- end
- end
- context 'Client initialization and message handling' do
- before do
- @nick_name1 = 'tester1'.to_sym
- @nick_name2 = 'tester2'.to_sym
- @nick_name3 = 'tester3'.to_sym
- @nick_name4 = 'tester4'.to_sym
- @client1 = TestClient.new
- @client2 = TestClient.new
- @client3 = TestClient.new
- @client4 = TestClient.new
- @client1.puts 'tester1'
- @client2.puts 'tester2'
- @client3.puts 'tester3'
- @client4.puts 'tester4'
- @server.init_client @client1
- @server.init_client @client4
- @server.init_client @client2
- @server.init_client @client3
- end
- it 'Server should properly init client' do
- @client5 = TestClient.new
- #unique nick_name
- nick_name5 = 'tester5'.to_sym
- @client5.puts "tester5\r\n"
- puts @client5.gets
- expect(@server.init_client(@client5)).to eql(nick_name5)
- expect(@client5.gets).to eql('Connection established! You are ready to play!')
- expect(@server.users[nick_name5].nick_name).to eql(nick_name5)
- end
- it 'Server should detect duplicate nick name' do
- @client5 = TestClient.new
- @client5.puts 'tester1'
- puts @client5.gets
- expect(@server.init_client(@client5)).to eql(0)
- expect(@client5.gets).to eql('This username already exist')
- end
- it 'Server should detect multiple new game requests' do
- @server.handle_message('254dasda', @nick_name1)
- @server.handle_message('2', @nick_name1)
- expect(@server.rooms[@nick_name1]).to eql(nil)
- end
- # 4
- it 'Server should change users state after he send seek new game msg' do
- @server.handle_message('2', @nick_name1)
- expect(@server.users[@nick_name1].state).to eql(2)
- expect(@client2.msg).to eql("#{@nick_name1}: Is seeking for a game")
- end
- # 5
- it 'Server should creat room containing paired players' do
- @server.handle_message('2', @nick_name1)
- @server.handle_message('2', @nick_name2)
- expect(([@nick_name1, @nick_name2]).include?(@server.rooms[@nick_name1].white))
- expect(([@nick_name1, @nick_name2]).include?(@server.rooms[@nick_name2].black))
- expect(@client1.gets).to eql('You were paired with tester2@ You\'re white!')
- expect(@client2.gets).to eql('You were paired with tester1@ You\'re black!')
- end
- it 'Server should creat room containing paired players' do
- @server.handle_message('2', @nick_name4)
- @server.handle_message('2', @nick_name1)
- expect(([@nick_name1, @nick_name4]).include?(@server.rooms[@nick_name1].white))
- expect(([@nick_name1, @nick_name4]).include?(@server.rooms[@nick_name4].black))
- expect(@client4.gets).to eql('You were paired with tester1@ You\'re white!')
- expect(@client1.gets).to eql('You were paired with tester4@ You\'re black!')
- end
- it 'Server should creat room containing paired players' do
- @server.handle_message('2125 asdasdf', @nick_name4)
- @server.handle_message('2', @nick_name3)
- expect(([@nick_name3, @nick_name4]).include?(@server.rooms[@nick_name3].white))
- expect(([@nick_name3, @nick_name4]).include?(@server.rooms[@nick_name4].black))
- expect(@client4.gets).to eql('You were paired with tester3@ You\'re white!')
- expect(@client3.gets).to eql('You were paired with tester4@ You\'re black!')
- end
- # 6
- it 'Server should change user state after he pairing' do
- @server.handle_message('2asd', @nick_name1)
- @server.handle_message('2', @nick_name2)
- expect(@server.users[@nick_name1].state).to eql(1)
- expect(@server.users[@nick_name2].state).to eql(1)
- end
- # 7
- it 'Server should send same messages to all clients' do
- @client1.puts '1'
- @client2.puts '2'
- @server.send_to_all('test')
- expect(@client1.msg).to eql('test')
- expect(@client2.msg).to eql('test')
- end
- it 'Server should catch unhandable message' do
- @server.handle_message('Unhandable message', @nick_name1)
- end
- it 'Server should relay moves properly' do
- @server.handle_message('2151dsadwq', @nick_name1)
- @server.handle_message('2', @nick_name2)
- expect(@server.rooms[@nick_name1].side).to eql(0)
- @server.handle_message('1e2e4', @nick_name1)
- expect(@client1.msg).to eql('Made move!')
- expect(@server.rooms[@nick_name1].side).to eql(1)
- expect(@client2.msg).to eql('1e2e4')
- expect(@server.handle_message('1e2e4', @nick_name1)).to eql(nil)
- @server.handle_message('1d7d5', @nick_name2)
- expect(@client2.msg).to eql('Made move!')
- expect(@server.rooms[@nick_name1].side).to eql(0)
- expect(@client1.msg).to eql('1d7d5')
- end
- it 'Server should notice if its not your move' do
- @server.handle_message('215 asd', @nick_name1)
- @server.handle_message('2', @nick_name2)
- expect(@server.handle_message('1e2e4', @nick_name2)).to eql(nil)
- end
- it 'Server should not let start new game if player is already in game' do
- @server.handle_message('2', @nick_name1)
- @server.handle_message('2', @nick_name2)
- expect(@server.handle_message('2', @nick_name2)).to eql(nil)
- end
- it 'Server should notice if user does not exist' do
- expect(@server.handle_message('3NotHere', @nick_name1)).to eql(nil)
- expect(@server.handle_message('4NotHere', @nick_name1)).to eql(nil)
- end
- it "Server should not let user make move if he's not in game" do
- expect(@server.handle_message('1e2e4', @nick_name1)).to eql(nil)
- end
- # it 'Server should notice if other user did not send invite' do
- # expect(@server.handle_message("4#{@nick_name2}", @nick_name1)).to eql(0)
- # end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement