#require File.dirname(__FILE__) + '/test_helper.rb' #require File.dirname(__FILE__) + '/test_dragongoserver' # added for bones #require "./"+File.dirname(__FILE__) + '/test_helper.rb' require './lib/dragongoserver' require 'rubygems' require 'gorank' def after(d) yield if DateTime.now > d end class TestDragongoserver < Test::Unit::TestCase BIN_PREFIX = 'bin/' MY_USERID = 10737 MY_RANK = 24 MY_USERNAME = 'thopre' TEST_BIN = true # soll dgs-Kommando getestet werden? def setup dgs_username = ENV['DGS_USERNAME'] dgs_password = ENV['DGS_PASSWORD'] @dgs = Dgs.new(dgs_username, dgs_password) @thomas_rank = GoRank.new MY_RANK, :kyu unless MY_USERID == @dgs.userid raise "the test might not work for you because you are not the author of this gem" end end def test_username assert_equal MY_USERNAME, @dgs.username, "username #{MY_USERNAME} expected" # there should be NO method to get the password assert_raises(NoMethodError) { assert_equal 'not the real password', @dgs.password } end def test_get_rank assert_equal @thomas_rank.to_s, @dgs.get_rank.to_s, "does not match #{MY_USERNAME}'s rank - or his rank has changed" end def test_waiting_games after Date.new(2009,8,11) do zlist = @dgs.waiting_games assert zlist.kind_of?(Array) #assert_equal [452_684, # 452_685, #], zlist assert zlist == [] or games_in_300_000_thru_500_000(zlist) end end def games_in_300_000_thru_500_000(a) result = true a.each { |item| p item if item < 300_000 or item > 500_000 result = false break end } result end def test_bug_duplicate_numbers_waiting_games zlist = @dgs.waiting_games assert_equal zlist.uniq, zlist end def test_bug_duplicate_numbers_running_games after Date.new(2008,12,28) do zlist = @dgs.running_games assert_equal zlist.uniq, zlist end end def test_running_games_type zlist = @dgs.running_games assert zlist.kind_of?(Array) end # programm 'dgs' should be found def test_bin_dgs_version if TEST_BIN assert_equal "dgs " + Dragongoserver::VERSION + "\n", `#{BIN_PREFIX}dgs -v` assert_equal "dgs " + Dragongoserver::VERSION + "\n", `#{BIN_PREFIX}dgs --version` end end # test waiting moves for me def test_bin_dgs_waiting if TEST_BIN after Date.new(2009,7,16) do expected = "" assert_equal expected, `#{BIN_PREFIX}dgs -w` assert_equal expected, `#{BIN_PREFIX}dgs --waiting` end end end def test_dgs_userid assert_equal MY_USERID, @dgs.userid, "userid should be #{MY_USERID}" end # test my running games def test_bin_dgs_running after Date.new(2009,8,1) do if TEST_BIN games = [ 459553, 460420, 460478, 455141, 452102, 450082, 460057, 457788, 459753, 459516, 458426, 460190, 460642, 460834, 460546, 457924, 457527, 455596, 455595, 458150, 452576, 460160, 460280, 458433, 459699, 460938, 459842, 457470, 457678, 460709, 455099, 460616, 460414, 459799, 343676, ] expected_array = '' games.uniq.sort.each{ |g| expected_array << "#{g}\n" } expected = "you have a total of 44 running games running games:\n"+expected_array assert_equal expected, `#{BIN_PREFIX}dgs -r` assert_equal expected, `#{BIN_PREFIX}dgs --running` end end end def test_bin_dgs_add_game after Date.new(2009,7,20) do if TEST_BIN assert_equal "1 Game(s) added to the waiting room", `#{BIN_PREFIX}dgs --add-game` end end end def test_add_game assert @dgs.add_game end def test_bin_dgs_userinfo if TEST_BIN after Date.new(2009,8,16) do expected = "Userinfo" assert_equal expected, `#{BIN_PREFIX}dgs --userinfo #{MY_USERNAME}` end end end def test_bin_dgs_minwait if TEST_BIN after Date.new(2009,8,8) do expected = 'FIXME' assert_equal expected, `#{BIN_PREFIX}dgs --min-wait 5` end end end def test_userinfo_name assert @dgs.userinfo != nil, "userinfo not set" assert_equal 'Thomas Preymesser', @dgs.userinfo[:name] end def test_userinfo_userid assert @dgs.userinfo != nil, "userinfo not set" assert_equal MY_USERNAME, @dgs.userinfo[:userid] end def test_userinfo_city after Date.new(2008,12,28) do assert @dgs.userinfo != nil, "userinfo not set" assert_equal 'Berlin', @dgs.userinfo[:city] end end def test_userinfo_country assert @dgs.userinfo != nil, "userinfo not set" assert_equal 'Germany', @dgs.userinfo[:country] end def test_userinfo_name_with_id assert_kind_of Dgs, @dgs assert @dgs.userinfo(52) != nil, "userinfo not set" assert_equal 'Tomas Boman', @dgs.userinfo(52)[:name] end def test_userinfo_1_10 after Date.new(2009,7,15) do assert @dgs.userinfo(1) != nil, "userinfo not set" assert_equal 'Guest', @dgs.userinfo(1)[:name] assert @dgs.userinfo(2) != nil, "userinfo not set" assert_equal 'Erik O', @dgs.userinfo(2)[:name] assert @dgs.userinfo(3) != nil, "userinfo not set" assert_equal 'No name', @dgs.userinfo(3)[:name] assert @dgs.userinfo(4) != nil, "userinfo not set" assert_equal 'Alexandre Girardot', @dgs.userinfo(4)[:name] assert @dgs.userinfo(5) != nil, "userinfo not set" assert_equal 'Ma8e', @dgs.userinfo(5)[:name] assert @dgs.userinfo(6) != nil, "userinfo not set" assert_equal 'Roses', @dgs.userinfo(6)[:name] end end def test_last_access_last_move # dieser User war ewig nicht mehr eingeloggt # falls er es doch wieder tut, dann schlaegt dieser Test feht assert @dgs.userinfo(8000) != nil # assert_equal '32005-05-07 19:23', @dgs.userinfo(8000)[:lastaccess] # assert_equal '32005-05-07 16:30', @dgs.userinfo(8000)[:lastmove] assert_kind_of DateTime, @dgs.userinfo(8000)[:lastmove] assert_kind_of DateTime, @dgs.userinfo(8000)[:lastaccess] # "2008-01-02T15:13:00+00:00" assert_equal '2005-05-07T19:23:00+00:00', @dgs.userinfo(8000)[:lastaccess].to_s assert_equal '2005-05-07T16:30:00+00:00', @dgs.userinfo(8000)[:lastmove].to_s end def test_gameinfo_page #http://www.dragongoserver.net/game.php?gid=395863 assert_equal @dgs.gameinfo(395863) != nil end def test_gameinfo_page after Date.new(2008,12,27) do #http://www.dragongoserver.net/game.php?gid=395863 assert_equal "Lukas Zach (lukaszach)", @dgs.gameinfo(395863)[:black][:name] assert_equal "Thomas Preymesser (thopre)", @dgs.gameinfo(395863)[:white][:name] end end def test_finished_games_1 after Date.new(2009,7,15) do # http://www.dragongoserver.net/show_games.php?uid=31098&finished=1 assert @dgs.finished_games_for_user(31098) finished = @dgs.finished_games_for_user(31098) assert finished.kind_of?(Array) assert_equal [ {:id => 391681, :finished_at => Date.new(2008,4,19), :player_color => :white, :winner => :black, :reason => 'Time'}, {:id => 390209, :finished_at => Date.new(2008,4,13), :player_color => :white, :winner => :black, :reason => 'Time'}, {:id => 358277, :finished_at => Date.new(2008,4,8), :player_color => :white, :winner => :black, :reason => 'Time'}, ][0,3], finished[0,3] end end # noch nicht fertig #gleicher User 9 Spiele verloren wegen Time def test_finished_games_2 after Date.new(2009,7,22) do finished = @dgs.finished_games_for_user(31098) count = 0 finished.each {|g| if g[:reason] == 'Time' and g[:winner] != g[:player_color] #p g[:winner] # #g[:winner] != g[:player_color] count += 1 end } assert_equal 9, count end end # soll alle Spiel von mir liefern def test_games after Date.new(2009,10,7) do # noch nicht fertig list = @dgs.games assert_equal [1,2,3], list end end # soll alle meine noch laufenden Spiele liefern def test_running_games after Date.new(2009,7,13) do list = @dgs.running_games assert_equal [ 504318, 502108, 505885, 505891, 502109, 504384, 504334, 505967, 501160, 505975, 505946, 501261, ], list end end # soll alle meine beendeten Spiele liefern def test_finished_games after Date.new(2009,7,20) do # list = @dgs.finished_games list = @dgs.finished_games_ids assert_equal 580, list.size # Stand 2008-12-19 # die ersten beendeten Spiele assert_equal [95381,95383,95384], list.sort[0,3] # alles dazwischen lassen wir aus, da das unuebersehbar waere # die letzten beendeten Spiele assert_equal [422893,453143,453390], list.sort[-3,3] end end end