PageRenderTime 61ms CodeModel.GetById 25ms RepoModel.GetById 1ms app.codeStats 0ms

/tests/irc.rb

https://bitbucket.org/tagoh/prune
Ruby | 224 lines | 160 code | 47 blank | 17 comment | 7 complexity | 99183064d6250dff227197b098da7847 MD5 | raw file
Possible License(s): GPL-2.0
  1. # irc.rb<2>
  2. # Copyright (C) 2009 Akira TAGOH
  3. # Authors:
  4. # Akira TAGOH <akira@tagoh.org>
  5. # This program is free software; you can redistribute it and/or modify
  6. # it under the terms of the GNU General Public License as published by
  7. # the Free Software Foundation; either version 2 of the License, or
  8. # (at your option) any later version.
  9. # This program is distributed in the hope that it will be useful,
  10. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. # GNU General Public License for more details.
  13. # You should have received a copy of the GNU General Public License
  14. # along with this program; if not, write to the Free Software
  15. # Foundation, Inc., 59 Temple Place - Suite 330,
  16. # Boston, MA 02111-1307, USA.
  17. require 'rubygems'
  18. gem 'test-unit'
  19. require 'test/unit/testcase'
  20. require 'timeout'
  21. require 'prune/irc'
  22. class IO
  23. class << self
  24. def select(rq, wq, eq, to)
  25. retval = [[], [], []]
  26. begin
  27. x = Proc.new do |q, ret, no_loop|
  28. loop do
  29. q.each do |x|
  30. unless x.queue.empty? then
  31. ret << x unless ret.include?(x)
  32. end
  33. end
  34. break if !ret.empty? || no_loop
  35. end
  36. end
  37. Timeout.timeout(to) do
  38. r = Thread.new(rq, retval[0]) do |rrq, ret|
  39. x.call(rrq, ret, to == 0) unless rrq.nil?
  40. end
  41. w = Thread.new(wq, retval[1]) do |wwq, ret|
  42. x.call(wwq, ret, to == 0) unless wwq.nil?
  43. end
  44. e = Thread.new(eq, retval[2]) do |eeq, ret|
  45. x.call(eeq, ret, to == 0) unless eeq.nil?
  46. end
  47. r.join
  48. w.join
  49. e.join
  50. end
  51. rescue Timeout::Error
  52. retval = nil
  53. r.exit
  54. w.exit
  55. e.exit
  56. end
  57. retval
  58. end # def IO.select
  59. end
  60. end
  61. class PRUNE::TCPSocket
  62. def initialize(host, port, prefix = nil)
  63. @host = host
  64. @port = port
  65. @prefix = prefix
  66. @stop = false
  67. @floodcontrol = true
  68. @status = []
  69. @status.extend(PRUNE::Lock_m)
  70. @iq = PRUNE::Queue.new
  71. @oq = PRUNE::Queue.new
  72. @eof = false
  73. @closed = false
  74. sleep 1
  75. end
  76. def closed?
  77. @closed
  78. end # def closed?
  79. def close
  80. @eof = true
  81. self.stop
  82. @closed = true
  83. end
  84. def addr
  85. ["AF_INET", @port, @host, IPSocket.getaddress(@host)]
  86. end
  87. def eof?
  88. @eof
  89. end # def
  90. def gets(*args)
  91. # XXX
  92. read
  93. end
  94. def read(length = nil, buffer = nil)
  95. x = @iq.shift
  96. unless x.nil? then
  97. unless length.nil? then
  98. xx = x.split(//)
  99. x = xx[0..length-1].join
  100. @iq.unshift(xx[length-1..-1].join)
  101. end
  102. end
  103. unless buffer.nil? then
  104. buffer = x
  105. end
  106. x
  107. end
  108. def write(string)
  109. @oq << string
  110. end
  111. def push(*args)
  112. @iq.push(*args)
  113. end # def push
  114. def queue
  115. @iq
  116. end
  117. def result
  118. @oq
  119. end # def result
  120. def clear
  121. @iq.clear
  122. @oq.clear
  123. end # def clear
  124. end
  125. class TestPRUNE__IRC < Test::Unit::TestCase
  126. def setup
  127. end # def setup
  128. def teardown
  129. end # def teardown
  130. def test_functional
  131. end # def test_functional
  132. end # class TestPRUNE__IRC
  133. class TestPRUNE__IRCConnector < Test::Unit::TestCase
  134. def setup
  135. end # def setup
  136. def teardown
  137. end # def teardown
  138. def test_functional
  139. end # def test_functional
  140. def test_353_received
  141. t = PRUNE::IRCConnector.new
  142. t.open(PRUNE::TYPE::HostInfoStruct.new('localhost', 6667, 'foo', 'foo', 'foo',{},nil))
  143. sd = t.instance_variable_get("@sdelegate")
  144. until sd.result.length >= 2 do
  145. sleep 1
  146. end
  147. sd.push("001 blahblah blahblah\r\n")
  148. sd.push("JOIN #fedora-devel\r\n")
  149. sd.push(":calvino.freenode.net 353 tagoh = #Fedora-Devel :tagoh mintos fraggle_ musolinoa zer0c00l jaswinder_ dtardon _Hicham_ paragan mbacovsk RodrigoPadula danielbruno sgallagh Shrink than_home ehabkost dvlasenk mherman Sonar_Guy nhorman jnovy biertie _tydeas_ hachiman atkac jmoskovc bochecha sc0field marcus_ akurtakov jankratochvil thomastp ndrs__ AndyP hughsie ssp diegobz che RaoulDuke SMParrish nphilipp bpepple thomasj Pikachu_2015 KageSenshi kdudka mefoster npmccallum jreznik_afk liquidat \r\n")
  150. sd.push(":calvino.freenode.net 353 tagoh = #Fedora-Devel :tim4dev alatyr fab rakesh rvokal slaine_ maploin schlobinux eseyman Panu wolfy npatil jsafrane aarapov c4chris giallu thoger jhorak beekhof zodbot_ zwu holger_ Urs_ShPo kashyapc Cheshirc kaitlin blitzkrieg3 aholler_ sudhir pcfe itamarjp ffesti_ Sonar_Gal stu|laptop sonar_logger2 ReneP cebbert stickster_afk N3LRX kaio fnasser_ hpa_at_work LinDon|afk dmaphy donavan lkundrak mitr uwog DrNick jmatthews_ abartlet warren talcite nb_ jhunt \r\n")
  151. sd.push(":calvino.freenode.net 353 tagoh = #Fedora-Devel :Pikachu_2014 nokia3510 dazo mhlavink plautrba ivana pp_ BoChao|AFK sandeen furai Nushio theskunk wwoods Dodji jlaska josef sadmac rprice` mikem23 jon_vanalten fraggle_laptop Dp67 ricky ijuma_ ubijtsa jnettlet_ kasal than NotTheAdmin pknirsch generalBordeaux gregdek mbonnet_ delhage cyberpear jonmasters killefiz pink_trout londo jwb davej kanarip jlb|away nb cjb cpg geppetto Sir_Gallantmon ctyler smooge Tuju dgregor dwalluck Kick_ \r\n")
  152. sd.push(":calvino.freenode.net 353 tagoh = #Fedora-Devel :spevack tuatha sl33v3 rsquared lxo twoerner muep_ jdav_gone hpa sadmac_home |Frederik LetoTo1 sandeen_ jlindsay vpv ijuma bernie kalev [0x100] nim-nim SirThomas llaumgui maxamillion Ac-town ajami Harley-D stiv2k ebassi tmz rwmjones opsec gbeshers_home trashy adamw londo_ eponyme jmp Ryan52 ianweller ajax dnsn lon j-rod daemoen1 xover_ mezcalero shortstack ndim eddyp_work ndevos_ lmacken kylem ensc poelcat giesen jds2001 juhp kylev \r\n")
  153. sd.push(":calvino.freenode.net 353 tagoh = #Fedora-Devel :Plouj saispo nwnk nirik hno Sparks dbhole mnagy torshido pjones Risar paulbsch mjg59 fabbione pgf jbowes Edgan Cope paragn thm mebus teprrr mmcgrath clumens silfreed UdontKnow bugbot_ daniel_hozac pingou awjb fenrus02 mharris skvidal ensc|w Viking-Ice goncalo_ dledford_ timlau pcheung_ dmlloyd Oxf13 pixelbeat dgilmore abadger1999 tibbs|h ke4qqq jforbes quaid bress wwwnick th0br0 nosnilmot MerlinTHP silug z00dax yaneti Guest99296 Lalufu \r\n")
  154. sd.push(":calvino.freenode.net 353 tagoh = #Fedora-Devel :ingvarha zykes- tagoh3 chii tomaw_ Jeff_S thomasvs albiorix @ChanServ EvilBob darktama Nrg_ whot simo jiteshs neurocyte knurd daq4th felipe_ Zerberus dwmw2 AndyCap agk SmootherFrOgZ vanaltj blackops G_work rdieter_work airlied daju adrianr tonyb joe sharkcz johe|work bmr spot sm|CPU mchua_afk wakko666 ixs rsc halfline \r\n")
  155. sleep 5
  156. assert_equal(["#fedora-devel"], t.state.channels)
  157. assert_equal("foo tagoh mintos fraggle_ musolinoa zer0c00l jaswinder_ dtardon _Hicham_ paragan mbacovsk RodrigoPadula danielbruno sgallagh Shrink than_home ehabkost dvlasenk mherman Sonar_Guy nhorman jnovy biertie _tydeas_ hachiman atkac jmoskovc bochecha sc0field marcus_ akurtakov jankratochvil thomastp ndrs__ AndyP hughsie ssp diegobz che RaoulDuke SMParrish nphilipp bpepple thomasj Pikachu_2015 KageSenshi kdudka mefoster npmccallum jreznik_afk liquidat tim4dev alatyr fab rakesh rvokal slaine_ maploin schlobinux eseyman Panu wolfy npatil jsafrane aarapov c4chris giallu thoger jhorak beekhof zodbot_ zwu holger_ Urs_ShPo kashyapc Cheshirc kaitlin blitzkrieg3 aholler_ sudhir pcfe itamarjp ffesti_ Sonar_Gal stu|laptop sonar_logger2 ReneP cebbert stickster_afk N3LRX kaio fnasser_ hpa_at_work LinDon|afk dmaphy donavan lkundrak mitr uwog DrNick jmatthews_ abartlet warren talcite nb_ jhunt Pikachu_2014 nokia3510 dazo mhlavink plautrba ivana pp_ BoChao|AFK sandeen furai Nushio theskunk wwoods Dodji jlaska josef sadmac rprice` mikem23 jon_vanalten fraggle_laptop Dp67 ricky ijuma_ ubijtsa jnettlet_ kasal than NotTheAdmin pknirsch generalBordeaux gregdek mbonnet_ delhage cyberpear jonmasters killefiz pink_trout londo jwb davej kanarip jlb|away nb cjb cpg geppetto Sir_Gallantmon ctyler smooge Tuju dgregor dwalluck Kick_ spevack tuatha sl33v3 rsquared lxo twoerner muep_ jdav_gone hpa sadmac_home |Frederik LetoTo1 sandeen_ jlindsay vpv ijuma bernie kalev [0x100] nim-nim SirThomas llaumgui maxamillion Ac-town ajami Harley-D stiv2k ebassi tmz rwmjones opsec gbeshers_home trashy adamw londo_ eponyme jmp Ryan52 ianweller ajax dnsn lon j-rod daemoen1 xover_ mezcalero shortstack ndim eddyp_work ndevos_ lmacken kylem ensc poelcat giesen jds2001 juhp kylev Plouj saispo nwnk nirik hno Sparks dbhole mnagy torshido pjones Risar paulbsch mjg59 fabbione pgf jbowes Edgan Cope paragn thm mebus teprrr mmcgrath clumens silfreed UdontKnow bugbot_ daniel_hozac pingou awjb fenrus02 mharris skvidal ensc|w Viking-Ice goncalo_ dledford_ timlau pcheung_ dmlloyd Oxf13 pixelbeat dgilmore abadger1999 tibbs|h ke4qqq jforbes quaid bress wwwnick th0br0 nosnilmot MerlinTHP silug z00dax yaneti Guest99296 Lalufu ingvarha zykes- tagoh3 chii tomaw_ Jeff_S thomasvs albiorix @ChanServ EvilBob darktama Nrg_ whot simo jiteshs neurocyte knurd daq4th felipe_ Zerberus dwmw2 AndyCap agk SmootherFrOgZ vanaltj blackops G_work rdieter_work airlied daju adrianr tonyb joe sharkcz johe|work bmr spot sm|CPU mchua_afk wakko666 ixs rsc halfline".gsub(/[@+]/,'').split(/ /).sort, t.state.channel("#fedora-devel").nicks.sort)
  158. sd.push("PART #fedora-devel\r\n")
  159. sd.push(":calvino.freenode.net 353 tagoh = #Fedora-Devel :tagoh mintos fraggle_ musolinoa zer0c00l jaswinder_ dtardon _Hicham_ paragan mbacovsk RodrigoPadula danielbruno sgallagh Shrink than_home ehabkost dvlasenk mherman Sonar_Guy nhorman jnovy biertie _tydeas_ hachiman atkac jmoskovc bochecha sc0field marcus_ akurtakov jankratochvil thomastp ndrs__ AndyP hughsie ssp diegobz che RaoulDuke SMParrish nphilipp bpepple thomasj Pikachu_2015 KageSenshi kdudka mefoster npmccallum jreznik_afk liquidat \r\n")
  160. sd.push(":calvino.freenode.net 353 tagoh = #Fedora-Devel :tim4dev alatyr fab rakesh rvokal slaine_ maploin schlobinux eseyman Panu wolfy npatil jsafrane aarapov c4chris giallu thoger jhorak beekhof zodbot_ zwu holger_ Urs_ShPo kashyapc Cheshirc kaitlin blitzkrieg3 aholler_ sudhir pcfe itamarjp ffesti_ Sonar_Gal stu|laptop sonar_logger2 ReneP cebbert stickster_afk N3LRX kaio fnasser_ hpa_at_work LinDon|afk dmaphy donavan lkundrak mitr uwog DrNick jmatthews_ abartlet warren talcite nb_ jhunt \r\n")
  161. sd.push(":calvino.freenode.net 353 tagoh = #Fedora-Devel :Pikachu_2014 nokia3510 dazo mhlavink plautrba ivana pp_ BoChao|AFK sandeen furai Nushio theskunk wwoods Dodji jlaska josef sadmac rprice` mikem23 jon_vanalten fraggle_laptop Dp67 ricky ijuma_ ubijtsa jnettlet_ kasal than NotTheAdmin pknirsch generalBordeaux gregdek mbonnet_ delhage cyberpear jonmasters killefiz pink_trout londo jwb davej kanarip jlb|away nb cjb cpg geppetto Sir_Gallantmon ctyler smooge Tuju dgregor dwalluck Kick_ \r\n")
  162. sd.push(":calvino.freenode.net 353 tagoh = #Fedora-Devel :spevack tuatha sl33v3 rsquared lxo twoerner muep_ jdav_gone hpa sadmac_home |Frederik LetoTo1 sandeen_ jlindsay vpv ijuma bernie kalev [0x100] nim-nim SirThomas llaumgui maxamillion Ac-town ajami Harley-D stiv2k ebassi tmz rwmjones opsec gbeshers_home trashy adamw londo_ eponyme jmp Ryan52 ianweller ajax dnsn lon j-rod daemoen1 xover_ mezcalero shortstack ndim eddyp_work ndevos_ lmacken kylem ensc poelcat giesen jds2001 juhp kylev \r\n")
  163. sd.push(":calvino.freenode.net 353 tagoh = #Fedora-Devel :Plouj saispo nwnk nirik hno Sparks dbhole mnagy torshido pjones Risar paulbsch mjg59 fabbione pgf jbowes Edgan Cope paragn thm mebus teprrr mmcgrath clumens silfreed UdontKnow bugbot_ daniel_hozac pingou awjb fenrus02 mharris skvidal ensc|w Viking-Ice goncalo_ dledford_ timlau pcheung_ dmlloyd Oxf13 pixelbeat dgilmore abadger1999 tibbs|h ke4qqq jforbes quaid bress wwwnick th0br0 nosnilmot MerlinTHP silug z00dax yaneti Guest99296 Lalufu \r\n")
  164. sd.push(":calvino.freenode.net 353 tagoh = #Fedora-Devel :ingvarha zykes- tagoh3 chii tomaw_ Jeff_S thomasvs albiorix @ChanServ EvilBob darktama Nrg_ whot simo jiteshs neurocyte knurd daq4th felipe_ Zerberus dwmw2 AndyCap agk SmootherFrOgZ vanaltj blackops G_work rdieter_work airlied daju adrianr tonyb joe sharkcz johe|work bmr spot sm|CPU mchua_afk wakko666 ixs rsc halfline \r\n")
  165. sleep 5
  166. assert_equal([], t.state.channels)
  167. assert_equal(false, t.state.joined?("#fedora-devel", "foo"))
  168. t.close
  169. end # def test_353_received
  170. end # class TestPRUNE__IRCConnector
  171. if $0 == __FILE__ then
  172. begin
  173. require 'main'
  174. rescue LoadError
  175. require 'tests/main'
  176. end
  177. end