norikra 0.0.23-java → 0.0.24-java
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/lib/norikra/fieldset.rb +5 -0
- data/lib/norikra/version.rb +1 -1
- data/spec/fieldset_spec.rb +11 -0
- data/spec/typedef_spec.rb +18 -0
- metadata +1 -1
data/lib/norikra/fieldset.rb
CHANGED
@@ -38,6 +38,11 @@ module Norikra
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def self.leaves(container)
|
41
|
+
unless container.is_a?(Array) || container.is_a?(Hash)
|
42
|
+
raise ::ArgumentError, "FieldSet#leaves accepts Array or Hash only"
|
43
|
+
end
|
44
|
+
return [] if container.empty?
|
45
|
+
|
41
46
|
# returns list of [ [key-chain-items-flatten-list, value] ]
|
42
47
|
dig = Proc.new do |obj|
|
43
48
|
if obj.is_a?(Array)
|
data/lib/norikra/version.rb
CHANGED
data/spec/fieldset_spec.rb
CHANGED
@@ -50,6 +50,17 @@ describe Norikra::FieldSet do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
describe '.leaves' do
|
53
|
+
it 'raises ArgumentError for non-container values' do
|
54
|
+
expect { Norikra::FieldSet.leaves('value') }.to raise_error(ArgumentError)
|
55
|
+
expect { Norikra::FieldSet.leaves('') }.to raise_error(ArgumentError)
|
56
|
+
expect { Norikra::FieldSet.leaves(1024) }.to raise_error(ArgumentError)
|
57
|
+
expect { Norikra::FieldSet.leaves(nil) }.to raise_error(ArgumentError)
|
58
|
+
end
|
59
|
+
it 'returns blank array for empty container' do
|
60
|
+
expect( Norikra::FieldSet.leaves({}) ).to eql([])
|
61
|
+
expect( Norikra::FieldSet.leaves([]) ).to eql([])
|
62
|
+
end
|
63
|
+
|
53
64
|
it 'returns field access chains to all keys of 1-depth Hash container' do
|
54
65
|
leaves = Norikra::FieldSet.leaves({'field1' => 1, 'field2' => 2})
|
55
66
|
expect(leaves.size).to eql(2)
|
data/spec/typedef_spec.rb
CHANGED
@@ -378,6 +378,24 @@ describe Norikra::Typedef do
|
|
378
378
|
expect(r['key4$f2$$0']).to eql('long')
|
379
379
|
expect(r['key5']).to eql('string')
|
380
380
|
end
|
381
|
+
|
382
|
+
it 'ignores empty container fieldss' do
|
383
|
+
typedef = Norikra::Typedef.new({'key1' => 'boolean', 'key2' => 'long', 'key3.$0.key4' => 'string'})
|
384
|
+
typedef.waiting_fields = ['key4.f1', 'key4.f2.$0', 'key5']
|
385
|
+
|
386
|
+
t = typedef.simple_guess({
|
387
|
+
'key1' => true,
|
388
|
+
'key2' => 10,
|
389
|
+
'key3' => [],
|
390
|
+
'key4' => {},
|
391
|
+
'key5' => 'foobar'
|
392
|
+
}, true, true)
|
393
|
+
r = t.definition
|
394
|
+
expect(r.size).to eql(3)
|
395
|
+
expect(r['key1']).to eql('boolean')
|
396
|
+
expect(r['key2']).to eql('long')
|
397
|
+
expect(r['key5']).to eql('string')
|
398
|
+
end
|
381
399
|
end
|
382
400
|
|
383
401
|
describe '#refer' do
|