xdr 3.0.1 → 3.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -9
  3. data/README.md +4 -2
  4. data/lib/xdr/concerns/converts_to_xdr.rb +30 -31
  5. data/lib/xdr/union.rb +7 -4
  6. data/lib/xdr/version.rb +1 -1
  7. metadata +43 -114
  8. data/.gitignore +0 -15
  9. data/.travis.yml +0 -9
  10. data/.yardopts +0 -7
  11. data/Gemfile +0 -4
  12. data/Guardfile +0 -5
  13. data/Rakefile +0 -9
  14. data/examples/enum.rb +0 -30
  15. data/examples/struct.rb +0 -24
  16. data/examples/union.rb +0 -29
  17. data/spec/lib/xdr/array_spec.rb +0 -73
  18. data/spec/lib/xdr/bool_spec.rb +0 -43
  19. data/spec/lib/xdr/concerns/converts_to_xdr_spec.rb +0 -88
  20. data/spec/lib/xdr/concerns/reads_bytes_spec.rb +0 -57
  21. data/spec/lib/xdr/double_spec.rb +0 -38
  22. data/spec/lib/xdr/dsl/enum_spec.rb +0 -44
  23. data/spec/lib/xdr/dsl/struct_spec.rb +0 -29
  24. data/spec/lib/xdr/dsl/union_spec.rb +0 -69
  25. data/spec/lib/xdr/enum_spec.rb +0 -70
  26. data/spec/lib/xdr/float_spec.rb +0 -37
  27. data/spec/lib/xdr/hyper_spec.rb +0 -40
  28. data/spec/lib/xdr/int_spec.rb +0 -40
  29. data/spec/lib/xdr/opaque_spec.rb +0 -40
  30. data/spec/lib/xdr/option_spec.rb +0 -36
  31. data/spec/lib/xdr/quadruple_spec.rb +0 -14
  32. data/spec/lib/xdr/rpc/record_reader_spec.rb +0 -27
  33. data/spec/lib/xdr/string_spec.rb +0 -47
  34. data/spec/lib/xdr/struct_spec.rb +0 -101
  35. data/spec/lib/xdr/union_spec.rb +0 -258
  36. data/spec/lib/xdr/unsigned_hyper_spec.rb +0 -36
  37. data/spec/lib/xdr/unsigned_int_spec.rb +0 -36
  38. data/spec/lib/xdr/var_array_spec.rb +0 -71
  39. data/spec/lib/xdr/var_opaque_spec.rb +0 -50
  40. data/spec/lib/xdr/void_spec.rb +0 -46
  41. data/spec/spec_helper.rb +0 -15
  42. data/spec/support/matchers/eq_bytes.rb +0 -6
  43. data/xdr.gemspec +0 -28
