rbkb 0.6.10
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.
- data/History.txt +74 -0
- data/README.rdoc +149 -0
- data/Rakefile +47 -0
- data/bin/b64 +5 -0
- data/bin/bgrep +5 -0
- data/bin/blit +5 -0
- data/bin/c +5 -0
- data/bin/crc32 +5 -0
- data/bin/d64 +5 -0
- data/bin/dedump +5 -0
- data/bin/feed +5 -0
- data/bin/hexify +5 -0
- data/bin/len +5 -0
- data/bin/plugsrv +271 -0
- data/bin/rex +10 -0
- data/bin/rstrings +5 -0
- data/bin/slice +5 -0
- data/bin/telson +5 -0
- data/bin/unhexify +5 -0
- data/bin/urldec +5 -0
- data/bin/urlenc +5 -0
- data/bin/xor +5 -0
- data/cli_usage.rdoc +285 -0
- data/doctor-bag.jpg +0 -0
- data/lib/rbkb.rb +51 -0
- data/lib/rbkb/cli.rb +219 -0
- data/lib/rbkb/cli/b64.rb +35 -0
- data/lib/rbkb/cli/bgrep.rb +86 -0
- data/lib/rbkb/cli/blit.rb +89 -0
- data/lib/rbkb/cli/chars.rb +24 -0
- data/lib/rbkb/cli/crc32.rb +35 -0
- data/lib/rbkb/cli/d64.rb +28 -0
- data/lib/rbkb/cli/dedump.rb +52 -0
- data/lib/rbkb/cli/feed.rb +229 -0
- data/lib/rbkb/cli/hexify.rb +65 -0
- data/lib/rbkb/cli/len.rb +76 -0
- data/lib/rbkb/cli/rstrings.rb +108 -0
- data/lib/rbkb/cli/slice.rb +47 -0
- data/lib/rbkb/cli/telson.rb +87 -0
- data/lib/rbkb/cli/unhexify.rb +50 -0
- data/lib/rbkb/cli/urldec.rb +35 -0
- data/lib/rbkb/cli/urlenc.rb +35 -0
- data/lib/rbkb/cli/xor.rb +43 -0
- data/lib/rbkb/extends.rb +725 -0
- data/lib/rbkb/http.rb +21 -0
- data/lib/rbkb/http/base.rb +172 -0
- data/lib/rbkb/http/body.rb +214 -0
- data/lib/rbkb/http/common.rb +74 -0
- data/lib/rbkb/http/headers.rb +370 -0
- data/lib/rbkb/http/parameters.rb +104 -0
- data/lib/rbkb/http/request.rb +58 -0
- data/lib/rbkb/http/response.rb +86 -0
- data/lib/rbkb/plug.rb +9 -0
- data/lib/rbkb/plug/blit.rb +222 -0
- data/lib/rbkb/plug/cli.rb +83 -0
- data/lib/rbkb/plug/feed_import.rb +74 -0
- data/lib/rbkb/plug/peer.rb +67 -0
- data/lib/rbkb/plug/plug.rb +215 -0
- data/lib/rbkb/plug/proxy.rb +26 -0
- data/lib/rbkb/plug/unix_domain.rb +75 -0
- data/lib_usage.rdoc +176 -0
- data/rbkb.gemspec +38 -0
- data/spec/rbkb_spec.rb +7 -0
- data/spec/spec_helper.rb +16 -0
- data/tasks/ann.rake +80 -0
- data/tasks/bones.rake +20 -0
- data/tasks/gem.rake +201 -0
- data/tasks/git.rake +40 -0
- data/tasks/notes.rake +27 -0
- data/tasks/post_load.rake +34 -0
- data/tasks/rdoc.rake +51 -0
- data/tasks/rubyforge.rake +55 -0
- data/tasks/setup.rb +292 -0
- data/tasks/spec.rake +54 -0
- data/tasks/svn.rake +47 -0
- data/tasks/test.rake +40 -0
- data/test/test_cli_b64.rb +35 -0
- data/test/test_cli_bgrep.rb +137 -0
- data/test/test_cli_blit.rb +11 -0
- data/test/test_cli_chars.rb +21 -0
- data/test/test_cli_crc32.rb +108 -0
- data/test/test_cli_d64.rb +22 -0
- data/test/test_cli_dedump.rb +118 -0
- data/test/test_cli_feed.rb +11 -0
- data/test/test_cli_helper.rb +96 -0
- data/test/test_cli_hexify.rb +63 -0
- data/test/test_cli_len.rb +96 -0
- data/test/test_cli_rstrings.rb +15 -0
- data/test/test_cli_slice.rb +73 -0
- data/test/test_cli_telson.rb +11 -0
- data/test/test_cli_unhexify.rb +43 -0
- data/test/test_cli_urldec.rb +50 -0
- data/test/test_cli_urlenc.rb +44 -0
- data/test/test_cli_xor.rb +71 -0
- data/test/test_helper.rb +5 -0
- data/test/test_http.rb +27 -0
- data/test/test_http_helper.rb +60 -0
- data/test/test_http_request.rb +136 -0
- data/test/test_http_response.rb +222 -0
- data/test/test_rbkb.rb +19 -0
- metadata +238 -0
data/tasks/spec.rake
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
|
2
|
+
if HAVE_SPEC_RAKE_SPECTASK and not PROJ.spec.files.to_a.empty?
|
3
|
+
require 'spec/rake/verify_rcov'
|
4
|
+
|
5
|
+
namespace :spec do
|
6
|
+
|
7
|
+
desc 'Run all specs with basic output'
|
8
|
+
Spec::Rake::SpecTask.new(:run) do |t|
|
9
|
+
t.ruby_opts = PROJ.ruby_opts
|
10
|
+
t.spec_opts = PROJ.spec.opts
|
11
|
+
t.spec_files = PROJ.spec.files
|
12
|
+
t.libs += PROJ.libs
|
13
|
+
end
|
14
|
+
|
15
|
+
desc 'Run all specs with text output'
|
16
|
+
Spec::Rake::SpecTask.new(:specdoc) do |t|
|
17
|
+
t.ruby_opts = PROJ.ruby_opts
|
18
|
+
t.spec_opts = PROJ.spec.opts + ['--format', 'specdoc']
|
19
|
+
t.spec_files = PROJ.spec.files
|
20
|
+
t.libs += PROJ.libs
|
21
|
+
end
|
22
|
+
|
23
|
+
if HAVE_RCOV
|
24
|
+
desc 'Run all specs with RCov'
|
25
|
+
Spec::Rake::SpecTask.new(:rcov) do |t|
|
26
|
+
t.ruby_opts = PROJ.ruby_opts
|
27
|
+
t.spec_opts = PROJ.spec.opts
|
28
|
+
t.spec_files = PROJ.spec.files
|
29
|
+
t.libs += PROJ.libs
|
30
|
+
t.rcov = true
|
31
|
+
t.rcov_dir = PROJ.rcov.dir
|
32
|
+
t.rcov_opts = PROJ.rcov.opts + ['--exclude', 'spec']
|
33
|
+
end
|
34
|
+
|
35
|
+
RCov::VerifyTask.new(:verify) do |t|
|
36
|
+
t.threshold = PROJ.rcov.threshold
|
37
|
+
t.index_html = File.join(PROJ.rcov.dir, 'index.html')
|
38
|
+
t.require_exact_threshold = PROJ.rcov.threshold_exact
|
39
|
+
end
|
40
|
+
|
41
|
+
task :verify => :rcov
|
42
|
+
remove_desc_for_task %w(spec:clobber_rcov)
|
43
|
+
end
|
44
|
+
|
45
|
+
end # namespace :spec
|
46
|
+
|
47
|
+
desc 'Alias to spec:run'
|
48
|
+
task :spec => 'spec:run'
|
49
|
+
|
50
|
+
task :clobber => 'spec:clobber_rcov' if HAVE_RCOV
|
51
|
+
|
52
|
+
end # if HAVE_SPEC_RAKE_SPECTASK
|
53
|
+
|
54
|
+
# EOF
|
data/tasks/svn.rake
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
|
2
|
+
if HAVE_SVN
|
3
|
+
|
4
|
+
unless PROJ.svn.root
|
5
|
+
info = %x/svn info ./
|
6
|
+
m = %r/^Repository Root:\s+(.*)$/.match(info)
|
7
|
+
PROJ.svn.root = (m.nil? ? '' : m[1])
|
8
|
+
end
|
9
|
+
PROJ.svn.root = File.join(PROJ.svn.root, PROJ.svn.path) unless PROJ.svn.path.empty?
|
10
|
+
|
11
|
+
namespace :svn do
|
12
|
+
|
13
|
+
# A prerequisites task that all other tasks depend upon
|
14
|
+
task :prereqs
|
15
|
+
|
16
|
+
desc 'Show tags from the SVN repository'
|
17
|
+
task :show_tags => 'svn:prereqs' do |t|
|
18
|
+
tags = %x/svn list #{File.join(PROJ.svn.root, PROJ.svn.tags)}/
|
19
|
+
tags.gsub!(%r/\/$/, '')
|
20
|
+
tags = tags.split("\n").sort {|a,b| b <=> a}
|
21
|
+
puts tags
|
22
|
+
end
|
23
|
+
|
24
|
+
desc 'Create a new tag in the SVN repository'
|
25
|
+
task :create_tag => 'svn:prereqs' do |t|
|
26
|
+
v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
|
27
|
+
abort "Versions don't match #{v} vs #{PROJ.version}" if v != PROJ.version
|
28
|
+
|
29
|
+
svn = PROJ.svn
|
30
|
+
trunk = File.join(svn.root, svn.trunk)
|
31
|
+
tag = "%s-%s" % [PROJ.name, PROJ.version]
|
32
|
+
tag = File.join(svn.root, svn.tags, tag)
|
33
|
+
msg = "Creating tag for #{PROJ.name} version #{PROJ.version}"
|
34
|
+
|
35
|
+
puts "Creating SVN tag '#{tag}'"
|
36
|
+
unless system "svn cp -m '#{msg}' #{trunk} #{tag}"
|
37
|
+
abort "Tag creation failed"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
end # namespace :svn
|
42
|
+
|
43
|
+
task 'gem:release' => 'svn:create_tag'
|
44
|
+
|
45
|
+
end # if PROJ.svn.path
|
46
|
+
|
47
|
+
# EOF
|
data/tasks/test.rake
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
|
2
|
+
if test(?e, PROJ.test.file) or not PROJ.test.files.to_a.empty?
|
3
|
+
require 'rake/testtask'
|
4
|
+
|
5
|
+
namespace :test do
|
6
|
+
|
7
|
+
Rake::TestTask.new(:run) do |t|
|
8
|
+
t.libs = PROJ.libs
|
9
|
+
t.test_files = if test(?f, PROJ.test.file) then [PROJ.test.file]
|
10
|
+
else PROJ.test.files end
|
11
|
+
t.ruby_opts += PROJ.ruby_opts
|
12
|
+
t.ruby_opts += PROJ.test.opts
|
13
|
+
end
|
14
|
+
|
15
|
+
if HAVE_RCOV
|
16
|
+
desc 'Run rcov on the unit tests'
|
17
|
+
task :rcov => :clobber_rcov do
|
18
|
+
opts = PROJ.rcov.opts.dup << '-o' << PROJ.rcov.dir
|
19
|
+
opts = opts.join(' ')
|
20
|
+
files = if test(?f, PROJ.test.file) then [PROJ.test.file]
|
21
|
+
else PROJ.test.files end
|
22
|
+
files = files.join(' ')
|
23
|
+
sh "#{RCOV} #{files} #{opts}"
|
24
|
+
end
|
25
|
+
|
26
|
+
task :clobber_rcov do
|
27
|
+
rm_r 'coverage' rescue nil
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end # namespace :test
|
32
|
+
|
33
|
+
desc 'Alias to test:run'
|
34
|
+
task :test => 'test:run'
|
35
|
+
|
36
|
+
task :clobber => 'test:clobber_rcov' if HAVE_RCOV
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
# EOF
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_cli_helper.rb")
|
2
|
+
require 'rbkb/cli/b64'
|
3
|
+
|
4
|
+
class TestCliB64 < Test::Unit::TestCase
|
5
|
+
include CliTest
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@cli_class = Rbkb::Cli::B64
|
9
|
+
super()
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_basic_string_arg
|
13
|
+
assert_equal 0, run_with_args(%w(fooby))
|
14
|
+
assert_equal "Zm9vYnk=\n", @stdout_io.string
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_stdin
|
18
|
+
@stdin_io.write("fooby") ; @stdin_io.rewind
|
19
|
+
assert_equal 0, run_with_args()
|
20
|
+
assert_equal "Zm9vYnk=\n", @stdout_io.string
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
def test_length_arg
|
25
|
+
assert_equal 0, run_with_args(%w(-l 2 fooby))
|
26
|
+
assert_equal "Zm\n9v\nYn\nk=\n", @stdout_io.string
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_bad_length_arg
|
30
|
+
assert_equal 1, run_with_args(%w(-l -2 fooby))
|
31
|
+
assert_match(/length must be > 0/, @stderr_io.string)
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,137 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_cli_helper.rb")
|
2
|
+
require 'rbkb/cli/bgrep'
|
3
|
+
|
4
|
+
class TestCliBgrep < Test::Unit::TestCase
|
5
|
+
include CliTest
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@cli_class = Rbkb::Cli::Bgrep
|
9
|
+
super()
|
10
|
+
|
11
|
+
@rawdat = (0..255).map {|x| x.chr}.join
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_need_search_arg
|
15
|
+
@stdin_io.write(@rawdat) ; @stdin_io.rewind
|
16
|
+
assert_equal 1, go_with_args()
|
17
|
+
assert_match(/need search argument/i, @stderr_io.string)
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_search_arg_exclusive
|
21
|
+
@stdin_io.write(@rawdat) ; @stdin_io.rewind
|
22
|
+
assert_equal 1, go_with_args(%w(-r ABCD -x 41424344))
|
23
|
+
assert_match(/are mutually exclusive/i, @stderr_io.string)
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_stdin_str_grep
|
27
|
+
@stdin_io.write(@rawdat) ; @stdin_io.rewind
|
28
|
+
assert_equal 0, go_with_args(%w(-r ABCD))
|
29
|
+
assert_equal %(00000041:00000045:b:"ABCD"\n), @stdout_io.string
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_stdin_regex_grep
|
33
|
+
@stdin_io.write(@rawdat) ; @stdin_io.rewind
|
34
|
+
assert_equal 0, go_with_args(%w(-r A..D))
|
35
|
+
assert_equal %(00000041:00000045:b:"ABCD"\n), @stdout_io.string
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_stdin_hex_grep
|
39
|
+
@stdin_io.write(@rawdat) ; @stdin_io.rewind
|
40
|
+
assert_equal 0, go_with_args(%w(-x 41424344))
|
41
|
+
assert_equal %(00000041:00000045:b:"ABCD"\n), @stdout_io.string
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_alignment_arg
|
45
|
+
@stdin_io.write(@rawdat) ; @stdin_io.rewind
|
46
|
+
assert_equal 0, go_with_args(%w(-a 2 -r BCDE))
|
47
|
+
assert_equal %(00000042:00000046:b:"BCDE"\n), @stdout_io.string
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_alignment_arg_not_aligned
|
51
|
+
@stdin_io.write(@rawdat) ; @stdin_io.rewind
|
52
|
+
assert_equal 0, go_with_args(%w(-a 2 -r ABCD))
|
53
|
+
assert_equal "", @stdout_io.string
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
def test_stdin_str_grep_twohits
|
58
|
+
@stdin_io.write(@rawdat*2) ; @stdin_io.rewind
|
59
|
+
assert_equal 0, go_with_args(%w(-r ABCD))
|
60
|
+
assert_equal %(00000041:00000045:b:"ABCD"\n00000141:00000145:b:"ABCD"\n), @stdout_io.string
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_stdin_hex_grep_twohits
|
64
|
+
@stdin_io.write(@rawdat*2) ; @stdin_io.rewind
|
65
|
+
assert_equal 0, go_with_args(%w(-x 41424344))
|
66
|
+
assert_equal( %(00000041:00000045:b:"ABCD"\n)+
|
67
|
+
%(00000141:00000145:b:"ABCD"\n),
|
68
|
+
@stdout_io.string )
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_file_arg
|
72
|
+
with_testfile do |fname, f|
|
73
|
+
f.write(@rawdat) ; f.close
|
74
|
+
assert_equal 0, go_with_args(%w(-r ABCD) << fname)
|
75
|
+
assert_equal %(00000041:00000045:b:"ABCD"\n), @stdout_io.string
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_multi_file_arg
|
80
|
+
with_testfile do |fname1, f1|
|
81
|
+
f1.write(@rawdat) ; f1.close
|
82
|
+
|
83
|
+
with_testfile do |fname2, f2|
|
84
|
+
f2.write(@rawdat) ; f2.close
|
85
|
+
assert_equal 0, go_with_args(["-r", "ABCD", fname1, fname2])
|
86
|
+
assert_equal( %(#{fname1}:00000041:00000045:b:"ABCD"\n)+
|
87
|
+
%(#{fname2}:00000041:00000045:b:"ABCD"\n),
|
88
|
+
@stdout_io.string )
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_multi_file_arg_include_filenames_long
|
94
|
+
with_testfile do |fname1, f1|
|
95
|
+
f1.write(@rawdat) ; f1.close
|
96
|
+
|
97
|
+
with_testfile do |fname2, f2|
|
98
|
+
f2.write(@rawdat) ; f2.close
|
99
|
+
assert_equal 0, go_with_args(%w(--filename -r ABCD) + [fname1, fname2])
|
100
|
+
assert_equal( %(#{fname1}:00000041:00000045:b:"ABCD"\n)+
|
101
|
+
%(#{fname2}:00000041:00000045:b:"ABCD"\n),
|
102
|
+
@stdout_io.string )
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def test_multi_file_arg_include_filenames_short
|
108
|
+
with_testfile do |fname1, f1|
|
109
|
+
f1.write(@rawdat) ; f1.close
|
110
|
+
|
111
|
+
with_testfile do |fname2, f2|
|
112
|
+
f2.write(@rawdat) ; f2.close
|
113
|
+
assert_equal 0, go_with_args(%w(-n -r ABCD) + [fname1, fname2])
|
114
|
+
assert_equal( %(#{fname1}:00000041:00000045:b:"ABCD"\n)+
|
115
|
+
%(#{fname2}:00000041:00000045:b:"ABCD"\n),
|
116
|
+
@stdout_io.string )
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
|
122
|
+
def test_multi_file_arg_suppress_filenames_long
|
123
|
+
with_testfile do |fname1, f1|
|
124
|
+
f1.write(@rawdat) ; f1.close
|
125
|
+
|
126
|
+
with_testfile do |fname2, f2|
|
127
|
+
f2.write(@rawdat) ; f2.close
|
128
|
+
assert_equal 0, go_with_args(%w(--no-filename -r ABCD)+[fname1, fname2])
|
129
|
+
assert_equal( %(00000041:00000045:b:"ABCD"\n)+
|
130
|
+
%(00000041:00000045:b:"ABCD"\n),
|
131
|
+
@stdout_io.string )
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
|
137
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_cli_helper.rb")
|
2
|
+
|
3
|
+
class TestCliChars < Test::Unit::TestCase
|
4
|
+
include CliTest
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@cli_class = Rbkb::Cli::Chars
|
8
|
+
super()
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_chars
|
12
|
+
assert_equal 0, go_with_args(%w(1000 A))
|
13
|
+
assert_equal "A"*1000, @stdout_io.string
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_bad_arguments
|
17
|
+
assert_equal 1, go_with_args(["asdf"])
|
18
|
+
assert_match(/bad arguments/i, @stderr_io.string)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_cli_helper.rb")
|
2
|
+
require 'rbkb/cli/crc32'
|
3
|
+
|
4
|
+
class TestCliCrc32 < Test::Unit::TestCase
|
5
|
+
include CliTest
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@cli_class = Rbkb::Cli::Crc32
|
9
|
+
super()
|
10
|
+
@rawdat = "\306\363\375/l\375\204oK\215o\275\334\037\254\333\276\257\313\267\fr\231\333!\373v|\303W7p\263\307\034X\300~\2671R\252\026\246\263\231\276\314"
|
11
|
+
@rawsz = @rawdat.size
|
12
|
+
@crc_int = 0xa7641684
|
13
|
+
@crc_out ="a7641684\n"
|
14
|
+
@stdin_io.write(@rawdat) ; @stdin_io.rewind
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_stdin
|
18
|
+
assert_equal 0, go_with_args()
|
19
|
+
assert_equal(@crc_out, @stdout_io.string)
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_file_input_arg
|
23
|
+
with_testfile do |fname, tf|
|
24
|
+
tf.write @rawdat; tf.close
|
25
|
+
assert_equal 0, go_with_args([fname])
|
26
|
+
assert_equal(@crc_out, @stdout_io.string)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
def test_file_input_flag
|
32
|
+
with_testfile do |fname, tf|
|
33
|
+
tf.write @rawdat; tf.close
|
34
|
+
assert_equal 0, go_with_args(["-f", fname])
|
35
|
+
assert_equal(@crc_out, @stdout_io.string)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_start_from_end_zero
|
40
|
+
assert_equal 0, go_with_args(%w(-r 48))
|
41
|
+
assert_equal("00000000\n", @stdout_io.string)
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_start_from_end_zero_hex
|
45
|
+
assert_equal 0, go_with_args(%w(-x 00:30))
|
46
|
+
assert_equal(@crc_out, @stdout_io.string)
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_range_zero_start
|
50
|
+
assert_equal 0, go_with_args(%w(-r 0:48))
|
51
|
+
assert_equal(@crc_out, @stdout_io.string)
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_range
|
55
|
+
assert_equal 0, go_with_args(%w{-x 30})
|
56
|
+
assert_equal("00000000\n", @stdout_io.string)
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_range_sixteen_thru_end
|
60
|
+
assert_equal 0, go_with_args(%w(-r 16))
|
61
|
+
assert_equal "de84e464\n", @stdout_io.string
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_range_sixteen_thru_end_hex
|
65
|
+
assert_equal 0, go_with_args(%w(-x 10))
|
66
|
+
assert_equal "de84e464\n", @stdout_io.string
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_range_last_ten
|
70
|
+
assert_equal 0, go_with_args(%w(-r 38:48))
|
71
|
+
assert_equal "7d4bb02a\n", @stdout_io.string
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_range_last_ten_hex
|
75
|
+
assert_equal 0, go_with_args(%w(-x 26:30))
|
76
|
+
assert_equal "7d4bb02a\n", @stdout_io.string
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_invalid_range
|
80
|
+
assert_equal 1, go_with_args(%w(-r 38:z48))
|
81
|
+
assert_match(/invalid range/, @stderr_io.string)
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_range_last_ten_hex
|
85
|
+
assert_equal 1, go_with_args(%w(-x 26:z30))
|
86
|
+
assert_match(/invalid range/, @stderr_io.string)
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_range_last_ten_using_negative
|
90
|
+
assert_equal 0, go_with_args(%w(-r 38:-1))
|
91
|
+
assert_equal "7d4bb02a\n", @stdout_io.string
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_range_last_ten_using_negative_hex
|
95
|
+
assert_equal 0, go_with_args(%w(-x 26:-1))
|
96
|
+
assert_equal "7d4bb02a\n", @stdout_io.string
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_start_from_end_negative_size
|
100
|
+
assert_equal 0, go_with_args(%w(-r -48))
|
101
|
+
assert_equal(@crc_out, @stdout_io.string)
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_start_from_end_negative_size_hex
|
105
|
+
assert_equal 0, go_with_args(%w(-x -30))
|
106
|
+
assert_equal(@crc_out, @stdout_io.string)
|
107
|
+
end
|
108
|
+
end
|