PageRenderTime 50ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/tests/pseudoio.rb

https://bitbucket.org/tagoh/prune
Ruby | 287 lines | 245 code | 24 blank | 18 comment | 2 complexity | ef360c4c1eb513209f58f93ff2f92e70 MD5 | raw file
Possible License(s): GPL-2.0
  1. # pseudoio.rb
  2. # Copyright (C) 2010 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. $:.push(File.join(File.dirname($0), '..', 'prune', '.libs'))
  18. require 'tmpdir'
  19. require 'pseudoio'
  20. require 'rubygems'
  21. gem 'test-unit'
  22. require 'test/unit/testcase'
  23. require 'tempfile'
  24. class TestPRUNE__PseudoIO < Test::Unit::TestCase
  25. def setup
  26. end # def setup
  27. def teardown
  28. end # def teardown
  29. def test_functional
  30. assert_raises(ArgumentError) {PRUNE::PseudoIO.new(nil)}
  31. assert_raises(TypeError) {PRUNE::PseudoIO.new(nil, nil)}
  32. assert_raises(TypeError) {PRUNE::PseudoIO.new(1, nil)}
  33. assert_raises(TypeError) {PRUNE::PseudoIO.new({}, nil)}
  34. assert_raises(TypeError) {PRUNE::PseudoIO.new("", nil)}
  35. end # def test_functional
  36. def test_func_io_r
  37. tmp = Tempfile.new("pseudoiotestXXXXXXXX")
  38. File.open(tmp.path, "w") do |f|
  39. [1,2,3].each do |i|
  40. f.write(sprintf("%s\n", i))
  41. end
  42. end
  43. x = File.open(tmp.path,"r")
  44. t = nil
  45. assert_raises(ArgumentError) {PRUNE::PseudoIO.new(x,"blah")}
  46. assert_nothing_raised {t = PRUNE::PseudoIO.new(x,"r")}
  47. assert_equal("1\n", t.readline)
  48. assert_equal("2\n", t.readline)
  49. assert_equal("3\n", t.readline)
  50. assert_equal(true, t.eof?)
  51. assert_raises(EOFError) {t.readline}
  52. assert_raises(IOError) {t.write("foo\n")}
  53. tmp.close
  54. end # def test_func_io_r
  55. def test_func_io_w
  56. tmp = Tempfile.new("pseudoiotestXXXXXXXX")
  57. x = File.open(tmp.path,"w")
  58. t = nil
  59. assert_raises(ArgumentError) {PRUNE::PseudoIO.new(x,"blah")}
  60. assert_nothing_raised {t = PRUNE::PseudoIO.new(x,"w")}
  61. assert_nothing_raised {t.write("foo\n")}
  62. assert_nothing_raised {t.write("bar\n")}
  63. assert_nothing_raised {t.write("b")}
  64. assert_nothing_raised {t.write("a")}
  65. assert_nothing_raised {t.write("z")}
  66. assert_nothing_raised {t.write("\n")}
  67. assert_nothing_raised {t.flush}
  68. x.close
  69. tmp.open do |f|
  70. assert_equal("foo\nbar\nbaz\n", f.read)
  71. end
  72. assert_raises(IOError) {t.read}
  73. end # def test_func_io_w
  74. def test_func_io_rw
  75. tmp = Tempfile.new("pseudoiotestXXXXXXXX")
  76. File.open(tmp.path, "w") do |f|
  77. [1,2,3].each do |i|
  78. f.write(sprintf("%s\n", i))
  79. end
  80. end
  81. x = File.open(tmp.path,"r")
  82. tmp2 = Tempfile.new("pseudoiotestXXXXXXXX")
  83. y = File.open(tmp2.path,"w")
  84. t = nil
  85. # assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new(x,"r+")}
  86. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new([x,2],"r+")}
  87. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new([2,y],"r+")}
  88. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new([x,2,3],"r+")}
  89. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new([x,y,3],"r+")}
  90. # assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new(x,"w+")}
  91. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new([x,2],"w+")}
  92. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new([2,y],"w+")}
  93. l = nil
  94. assert_nothing_raised {t = PRUNE::PseudoIO.new([x,y],"w+")}
  95. assert_equal("1\n", l = t.readline)
  96. assert_nothing_raised {t.write("x" + l)}
  97. assert_equal("2\n", l = t.readline)
  98. assert_nothing_raised {t.write("y" + l)}
  99. assert_equal("3\n", l = t.readline)
  100. assert_nothing_raised {t.write("z" + l)}
  101. assert_equal(true, t.eof?)
  102. assert_raises(EOFError) {t.readline}
  103. x.close
  104. tmp.open do |f|
  105. assert_equal("x1\ny2\nz3\n", x.read)
  106. end
  107. end # def test_func_io_rw
  108. def test_func_array_r
  109. t = nil
  110. assert_raises(ArgumentError) {PRUNE::PseudoIO.new([1,2,3],"blah")}
  111. x = [1,2,3]
  112. assert_nothing_raised {t = PRUNE::PseudoIO.new(x,"r")}
  113. assert_equal("1\n", t.readline)
  114. assert_equal("2\n", t.readline)
  115. assert_equal("3\n", t.readline)
  116. assert_equal(true, t.eof?)
  117. assert_raises(EOFError) {t.readline}
  118. assert_raises(IOError) {t.write("foo\n")}
  119. x << 4
  120. assert_nothing_raised {t.flush}
  121. assert_equal(false, t.eof?)
  122. assert_equal("4\n", t.readline)
  123. assert_equal(true, t.eof?)
  124. assert_raises(EOFError) {t.readline}
  125. end # def test_func_array_r
  126. def test_func_array_w
  127. t = nil
  128. assert_raises(ArgumentError) {PRUNE::PseudoIO.new([1,2,3],"blah")}
  129. x = []
  130. assert_nothing_raised {t = PRUNE::PseudoIO.new(x,"w")}
  131. assert_nothing_raised {t.write("foo\n")}
  132. assert_nothing_raised {t.write("bar\n")}
  133. assert_nothing_raised {t.write("b")}
  134. assert_nothing_raised {t.write("a")}
  135. assert_nothing_raised {t.write("z")}
  136. assert_nothing_raised {t.write("\n")}
  137. assert_nothing_raised {t.flush}
  138. assert_equal(["foo\n","bar\n","baz\n"], x)
  139. assert_raises(IOError) {t.read}
  140. end # def test_func_array_w
  141. def test_func_array_rw
  142. t = nil
  143. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new([1,2,3],"r+")}
  144. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new([1,2],"r+")}
  145. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new([[],2],"r+")}
  146. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new([2,[]],"r+")}
  147. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new([1,2,3],"w+")}
  148. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new([1,2],"w+")}
  149. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new([[],2],"w+")}
  150. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new([2,[]],"w+")}
  151. x = [1,2,3]
  152. y = []
  153. l = nil
  154. assert_nothing_raised {t = PRUNE::PseudoIO.new([x,y],"w+")}
  155. assert_equal("1\n", l = t.readline)
  156. assert_nothing_raised {t.write("x" + l)}
  157. assert_equal("2\n", l = t.readline)
  158. assert_nothing_raised {t.write("y" + l)}
  159. assert_equal("3\n", l = t.readline)
  160. assert_nothing_raised {t.write("z" + l)}
  161. assert_equal(true, t.eof?)
  162. assert_raises(EOFError) {t.readline}
  163. assert_nothing_raised {t.flush}
  164. assert_equal([], x)
  165. assert_equal(["x1\n","y2\n","z3\n"], y)
  166. x << 4
  167. assert_nothing_raised {t.flush}
  168. assert_equal(false, t.eof?)
  169. assert_equal("4\n", l = t.readline)
  170. assert_nothing_raised {t.write("a" + l)}
  171. assert_equal(true, t.eof?)
  172. assert_raises(EOFError) {t.readline}
  173. assert_nothing_raised {t.flush}
  174. assert_equal([], x)
  175. assert_equal(["x1\n","y2\n","z3\n","a4\n"], y)
  176. end # def test_func_array_rw
  177. def test_func_stringio_r
  178. t = nil
  179. x = StringIO.new("","w+")
  180. [1,2,3].each do |i|
  181. x.printf("%s\n", i)
  182. end
  183. pos = x.seek(0, File::SEEK_SET)
  184. assert_raises(ArgumentError) {PRUNE::PseudoIO.new(x,"blah")}
  185. assert_nothing_raised {t = PRUNE::PseudoIO.new(x,"r")}
  186. assert_equal("1\n", t.readline)
  187. assert_equal("2\n", t.readline)
  188. assert_equal("3\n", t.readline)
  189. assert_equal(true, t.eof?)
  190. assert_raises(EOFError) {t.readline}
  191. assert_raises(IOError) {t.write("foo\n")}
  192. pos = x.pos
  193. x.puts("4\n")
  194. x.seek(pos, File::SEEK_SET)
  195. assert_nothing_raised {t.flush}
  196. assert_equal(false, t.eof?)
  197. assert_equal("4\n", t.readline)
  198. assert_equal(true, t.eof?)
  199. assert_raises(EOFError) {t.readline}
  200. end # def test_func_stringio_r
  201. def test_func_stringio_w
  202. t = nil
  203. x = StringIO.new("","w+")
  204. assert_raises(ArgumentError) {PRUNE::PseudoIO.new(x,"blah")}
  205. assert_nothing_raised {t = PRUNE::PseudoIO.new(x,"w")}
  206. assert_nothing_raised {t.write("foo\n")}
  207. assert_nothing_raised {t.write("bar\n")}
  208. assert_nothing_raised {t.write("b")}
  209. assert_nothing_raised {t.write("a")}
  210. assert_nothing_raised {t.write("z")}
  211. assert_nothing_raised {t.write("\n")}
  212. assert_nothing_raised {t.flush}
  213. assert_equal("foo\nbar\nbaz\n", x.string)
  214. assert_raises(IOError) {t.read}
  215. end # def test_func_stringio_w
  216. def test_func_stringio_rw
  217. t = nil
  218. x = StringIO.new("","w+")
  219. y = StringIO.new("","w+")
  220. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new(x,"r+")}
  221. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new([x,2],"r+")}
  222. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new([2,y],"r+")}
  223. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new([x,2,3],"r+")}
  224. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new([x,y,3],"r+")}
  225. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new(x,"w+")}
  226. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new([x,2],"w+")}
  227. assert_raises(ArgumentError) {t = PRUNE::PseudoIO.new([2,y],"w+")}
  228. l = nil
  229. [1,2,3].each do |i|
  230. x.printf("%s\n",i)
  231. end
  232. x.seek(0, File::SEEK_SET);
  233. assert_nothing_raised {t = PRUNE::PseudoIO.new([x,y],"w+")}
  234. assert_equal("1\n", l = t.readline)
  235. assert_nothing_raised {t.write("x" + l)}
  236. assert_equal("2\n", l = t.readline)
  237. assert_nothing_raised {t.write("y" + l)}
  238. assert_equal("3\n", l = t.readline)
  239. assert_nothing_raised {t.write("z" + l)}
  240. assert_equal(true, t.eof?)
  241. assert_raises(EOFError) {t.readline}
  242. assert_nothing_raised {t.flush}
  243. assert_equal("x1\ny2\nz3\n", y.string)
  244. pos = x.pos
  245. x.puts("4\n")
  246. x.seek(pos, File::SEEK_SET)
  247. assert_nothing_raised {t.flush}
  248. assert_equal(false, t.eof?)
  249. assert_equal("4\n", l = t.readline)
  250. assert_nothing_raised {t.write("a" + l)}
  251. assert_equal(true, t.eof?)
  252. assert_raises(EOFError) {t.readline}
  253. assert_nothing_raised {t.flush}
  254. assert_equal("x1\ny2\nz3\na4\n", y.string)
  255. end # def test_func_stringio_rw
  256. end # class TestPRUNE__PseudoIO
  257. if $0 == __FILE__ then
  258. begin
  259. require 'main'
  260. rescue LoadError
  261. require 'tests/main'
  262. end
  263. end