wishdev-rio 0.4.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. data/COPYING +341 -0
  2. data/README +81 -0
  3. data/Rakefile +281 -0
  4. data/build_doc.rb +94 -0
  5. data/doc/ANNOUNCE +159 -0
  6. data/doc/RELEASE_NOTES +308 -0
  7. data/doc/RIOIS +215 -0
  8. data/doc/generators/template/html/rio.css +428 -0
  9. data/doc/generators/template/html/rio.rb +523 -0
  10. data/doc/generators/template/html/ugly.rb +132 -0
  11. data/doc/pkg_def.rb +60 -0
  12. data/doc/rfc1738.txt +1403 -0
  13. data/doc/rfc959.txt +3933 -0
  14. data/ex/catcsv.rb +64 -0
  15. data/ex/colx.rb +8 -0
  16. data/ex/findinruby +15 -0
  17. data/ex/findruby +14 -0
  18. data/ex/passwd_report.rb +8 -0
  19. data/ex/prompt.rb +25 -0
  20. data/ex/rgb.txt.gz +0 -0
  21. data/ex/riocat +42 -0
  22. data/ex/riogunzip +31 -0
  23. data/ex/riogzip +24 -0
  24. data/ex/rioprompt.rb +10 -0
  25. data/ex/targz2zip +17 -0
  26. data/ex/tonl +10 -0
  27. data/lib/rio/abstract_method.rb +56 -0
  28. data/lib/rio/argv.rb +56 -0
  29. data/lib/rio/arycopy.rb +43 -0
  30. data/lib/rio/assert.rb +114 -0
  31. data/lib/rio/base.rb +56 -0
  32. data/lib/rio/callstr.rb +46 -0
  33. data/lib/rio/const.rb +51 -0
  34. data/lib/rio/construct.rb +50 -0
  35. data/lib/rio/constructor.rb +258 -0
  36. data/lib/rio/context/autoclose.rb +72 -0
  37. data/lib/rio/context/copying.rb +55 -0
  38. data/lib/rio/context/cxx.rb +66 -0
  39. data/lib/rio/context/dir.rb +120 -0
  40. data/lib/rio/context/gzip.rb +50 -0
  41. data/lib/rio/context/methods.rb +182 -0
  42. data/lib/rio/context/skip.rb +66 -0
  43. data/lib/rio/context/stream.rb +229 -0
  44. data/lib/rio/context.rb +117 -0
  45. data/lib/rio/cp.rb +370 -0
  46. data/lib/rio/def.rb +53 -0
  47. data/lib/rio/dir.rb +144 -0
  48. data/lib/rio/doc/EXAMPLES.rb +299 -0
  49. data/lib/rio/doc/HOWTO.rb +737 -0
  50. data/lib/rio/doc/INDEX.rb +311 -0
  51. data/lib/rio/doc/INTRO.rb +1068 -0
  52. data/lib/rio/doc/OPTIONAL.rb +130 -0
  53. data/lib/rio/doc/SYNOPSIS.rb +183 -0
  54. data/lib/rio/doc.rb +45 -0
  55. data/lib/rio/entrysel.rb +246 -0
  56. data/lib/rio/exception/copy.rb +97 -0
  57. data/lib/rio/exception/notimplemented.rb +57 -0
  58. data/lib/rio/exception/notsupported.rb +46 -0
  59. data/lib/rio/exception/open.rb +61 -0
  60. data/lib/rio/exception/state.rb +73 -0
  61. data/lib/rio/exception.rb +41 -0
  62. data/lib/rio/ext/csv.rb +351 -0
  63. data/lib/rio/ext/if.rb +45 -0
  64. data/lib/rio/ext/mp3info.rb +80 -0
  65. data/lib/rio/ext/splitlines.rb +253 -0
  66. data/lib/rio/ext/yaml/doc.rb +133 -0
  67. data/lib/rio/ext/yaml/tie.rb +149 -0
  68. data/lib/rio/ext/yaml.rb +164 -0
  69. data/lib/rio/ext/zipfile/fs.rb +116 -0
  70. data/lib/rio/ext/zipfile/rl.rb +251 -0
  71. data/lib/rio/ext/zipfile/rootdir.rb +117 -0
  72. data/lib/rio/ext/zipfile/state.rb +161 -0
  73. data/lib/rio/ext/zipfile/wrap.rb +204 -0
  74. data/lib/rio/ext/zipfile.rb +110 -0
  75. data/lib/rio/ext.rb +138 -0
  76. data/lib/rio/factory.rb +436 -0
  77. data/lib/rio/file.rb +118 -0
  78. data/lib/rio/filter/closeoneof.rb +103 -0
  79. data/lib/rio/filter/gzip.rb +70 -0
  80. data/lib/rio/filter.rb +94 -0
  81. data/lib/rio/fs/base.rb +41 -0
  82. data/lib/rio/fs/impl.rb +122 -0
  83. data/lib/rio/fs/native.rb +75 -0
  84. data/lib/rio/fs/stream.rb +61 -0
  85. data/lib/rio/fs/url.rb +63 -0
  86. data/lib/rio/ftp/conncache.rb +101 -0
  87. data/lib/rio/ftp/dir.rb +94 -0
  88. data/lib/rio/ftp/fs.rb +180 -0
  89. data/lib/rio/ftp/ftpfile.rb +20 -0
  90. data/lib/rio/grande.rb +97 -0
  91. data/lib/rio/handle.rb +100 -0
  92. data/lib/rio/if/basic.rb +64 -0
  93. data/lib/rio/if/csv.rb +76 -0
  94. data/lib/rio/if/dir.rb +157 -0
  95. data/lib/rio/if/file.rb +89 -0
  96. data/lib/rio/if/fileordir.rb +268 -0
  97. data/lib/rio/if/grande.rb +729 -0
  98. data/lib/rio/if/grande_entry.rb +379 -0
  99. data/lib/rio/if/grande_stream.rb +693 -0
  100. data/lib/rio/if/internal.rb +125 -0
  101. data/lib/rio/if/path.rb +462 -0
  102. data/lib/rio/if/rubyio.rb +681 -0
  103. data/lib/rio/if/string.rb +83 -0
  104. data/lib/rio/if/temp.rb +45 -0
  105. data/lib/rio/if/test.rb +282 -0
  106. data/lib/rio/if/yaml.rb +206 -0
  107. data/lib/rio/if.rb +64 -0
  108. data/lib/rio/ioh.rb +162 -0
  109. data/lib/rio/iomode.rb +109 -0
  110. data/lib/rio/ios/fail.rb +106 -0
  111. data/lib/rio/ios/generic.rb +119 -0
  112. data/lib/rio/ios/mode.rb +60 -0
  113. data/lib/rio/ios/null.rb +119 -0
  114. data/lib/rio/iowrap.rb +128 -0
  115. data/lib/rio/kernel.rb +54 -0
  116. data/lib/rio/local.rb +62 -0
  117. data/lib/rio/match.rb +53 -0
  118. data/lib/rio/matchrecord.rb +283 -0
  119. data/lib/rio/no_warn.rb +49 -0
  120. data/lib/rio/nullio.rb +159 -0
  121. data/lib/rio/open3.rb +68 -0
  122. data/lib/rio/ops/construct.rb +61 -0
  123. data/lib/rio/ops/create.rb +77 -0
  124. data/lib/rio/ops/dir.rb +346 -0
  125. data/lib/rio/ops/either.rb +134 -0
  126. data/lib/rio/ops/file.rb +102 -0
  127. data/lib/rio/ops/path.rb +296 -0
  128. data/lib/rio/ops/stream/input.rb +267 -0
  129. data/lib/rio/ops/stream/output.rb +100 -0
  130. data/lib/rio/ops/stream/read.rb +86 -0
  131. data/lib/rio/ops/stream/write.rb +57 -0
  132. data/lib/rio/ops/stream.rb +87 -0
  133. data/lib/rio/ops/symlink.rb +80 -0
  134. data/lib/rio/path/reset.rb +69 -0
  135. data/lib/rio/path.rb +129 -0
  136. data/lib/rio/piper/cp.rb +80 -0
  137. data/lib/rio/piper.rb +122 -0
  138. data/lib/rio/prompt.rb +66 -0
  139. data/lib/rio/rectype.rb +88 -0
  140. data/lib/rio/rl/base.rb +118 -0
  141. data/lib/rio/rl/builder.rb +117 -0
  142. data/lib/rio/rl/chmap.rb +66 -0
  143. data/lib/rio/rl/fs2url.rb +82 -0
  144. data/lib/rio/rl/ioi.rb +78 -0
  145. data/lib/rio/rl/path.rb +110 -0
  146. data/lib/rio/rl/pathmethods.rb +116 -0
  147. data/lib/rio/rl/uri.rb +200 -0
  148. data/lib/rio/rl/withpath.rb +296 -0
  149. data/lib/rio/scheme/aryio.rb +88 -0
  150. data/lib/rio/scheme/cmdio.rb +80 -0
  151. data/lib/rio/scheme/cmdpipe.rb +118 -0
  152. data/lib/rio/scheme/fd.rb +65 -0
  153. data/lib/rio/scheme/ftp.rb +141 -0
  154. data/lib/rio/scheme/http.rb +78 -0
  155. data/lib/rio/scheme/null.rb +55 -0
  156. data/lib/rio/scheme/path.rb +98 -0
  157. data/lib/rio/scheme/stderr.rb +55 -0
  158. data/lib/rio/scheme/stdio.rb +71 -0
  159. data/lib/rio/scheme/strio.rb +87 -0
  160. data/lib/rio/scheme/sysio.rb +63 -0
  161. data/lib/rio/scheme/tcp.rb +75 -0
  162. data/lib/rio/scheme/temp.rb +200 -0
  163. data/lib/rio/state/error.rb +72 -0
  164. data/lib/rio/state.rb +242 -0
  165. data/lib/rio/stream/base.rb +54 -0
  166. data/lib/rio/stream/duplex.rb +79 -0
  167. data/lib/rio/stream/open.rb +202 -0
  168. data/lib/rio/stream.rb +181 -0
  169. data/lib/rio/symantics.rb +45 -0
  170. data/lib/rio/tempdir.rb +132 -0
  171. data/lib/rio/to_rio/all.rb +39 -0
  172. data/lib/rio/to_rio/array.rb +39 -0
  173. data/lib/rio/to_rio/io.rb +40 -0
  174. data/lib/rio/to_rio/object.rb +42 -0
  175. data/lib/rio/to_rio/string.rb +40 -0
  176. data/lib/rio/to_rio.rb +67 -0
  177. data/lib/rio/uri/file.rb +198 -0
  178. data/lib/rio/util.rb +48 -0
  179. data/lib/rio/version.rb +51 -0
  180. data/lib/rio.rb +162 -0
  181. data/setup.rb +1360 -0
  182. data/test/bin/count_lines.rb +11 -0
  183. data/test/bin/find_lines.rb +13 -0
  184. data/test/bin/list_dir.rb +14 -0
  185. data/test/ftp/all.rb +9 -0
  186. data/test/ftp/anon_copy_data.rb +36 -0
  187. data/test/ftp/anon_misc.rb +124 -0
  188. data/test/ftp/anon_read.rb +105 -0
  189. data/test/ftp/anon_special.rb +68 -0
  190. data/test/ftp/anon_write.rb +70 -0
  191. data/test/ftp/ftp2ftp.rb +51 -0
  192. data/test/ftp/initftpfiles.rb +14 -0
  193. data/test/ftp/testdef.rb +55 -0
  194. data/test/gem_runtests.rb +15 -0
  195. data/test/http/all.rb +4 -0
  196. data/test/http/copy-from-http.rb +141 -0
  197. data/test/http/uri-meta.rb +72 -0
  198. data/test/lib/temp_server.rb +46 -0
  199. data/test/runalltests.rb +17 -0
  200. data/test/runftptests.rb +14 -0
  201. data/test/runhttp.rb +11 -0
  202. data/test/runhttptests.rb +14 -0
  203. data/test/runtests.rb +52 -0
  204. data/test/tc/abs.rb +355 -0
  205. data/test/tc/all.rb +80 -0
  206. data/test/tc/base.rb +31 -0
  207. data/test/tc/base2.rb +87 -0
  208. data/test/tc/cd1.rb +113 -0
  209. data/test/tc/clearsel.rb +68 -0
  210. data/test/tc/clone.rb +208 -0
  211. data/test/tc/closeoncopy.rb +102 -0
  212. data/test/tc/closeoneof.rb +194 -0
  213. data/test/tc/cmdpipe.rb +149 -0
  214. data/test/tc/copy-dir-samevar.rb +91 -0
  215. data/test/tc/copy-from.rb +129 -0
  216. data/test/tc/copy-to.rb +91 -0
  217. data/test/tc/copy.rb +74 -0
  218. data/test/tc/copyarray.rb +188 -0
  219. data/test/tc/copydest.rb +50 -0
  220. data/test/tc/copydir.rb +166 -0
  221. data/test/tc/copydirlines.rb +121 -0
  222. data/test/tc/copylines.rb +46 -0
  223. data/test/tc/copynonex.rb +118 -0
  224. data/test/tc/copysymlink.rb +39 -0
  225. data/test/tc/create.rb +114 -0
  226. data/test/tc/csv.rb +226 -0
  227. data/test/tc/csv2.rb +138 -0
  228. data/test/tc/csv_columns.rb +37 -0
  229. data/test/tc/csvutil.rb +56 -0
  230. data/test/tc/dir.rb +76 -0
  231. data/test/tc/dir_iter.rb +383 -0
  232. data/test/tc/dirautoclose.rb +67 -0
  233. data/test/tc/dirent.rb +178 -0
  234. data/test/tc/dirss.rb +81 -0
  235. data/test/tc/each.rb +111 -0
  236. data/test/tc/each_break.rb +243 -0
  237. data/test/tc/edf.rb +81 -0
  238. data/test/tc/empty.rb +51 -0
  239. data/test/tc/emptyriodir.rb +129 -0
  240. data/test/tc/entary.rb +227 -0
  241. data/test/tc/entsel.rb +110 -0
  242. data/test/tc/eq.rb +101 -0
  243. data/test/tc/expand_path.rb +69 -0
  244. data/test/tc/ext.rb +136 -0
  245. data/test/tc/fileno.rb +94 -0
  246. data/test/tc/files_select.rb +92 -0
  247. data/test/tc/get.rb +152 -0
  248. data/test/tc/getrec.rb +137 -0
  249. data/test/tc/gzip.rb +109 -0
  250. data/test/tc/io_each_byte.rb +60 -0
  251. data/test/tc/io_read.rb +80 -0
  252. data/test/tc/iometh.rb +149 -0
  253. data/test/tc/likeio.rb +116 -0
  254. data/test/tc/line_record_row.rb +51 -0
  255. data/test/tc/lineno.rb +196 -0
  256. data/test/tc/lines.rb +66 -0
  257. data/test/tc/misc.rb +432 -0
  258. data/test/tc/nolines.rb +204 -0
  259. data/test/tc/noqae.rb +879 -0
  260. data/test/tc/null.rb +45 -0
  261. data/test/tc/once.rb +6 -0
  262. data/test/tc/overload.rb +140 -0
  263. data/test/tc/pa.rb +158 -0
  264. data/test/tc/path_parts.rb +175 -0
  265. data/test/tc/pathop.rb +60 -0
  266. data/test/tc/paths.rb +145 -0
  267. data/test/tc/pid.rb +31 -0
  268. data/test/tc/piper.rb +143 -0
  269. data/test/tc/programs_util.rb +24 -0
  270. data/test/tc/qae.rb +493 -0
  271. data/test/tc/qae_riovar.rb +499 -0
  272. data/test/tc/readline.rb +30 -0
  273. data/test/tc/records.rb +68 -0
  274. data/test/tc/rename.rb +233 -0
  275. data/test/tc/rename_assign.rb +45 -0
  276. data/test/tc/riorl.rb +181 -0
  277. data/test/tc/route.rb +51 -0
  278. data/test/tc/selnosel.rb +33 -0
  279. data/test/tc/skip.rb +89 -0
  280. data/test/tc/skiplines.rb +71 -0
  281. data/test/tc/split.rb +28 -0
  282. data/test/tc/splitlines.rb +65 -0
  283. data/test/tc/splitpath.rb +83 -0
  284. data/test/tc/sub.rb +46 -0
  285. data/test/tc/symlink.rb +176 -0
  286. data/test/tc/symlink0.rb +348 -0
  287. data/test/tc/symlink1.rb +114 -0
  288. data/test/tc/synopsis.rb +75 -0
  289. data/test/tc/temp.rb +152 -0
  290. data/test/tc/tempdir.rb +60 -0
  291. data/test/tc/tempfile.rb +66 -0
  292. data/test/tc/testcase.rb +170 -0
  293. data/test/tc/tonl.rb +37 -0
  294. data/test/tc/truncate.rb +39 -0
  295. data/test/tc/yaml.rb +275 -0
  296. metadata +387 -0