@@ -1,71 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe XDR::VarArray, "#read" do
4
- let(:empty_array) { "\x00\x00\x00\x00" }
5
- let(:one_array) { "\x00\x00\x00\x01\x00\x00\x00\x00" }
6
- let(:many_array) { "\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x00" }
7
- let(:too_large_array) { "\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02" }
8
-
9
- subject{ XDR::VarArray[XDR::Int, 2] }
10
-
11
- it "decodes values correctly" do
12
- expect(read(empty_array)).to eq([])
13
- expect(read(one_array)).to eq([0])
14
- expect(read(many_array)).to eq([3,0])
15
- end
16
-
17
- it "raises ReadError when the encoded array is too large" do
18
- expect{ read(too_large_array) }.to raise_error(XDR::ReadError)
19
- end
20
-
21
- def read(str)
22
- io = StringIO.new(str)
23
- subject.read(io)
24
- end
25
- end
26
-
27
-
28
- describe XDR::VarArray, "#write" do
29
- subject{ XDR::VarArray[XDR::Int, 3] }
30
-
31
- it "encodes values correctly" do
32
- expect(write([])).to eq("\x00\x00\x00\x00")
33
- expect(write([7])).to eq("\x00\x00\x00\x01\x00\x00\x00\x07")
34
- expect(write([1,2,3])).to eq("\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03")
35
- end
36
-
37
- it "raises WriteError when the array to encode is too large" do
38
- expect{ write([0,1,2,3]) }.to raise_error(XDR::WriteError)
39
- end
40
-
41
- def write(val)
42
- io = StringIO.new
43
- subject.write(val,io)
44
- io.string
45
- end
46
- end
47
-
48
- describe XDR::VarArray, "#valid?" do
49
- subject{ XDR::VarArray[XDR::Int, 3] }
50
-
51
- it "accepts an empty array" do
52
- expect(subject.valid?([])).to be_truthy
53
- end
54
-
55
- it "accepts a filled array provided each element passes the child_type validator" do
56
- expect(subject.valid?([1])).to be_truthy
57
- expect(subject.valid?([1,2])).to be_truthy
58
- end
59
-
60
- it "rejects a filled array if any element is rejected by the child_type validator" do
61
- expect(subject.valid?(["hello"])).to be_falsey
62
- expect(subject.valid?([1, "hello"])).to be_falsey
63
- expect(subject.valid?([1, "hello", 1])).to be_falsey
64
- expect(subject.valid?([1, nil])).to be_falsey
65
- expect(subject.valid?([nil])).to be_falsey
66
- end
67
-
68
- it "rejects arrays that are too large" do
69
- expect(subject.valid?([1,2,3,4])).to be_falsey
70
- end
71
- end
@@ -1,50 +0,0 @@
1
- require 'spec_helper'
2
-
3
-
4
- describe XDR::VarOpaque, "#read" do
5
- subject{ XDR::VarOpaque[2] }
6
-
7
- it "decodes values correctly" do
8
- expect(read("\x00\x00\x00\x00")).to eq("")
9
- expect(read("\x00\x00\x00\x01\x00\x00\x00\x00")).to eq("\x00")
10
- expect(read("\x00\x00\x00\x01\x01\x00\x00\x00")).to eq("\x01")
11
- expect(read("\x00\x00\x00\x02\x00\x01\x00\x00")).to eq("\x00\x01")
12
- end
13
-
14
- it "raises a ReadError when the encoded length is greater than the allowed max" do
15
- expect{ read "\x00\x00\x00\x03\x00\x00\x00\x00" }.to raise_error(XDR::ReadError)
16
- end
17
-
18
-
19
- it "raises a ReadError when the padding isn't zeros" do
20
- expect{ read "\x00\x00\x00\x01\x01\x00\x00\x01" }.to raise_error(XDR::ReadError)
21
- expect{ read "\x00\x00\x00\x01\x01\x00\x01\x00" }.to raise_error(XDR::ReadError)
22
- expect{ read "\x00\x00\x00\x01\x01\x01\x00\x00" }.to raise_error(XDR::ReadError)
23
- end
24
-
25
- def read(str)
26
- io = StringIO.new(str)
27
- subject.read(io)
28
- end
29
- end
30
-
31
- describe XDR::VarOpaque, "#write" do
32
- subject{ XDR::VarOpaque[2] }
33
-
34
- it "encodes values correctly" do
35
- expect(write("")).to eq("\x00\x00\x00\x00")
36
- expect(write("\x00")).to eq("\x00\x00\x00\x01\x00\x00\x00\x00")
37
- expect(write("\x01")).to eq("\x00\x00\x00\x01\x01\x00\x00\x00")
38
- expect(write("\x00\x01")).to eq("\x00\x00\x00\x02\x00\x01\x00\x00")
39
- end
40
-
41
- it "raises a WriteError when the provided string is too long" do
42
- expect{ write "123" }.to raise_error(XDR::WriteError)
43
- end
44
-
45
- def write(val)
46
- io = StringIO.new()
47
- subject.write(val, io)
48
- io.string
49
- end
50
- end
@@ -1,46 +0,0 @@
1
- require 'spec_helper'
2
-
3
-
4
- describe XDR::Void, ".read" do
5
-
6
- it "decodes values correctly" do
7
- expect(read("\x00\x00\x00\x00")).to eq(:void)
8
- expect(read("\x00\x00\x00\x01")).to eq(:void)
9
- expect(read("\xFF\xFF\xFF\xFF")).to eq(:void)
10
- expect(read("\x7F\xFF\xFF\xFF")).to eq(:void)
11
- expect(read("\x80\x00\x00\x00")).to eq(:void)
12
- end
13
-
14
- def read(str)
15
- io = StringIO.new(str)
16
- subject.read(io)
17
- end
18
- end
19
-
20
- describe XDR::Void, ".write" do
21
-
22
- it "decodes values correctly" do
23
- expect(write :void).to eq("")
24
- end
25
-
26
- def write(val)
27
- io = StringIO.new()
28
- subject.write(val, io)
29
- io.string
30
- end
31
- end
32
-
33
- describe XDR::Void, ".valid?" do
34
-
35
- it "accepts :void" do
36
- expect(subject.valid?(:void)).to eq(true)
37
- end
38
-
39
- it "rejects anything not :void" do
40
- expect(subject.valid?(nil)).to eq(false)
41
- expect(subject.valid?(0)).to eq(false)
42
- expect(subject.valid?("hello")).to eq(false)
43
- end
44
-
45
-
46
- end
@@ -1,15 +0,0 @@
1
- require 'bundler/setup'
2
- Bundler.setup
3
- require 'simplecov'
4
- SimpleCov.start
5
-
6
- require 'pry'
7
- require 'xdr'
8
-
9
- __dir__ = File.dirname(__FILE__)
10
-
11
- Dir["#{__dir__}/support/**/*.rb"].each { |f| require f }
12
-
13
- RSpec.configure do |config|
14
-
15
- end
@@ -1,6 +0,0 @@
1
-
2
- RSpec::Matchers.define :eq_bytes do |expected|
3
- match do |actual|
4
- expected.force_encoding("ASCII-8BIT") == actual.force_encoding("ASCII-8BIT")
5
- end
6
- end
@@ -1,28 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'xdr/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "xdr"
8
- spec.version = XDR::VERSION
9
- spec.authors = ["Scott Fleckenstein"]
10
- spec.email = ["scott@stellar.org"]
11
- spec.summary = %q{XDR Helper Library}
12
- spec.homepage = "https://github.com/stellar/ruby-xdr"
13
- spec.license = "Apache 2.0"
14
- spec.required_ruby_version = '>= 2.2.0'
15
-
16
- spec.files = `git ls-files -z`.split("\x0")
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
20
- spec.add_dependency "activesupport", ">= 5.2.0"
21
- spec.add_dependency "activemodel", ">= 5.2.0"
22
-
23
- spec.add_development_dependency "bundler", "~> 2.1.4"
24
- spec.add_development_dependency "rake", "~> 10.0"
25
- spec.add_development_dependency "rspec", "~> 3.1"
26
- spec.add_development_dependency "guard-rspec"
27
- spec.add_development_dependency "simplecov"
28
- end