@@ -0,0 +1,92 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'tc/testcase'
9
+
10
+ class TC_files_select < Test::RIO::TestCase
11
+ @@once = false
12
+ def self.once
13
+ @@once = true
14
+ rio('d0').delete!.mkdir
15
+ rio('f0').delete!.puts!("f0:L0")
16
+ rio('f1').delete!.puts!("f1:L0")
17
+ rio('d0/f2').puts!("d0/f2:L0")
18
+ rio('d0/f3').puts!("d0/f3:L0")
19
+ end
20
+ def setup
21
+ super
22
+ self.class.once unless @@once
23
+ end
24
+
25
+ def test_files_method_with_dir_rio_each
26
+ #$trace_states = true
27
+ ans = []
28
+ rio('d0').files.each { |f|
29
+ ans << f
30
+ }
31
+ assert_equal(['d0/f2','d0/f3'],smap(ans))
32
+ end
33
+ def test_files_method_with_dir_rio_each_skip
34
+ #$trace_states = true
35
+ ans = []
36
+ rio('d0').skip('f*').files.each { |f|
37
+ ans << f
38
+ }
39
+ assert(ans.empty?)
40
+ end
41
+ def test_files_method_with_file_rio_each_skip
42
+ #$trace_states = true
43
+ ans = []
44
+ rio('f0').skip('f*').files.each { |f|
45
+ ans << f
46
+ }
47
+ assert(ans.empty?)
48
+ end
49
+ def test_files_method_with_file_rio_each
50
+ #$trace_states = true
51
+ ans = []
52
+ rio('f0').files.each { |f|
53
+ ans << f
54
+ }
55
+ assert_equal(['f0'],smap(ans))
56
+ end
57
+ def test_files_and_lines_with_file_rio_each
58
+ #$trace_states = true
59
+ ans = []
60
+ rio('f0').files.lines.each { |f|
61
+ ans << f
62
+ }
63
+ assert_equal(["f0:L0\n"],smap(ans))
64
+ end
65
+ def test_files_method_with_file_rio_to_a
66
+ #$trace_states = true
67
+ ans = rio('f0').files.to_a
68
+ assert_equal(['f0'],smap(ans))
69
+ end
70
+ def test_files_method_with_file_rio_ss
71
+ #$trace_states = true
72
+ ans = rio('f0').files[]
73
+ assert_equal(['f0'],smap(ans))
74
+ end
75
+ def test_files_method_with_file_rio_ss_skip
76
+ #$trace_states = true
77
+ ans = rio('f0').skip('f*').files[]
78
+ assert_equal([],smap(ans))
79
+ end
80
+ def test_files_method_with_file_rio_ss_args_select
81
+ #$trace_states = true
82
+ ans = rio('f0').files['f*']
83
+ assert_equal(['f0'],smap(ans))
84
+ end
85
+ def test_files_method_with_file_rio_ss_args_dontselect
86
+ #$trace_states = true
87
+ ans = rio('f0').files['g*']
88
+ assert_equal([],smap(ans))
89
+ end
90
+
91
+ end
92
+
data/test/tc/get.rb ADDED
@@ -0,0 +1,152 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'tc/testcase'
9
+
10
+ class TC_get < Test::RIO::TestCase
11
+ @@once = false
12
+ def self.once
13
+ @@once = true
14
+ end
15
+ def setup
16
+ super
17
+ self.class.once unless @@once
18
+ end
19
+ def test_file
20
+ (0..4).each do |n_lines|
21
+ get_each(n_lines)
22
+ end
23
+ end
24
+ def get_each(n_lines)
25
+ f = rio('f.txt')
26
+ expa = (0..n_lines-1).map { |a| "Line#{a}\n" }
27
+ f < expa
28
+
29
+ f = rio('f.txt')
30
+ assert_equal(expa,f[])
31
+ # $trace_states = true
32
+
33
+ # iterate twice using #get (no auto close)
34
+ begin
35
+ f = rio('f.txt').nocloseoneof
36
+ ans = []
37
+ while rec = f.get
38
+ ans << rec
39
+ end
40
+ assert_equal(expa,ans)
41
+ while rec = f.get
42
+ ans << rec
43
+ end
44
+ assert_equal(expa,ans)
45
+ end
46
+
47
+ # iterate using #get then using #each (no auto close)
48
+ begin
49
+ f = rio('f.txt').nocloseoneof
50
+ ans = []
51
+ while rec = f.get
52
+ ans << rec
53
+ end
54
+ assert_equal(expa,ans)
55
+ f.each do |rec|
56
+ ans << rec
57
+ end
58
+ assert_equal(expa,ans)
59
+ end
60
+
61
+ # iterate using #each then using #get (no auto close)
62
+ begin
63
+ f = rio('f.txt').nocloseoneof
64
+ ans = []
65
+ f.each do |rec|
66
+ ans << rec
67
+ end
68
+ assert_equal(expa,ans)
69
+ while rec = f.get
70
+ ans << rec
71
+ end
72
+ assert_equal(expa,ans)
73
+ end
74
+
75
+ # iterate twice using #get (with auto close)
76
+ begin
77
+ f = rio('f.txt')
78
+ ans = []
79
+ while rec = f.get
80
+ ans << rec
81
+ end
82
+ assert_equal(expa,ans)
83
+ while rec = f.get
84
+ ans << rec
85
+ end
86
+ assert_equal(expa+expa,ans)
87
+ end
88
+
89
+ # assure get does not return nil once after iteration using #each (with auto close)
90
+ begin
91
+ f = rio('f.txt')
92
+ ans = []
93
+
94
+ f.each do |rec|
95
+ ans << rec
96
+ end
97
+ assert_equal(expa,ans)
98
+
99
+ #rec = f.get
100
+ #assert_nil(rec)
101
+
102
+ rec = f.get
103
+ assert_equal(expa[0],rec)
104
+ end
105
+
106
+ begin
107
+ f = rio('f.txt')
108
+ ans = []
109
+
110
+ rec = f.get
111
+ assert_equal(expa[0],rec)
112
+ ans << rec unless rec.nil?
113
+ f.each do |rec|
114
+ ans << rec
115
+ end
116
+ rec = f.get
117
+ assert_equal(expa[0],rec)
118
+ end
119
+
120
+ begin
121
+ f = rio('f.txt')
122
+ ans = []
123
+
124
+ (0...n_lines).each do |n|
125
+ rec = f.get
126
+ assert_equal(expa[n],rec)
127
+ end
128
+ rec = f.get
129
+ assert_nil(rec)
130
+
131
+ f.each do |rec|
132
+ ans << rec
133
+ end
134
+ assert_equal(expa,ans)
135
+ end
136
+
137
+ begin
138
+ f = rio('f.txt')
139
+ ans = []
140
+ # read all the lines
141
+ (0...n_lines).each do |n|
142
+ rec = f.get
143
+ assert_equal(expa[n],rec)
144
+ end
145
+ assert(f.eof?)
146
+ f.each do |rec|
147
+ ans << rec
148
+ end
149
+ assert_equal([],ans)
150
+ end
151
+ end
152
+ end
data/test/tc/getrec.rb ADDED
@@ -0,0 +1,137 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+ require 'rio'
7
+ require 'test/unit'
8
+ require 'test/unit/testsuite'
9
+
10
+ class TC_RIO_getrec < Test::Unit::TestCase
11
+ def test_basic
12
+ qp = rio('qp')
13
+ rio(qp,'getrec').rmtree.mkpath.chdir do
14
+ (0..4).each do |n_lines|
15
+ getrec_each(n_lines)
16
+ end
17
+ end
18
+ end
19
+ def getrec_each(n_lines)
20
+ f = rio('f.txt')
21
+ expa = (0..n_lines-1).map { |a| "Line#{a}\n" }
22
+ f < expa
23
+
24
+ f = rio('f.txt')
25
+ assert_equal(expa,f[])
26
+ # $trace_states = true
27
+ begin
28
+ f = rio('f.txt').nocloseoneof
29
+ ans = []
30
+ while rec = f.getrec
31
+ ans << rec
32
+ end
33
+ assert_equal(expa,ans)
34
+ while rec = f.getrec
35
+ ans << rec
36
+ end
37
+ assert_equal(expa,ans)
38
+ end
39
+
40
+ begin
41
+ f = rio('f.txt').nocloseoneof
42
+ ans = []
43
+ while rec = f.getrec
44
+ ans << rec
45
+ end
46
+ assert_equal(expa,ans)
47
+ f.each do |rec|
48
+ ans << rec
49
+ end
50
+ assert_equal(expa,ans)
51
+ end
52
+
53
+ begin
54
+ f = rio('f.txt').nocloseoneof
55
+ ans = []
56
+ f.each do |rec|
57
+ ans << rec
58
+ end
59
+ assert_equal(expa,ans)
60
+ while rec = f.getrec
61
+ ans << rec
62
+ end
63
+ assert_equal(expa,ans)
64
+ end
65
+
66
+ begin
67
+ f = rio('f.txt')
68
+ ans = []
69
+ while rec = f.getrec
70
+ ans << rec
71
+ end
72
+ assert_equal(expa,ans)
73
+ while rec = f.getrec
74
+ ans << rec
75
+ end
76
+ assert_equal(expa+expa,ans)
77
+ end
78
+
79
+ begin
80
+ f = rio('f.txt')
81
+ ans = []
82
+
83
+ f.each do |rec|
84
+ ans << rec
85
+ end
86
+ assert_equal(expa,ans)
87
+
88
+ rec = f.getrec
89
+ assert_equal(expa[0],rec)
90
+ end
91
+
92
+ begin
93
+ f = rio('f.txt')
94
+ ans = []
95
+
96
+ rec = f.getrec
97
+ assert_equal(expa[0],rec)
98
+ ans << rec unless rec.nil?
99
+ f.each do |rec|
100
+ ans << rec
101
+ end
102
+ rec = f.getrec
103
+ assert_equal(expa[0],rec)
104
+ end
105
+
106
+ begin
107
+ f = rio('f.txt')
108
+ ans = []
109
+
110
+ (0...n_lines).each do |n|
111
+ rec = f.getrec
112
+ assert_equal(expa[n],rec)
113
+ end
114
+ rec = f.getrec
115
+ assert_nil(rec)
116
+
117
+ f.each do |rec|
118
+ ans << rec
119
+ end
120
+ assert_equal(expa,ans)
121
+ end
122
+
123
+ begin
124
+ f = rio('f.txt')
125
+ ans = []
126
+
127
+ (0...n_lines).each do |n|
128
+ rec = f.getrec
129
+ assert_equal(expa[n],rec)
130
+ end
131
+ f.each do |rec|
132
+ ans << rec
133
+ end
134
+ assert_equal([],ans)
135
+ end
136
+ end
137
+ end
data/test/tc/gzip.rb ADDED
@@ -0,0 +1,109 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'tc/testcase'
9
+
10
+ class TC_gzip < Test::RIO::TestCase
11
+ @@once = false
12
+ def self.once
13
+ @@once = true
14
+ end
15
+ def setup()
16
+ super
17
+ end
18
+
19
+ def test_string
20
+ plain_string = "Hello World\n"
21
+
22
+ gzip_string = ""
23
+ ans_string = ""
24
+ rio(?",plain_string) > rio(?",gzip_string).gzip
25
+ rio(?",gzip_string).gzip > rio(?",ans_string)
26
+ assert_equal(plain_string,ans_string)
27
+
28
+ gzip_string = ""
29
+ ans_string = ""
30
+ rio(?",gzip_string).gzip < rio(?",plain_string)
31
+ rio(?",ans_string) < rio(?",gzip_string).gzip
32
+ assert_equal(plain_string,ans_string)
33
+
34
+ end
35
+
36
+ def test_string2
37
+ str = "Hello World\n"
38
+ src = rio(?").print!(str)
39
+ ans = rio(?")
40
+
41
+ ans.string = ""
42
+ rio(?").gzip < src > ans
43
+ assert_equal(str,ans.string)
44
+
45
+ ans.string = ""
46
+ src | rio(?").gzip | ans
47
+ assert_equal(str,ans.string)
48
+
49
+ end
50
+
51
+ def test_file
52
+ str = "Hello World"
53
+ rio('src').puts!(str)
54
+
55
+ rio('src.gz').delete!
56
+ rio('ans').delete!
57
+ rio('src') > rio('src.gz').gzip
58
+ rio('src.gz').gzip > rio('ans')
59
+ assert_equal(str,rio('ans').chomp.line[0])
60
+
61
+ rio('src.gz').delete!
62
+ rio('ans').delete!
63
+ rio('src.gz').gzip < rio('src')
64
+ rio('ans') < rio('src.gz').gzip
65
+ assert_equal(str,rio('ans').chomp.line[0])
66
+
67
+ end
68
+
69
+ def test_file_each
70
+ str = "Hello World\n"
71
+ rio('src').print!(str)
72
+
73
+ rio('src.gz').delete!
74
+ rio('ans').delete!
75
+ dst = rio('src.gz').gzip
76
+ rio('src').each do |l|
77
+ dst.print(l)
78
+ end
79
+ dst.close
80
+ ans = rio('ans')
81
+ rio('src.gz').gzip do |l|
82
+ ans.print(l)
83
+ end
84
+ ans.close
85
+
86
+ assert_equal(str,rio('ans').contents)
87
+
88
+ # rio('src.gz').delete!
89
+ # rio('ans').delete!
90
+ # rio('src.gz').gzip < rio('src')
91
+ # rio('ans') < rio('src.gz').gzip
92
+ # assert_equal(str,rio('ans').contents)
93
+
94
+ end
95
+
96
+ def test_tempfile
97
+ str = "Hello World\n"
98
+ src = rio(?").print!(str)
99
+ ans = rio(?")
100
+
101
+ tmp = rio(??).gzip
102
+ tmp < src
103
+ assert_equal(str,tmp.rewind.contents)
104
+ tmp.rewind > ans
105
+ assert_equal(str,ans.contents)
106
+ end
107
+
108
+
109
+ end