rambling-trie 1.0.3 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Gemfile +6 -4
- data/Guardfile +3 -1
- data/README.md +4 -4
- data/Rakefile +4 -0
- data/lib/rambling-trie.rb +2 -0
- data/lib/rambling/trie.rb +25 -9
- data/lib/rambling/trie/comparable.rb +4 -1
- data/lib/rambling/trie/compressible.rb +6 -4
- data/lib/rambling/trie/compressor.rb +12 -10
- data/lib/rambling/trie/configuration.rb +3 -1
- data/lib/rambling/trie/configuration/properties.rb +15 -8
- data/lib/rambling/trie/configuration/provider_collection.rb +4 -1
- data/lib/rambling/trie/container.rb +7 -40
- data/lib/rambling/trie/enumerable.rb +2 -0
- data/lib/rambling/trie/inspectable.rb +2 -0
- data/lib/rambling/trie/invalid_operation.rb +3 -1
- data/lib/rambling/trie/nodes.rb +3 -1
- data/lib/rambling/trie/nodes/compressed.rb +53 -70
- data/lib/rambling/trie/nodes/missing.rb +2 -0
- data/lib/rambling/trie/nodes/node.rb +38 -6
- data/lib/rambling/trie/nodes/raw.rb +19 -26
- data/lib/rambling/trie/readers.rb +3 -1
- data/lib/rambling/trie/readers/plain_text.rb +2 -0
- data/lib/rambling/trie/serializers.rb +3 -1
- data/lib/rambling/trie/serializers/file.rb +2 -0
- data/lib/rambling/trie/serializers/marshal.rb +12 -2
- data/lib/rambling/trie/serializers/yaml.rb +18 -2
- data/lib/rambling/trie/serializers/zip.rb +6 -0
- data/lib/rambling/trie/stringifyable.rb +7 -1
- data/lib/rambling/trie/version.rb +3 -1
- data/rambling-trie.gemspec +21 -10
- data/spec/integration/rambling/trie_spec.rb +8 -4
- data/spec/lib/rambling/trie/comparable_spec.rb +2 -0
- data/spec/lib/rambling/trie/compressor_spec.rb +35 -33
- data/spec/lib/rambling/trie/configuration/properties_spec.rb +17 -9
- data/spec/lib/rambling/trie/configuration/provider_collection_spec.rb +10 -14
- data/spec/lib/rambling/trie/container_spec.rb +28 -53
- data/spec/lib/rambling/trie/enumerable_spec.rb +2 -0
- data/spec/lib/rambling/trie/inspectable_spec.rb +32 -7
- data/spec/lib/rambling/trie/nodes/compressed_spec.rb +2 -0
- data/spec/lib/rambling/trie/nodes/node_spec.rb +2 -0
- data/spec/lib/rambling/trie/nodes/raw_spec.rb +2 -0
- data/spec/lib/rambling/trie/readers/plain_text_spec.rb +3 -1
- data/spec/lib/rambling/trie/serializers/file_spec.rb +2 -0
- data/spec/lib/rambling/trie/serializers/marshal_spec.rb +2 -0
- data/spec/lib/rambling/trie/serializers/yaml_spec.rb +2 -0
- data/spec/lib/rambling/trie/serializers/zip_spec.rb +6 -4
- data/spec/lib/rambling/trie/stringifyable_spec.rb +7 -3
- data/spec/lib/rambling/trie_spec.rb +16 -9
- data/spec/spec_helper.rb +10 -7
- data/spec/support/config.rb +6 -0
- data/spec/support/helpers/add_word.rb +2 -0
- data/spec/support/helpers/one_line_heredoc.rb +11 -0
- data/spec/support/shared_examples/a_compressible_trie.rb +7 -3
- data/spec/support/shared_examples/a_serializable_trie.rb +2 -0
- data/spec/support/shared_examples/a_serializer.rb +2 -0
- data/spec/support/shared_examples/a_trie_data_structure.rb +2 -0
- data/spec/support/shared_examples/a_trie_node.rb +15 -5
- data/spec/support/shared_examples/a_trie_node_implementation.rb +10 -6
- metadata +17 -15
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe Rambling::Trie::Configuration::Properties do
|
@@ -6,27 +8,33 @@ describe Rambling::Trie::Configuration::Properties do
|
|
6
8
|
describe '.new' do
|
7
9
|
it 'configures the serializers' do
|
8
10
|
serializers = properties.serializers
|
9
|
-
expect(serializers.formats).to match_array %i(marshal yaml yml zip)
|
10
11
|
|
11
|
-
expect(serializers
|
12
|
-
expect(serializers
|
13
|
-
|
14
|
-
|
12
|
+
expect(serializers.formats).to match_array %i(marshal yaml yml zip)
|
13
|
+
expect(serializers.providers.to_a).to match_array [
|
14
|
+
[:marshal, Rambling::Trie::Serializers::Marshal],
|
15
|
+
[:yaml, Rambling::Trie::Serializers::Yaml],
|
16
|
+
[:yml, Rambling::Trie::Serializers::Yaml],
|
17
|
+
[:zip, Rambling::Trie::Serializers::Zip],
|
18
|
+
]
|
15
19
|
end
|
16
20
|
|
17
21
|
it 'configures the readers' do
|
18
22
|
readers = properties.readers
|
19
|
-
expect(readers.formats).to match_array %i(txt)
|
20
23
|
|
21
|
-
expect(readers
|
24
|
+
expect(readers.formats).to match_array %i(txt)
|
25
|
+
expect(readers.providers.to_a).to match_array [
|
26
|
+
[:txt, Rambling::Trie::Readers::PlainText],
|
27
|
+
]
|
22
28
|
end
|
23
29
|
|
24
30
|
it 'configures the compressor' do
|
25
|
-
|
31
|
+
compressor = properties.compressor
|
32
|
+
expect(compressor).to be_instance_of Rambling::Trie::Compressor
|
26
33
|
end
|
27
34
|
|
28
35
|
it 'configures the root_builder' do
|
29
|
-
|
36
|
+
root = properties.root_builder.call
|
37
|
+
expect(root).to be_instance_of Rambling::Trie::Nodes::Raw
|
30
38
|
end
|
31
39
|
end
|
32
40
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe Rambling::Trie::Configuration::ProviderCollection do
|
@@ -13,7 +15,7 @@ describe Rambling::Trie::Configuration::ProviderCollection do
|
|
13
15
|
Rambling::Trie::Configuration::ProviderCollection.new(
|
14
16
|
:provider,
|
15
17
|
configured_providers,
|
16
|
-
configured_default
|
18
|
+
configured_default,
|
17
19
|
)
|
18
20
|
end
|
19
21
|
|
@@ -84,26 +86,20 @@ describe Rambling::Trie::Configuration::ProviderCollection do
|
|
84
86
|
end
|
85
87
|
|
86
88
|
context 'when the given value is not in the providers list' do
|
87
|
-
it '
|
88
|
-
expect
|
89
|
-
|
90
|
-
|
91
|
-
rescue
|
92
|
-
end
|
93
|
-
end.not_to change { provider_collection.default }
|
89
|
+
it 'raises an error and keeps the default provider' do
|
90
|
+
expect { provider_collection.default = other_provider }
|
91
|
+
.to raise_error
|
92
|
+
.and(not_change { provider_collection.default })
|
94
93
|
end
|
95
94
|
|
96
95
|
it 'raises an ArgumentError' do
|
97
|
-
expect
|
98
|
-
|
99
|
-
end.to raise_error ArgumentError
|
96
|
+
expect { provider_collection.default = other_provider }
|
97
|
+
.to raise_error ArgumentError
|
100
98
|
end
|
101
99
|
end
|
102
100
|
|
103
101
|
context 'when the providers list is empty' do
|
104
|
-
let(:configured_providers)
|
105
|
-
{}
|
106
|
-
end
|
102
|
+
let(:configured_providers) { {} }
|
107
103
|
|
108
104
|
it 'accepts nil' do
|
109
105
|
provider_collection.default = nil
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe Rambling::Trie::Container do
|
@@ -14,8 +16,8 @@ describe Rambling::Trie::Container do
|
|
14
16
|
it 'yields the container' do
|
15
17
|
yielded = nil
|
16
18
|
|
17
|
-
container = Rambling::Trie::Container.new root, compressor do |
|
18
|
-
yielded =
|
19
|
+
container = Rambling::Trie::Container.new root, compressor do |c|
|
20
|
+
yielded = c
|
19
21
|
end
|
20
22
|
|
21
23
|
expect(yielded).to be container
|
@@ -188,7 +190,7 @@ describe Rambling::Trie::Container do
|
|
188
190
|
children_tree: nil,
|
189
191
|
compressed?: nil,
|
190
192
|
each: nil,
|
191
|
-
|
193
|
+
key?: nil,
|
192
194
|
inspect: nil,
|
193
195
|
letter: nil,
|
194
196
|
parent: nil,
|
@@ -225,11 +227,6 @@ describe Rambling::Trie::Container do
|
|
225
227
|
expect(root).to have_received(:[]).with :yep
|
226
228
|
end
|
227
229
|
|
228
|
-
it 'delegates `#as_word` to the root node' do
|
229
|
-
container.as_word
|
230
|
-
expect(root).to have_received :as_word
|
231
|
-
end
|
232
|
-
|
233
230
|
it 'delegates `#children` to the root node' do
|
234
231
|
container.children
|
235
232
|
expect(root).to have_received :children
|
@@ -245,14 +242,19 @@ describe Rambling::Trie::Container do
|
|
245
242
|
expect(root).to have_received :compressed?
|
246
243
|
end
|
247
244
|
|
248
|
-
it 'delegates `#
|
245
|
+
it 'delegates `#key?` to the root node' do
|
246
|
+
container.key? :yup
|
247
|
+
expect(root).to have_received(:key?).with :yup
|
248
|
+
end
|
249
|
+
|
250
|
+
it 'aliases `#has_key?` to `#key?`' do
|
249
251
|
container.has_key? :yup
|
250
|
-
expect(root).to have_received(:
|
252
|
+
expect(root).to have_received(:key?).with :yup
|
251
253
|
end
|
252
254
|
|
253
255
|
it 'aliases `#has_letter?` to `#has_key?`' do
|
254
256
|
container.has_letter? :yup
|
255
|
-
expect(root).to have_received(:
|
257
|
+
expect(root).to have_received(:key?).with :yup
|
256
258
|
end
|
257
259
|
|
258
260
|
it 'delegates `#inspect` to the root node' do
|
@@ -260,25 +262,10 @@ describe Rambling::Trie::Container do
|
|
260
262
|
expect(root).to have_received :inspect
|
261
263
|
end
|
262
264
|
|
263
|
-
it 'delegates `#letter` to the root node' do
|
264
|
-
container.letter
|
265
|
-
expect(root).to have_received :letter
|
266
|
-
end
|
267
|
-
|
268
|
-
it 'delegates `#parent` to the root node' do
|
269
|
-
container.parent
|
270
|
-
expect(root).to have_received :parent
|
271
|
-
end
|
272
|
-
|
273
265
|
it 'delegates `#size` to the root node' do
|
274
266
|
container.size
|
275
267
|
expect(root).to have_received :size
|
276
268
|
end
|
277
|
-
|
278
|
-
it 'delegates `#to_s` to the root node' do
|
279
|
-
container.to_s
|
280
|
-
expect(root).to have_received :to_s
|
281
|
-
end
|
282
269
|
end
|
283
270
|
|
284
271
|
describe '#compress!' do
|
@@ -417,17 +404,8 @@ describe Rambling::Trie::Container do
|
|
417
404
|
end
|
418
405
|
|
419
406
|
it 'returns an array with the words that match' do
|
420
|
-
expect(container.scan 'hi').to eq
|
421
|
-
|
422
|
-
'high',
|
423
|
-
'highlight',
|
424
|
-
'histerical'
|
425
|
-
]
|
426
|
-
|
427
|
-
expect(container.scan 'hig').to eq [
|
428
|
-
'high',
|
429
|
-
'highlight'
|
430
|
-
]
|
407
|
+
expect(container.scan 'hi').to eq %w(hi high highlight histerical)
|
408
|
+
expect(container.scan 'hig').to eq %w(high highlight)
|
431
409
|
end
|
432
410
|
|
433
411
|
context 'and the root has been compressed' do
|
@@ -436,17 +414,8 @@ describe Rambling::Trie::Container do
|
|
436
414
|
end
|
437
415
|
|
438
416
|
it 'returns an array with the words that match' do
|
439
|
-
expect(container.scan 'hi').to eq
|
440
|
-
|
441
|
-
'high',
|
442
|
-
'highlight',
|
443
|
-
'histerical'
|
444
|
-
]
|
445
|
-
|
446
|
-
expect(container.scan 'hig').to eq [
|
447
|
-
'high',
|
448
|
-
'highlight'
|
449
|
-
]
|
417
|
+
expect(container.scan 'hi').to eq %w(hi high highlight histerical)
|
418
|
+
expect(container.scan 'hig').to eq %w(high highlight)
|
450
419
|
end
|
451
420
|
end
|
452
421
|
end
|
@@ -457,7 +426,7 @@ describe Rambling::Trie::Container do
|
|
457
426
|
end
|
458
427
|
|
459
428
|
it 'returns an empty array' do
|
460
|
-
expect(container.scan 'hi').to eq
|
429
|
+
expect(container.scan 'hi').to eq %w()
|
461
430
|
end
|
462
431
|
|
463
432
|
context 'and the root has been compressed' do
|
@@ -466,7 +435,7 @@ describe Rambling::Trie::Container do
|
|
466
435
|
end
|
467
436
|
|
468
437
|
it 'returns an empty array' do
|
469
|
-
expect(container.scan 'hi').to eq
|
438
|
+
expect(container.scan 'hi').to eq %w()
|
470
439
|
end
|
471
440
|
end
|
472
441
|
end
|
@@ -529,7 +498,8 @@ describe Rambling::Trie::Container do
|
|
529
498
|
|
530
499
|
context 'phrase contains a few words' do
|
531
500
|
it 'returns an array with all words found in the phrase' do
|
532
|
-
expect(container.words_within 'xyzword otherzxyone')
|
501
|
+
expect(container.words_within 'xyzword otherzxyone')
|
502
|
+
.to match_array %w(word other one)
|
533
503
|
end
|
534
504
|
|
535
505
|
context 'and the node is compressed' do
|
@@ -538,7 +508,8 @@ describe Rambling::Trie::Container do
|
|
538
508
|
end
|
539
509
|
|
540
510
|
it 'returns an array with all words found in the phrase' do
|
541
|
-
expect(container.words_within 'xyzword otherzxyone')
|
511
|
+
expect(container.words_within 'xyzword otherzxyone')
|
512
|
+
.to match_array %w(word other one)
|
542
513
|
end
|
543
514
|
end
|
544
515
|
end
|
@@ -610,7 +581,11 @@ describe Rambling::Trie::Container do
|
|
610
581
|
end
|
611
582
|
|
612
583
|
it 'returns the container class name plus the root inspection' do
|
613
|
-
expect(container.inspect).to eq
|
584
|
+
expect(container.inspect).to eq one_line <<~CONTAINER
|
585
|
+
#<Rambling::Trie::Container root: #<Rambling::Trie::Nodes::Raw letter: nil,
|
586
|
+
terminal: nil,
|
587
|
+
children: [:a, :f, :w, :h]>>
|
588
|
+
CONTAINER
|
614
589
|
end
|
615
590
|
end
|
616
591
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe Rambling::Trie::Inspectable do
|
@@ -12,19 +14,42 @@ describe Rambling::Trie::Inspectable do
|
|
12
14
|
let(:terminal_node) { node[:o][:n][:l][:y] }
|
13
15
|
|
14
16
|
it 'returns a pretty printed version of the node' do
|
15
|
-
expect(node.inspect).to eq
|
16
|
-
|
17
|
-
|
17
|
+
expect(node.inspect).to eq one_line <<~RAW
|
18
|
+
#<Rambling::Trie::Nodes::Raw letter: nil,
|
19
|
+
terminal: nil,
|
20
|
+
children: [:o, :t, :w]>
|
21
|
+
RAW
|
22
|
+
|
23
|
+
expect(child.inspect).to eq one_line <<~CHILD
|
24
|
+
#<Rambling::Trie::Nodes::Raw letter: :o,
|
25
|
+
terminal: nil,
|
26
|
+
children: [:n]>
|
27
|
+
CHILD
|
28
|
+
|
29
|
+
expect(terminal_node.inspect).to eq one_line <<~TERMINAL
|
30
|
+
#<Rambling::Trie::Nodes::Raw letter: :y,
|
31
|
+
terminal: true,
|
32
|
+
children: []>
|
33
|
+
TERMINAL
|
18
34
|
end
|
19
35
|
|
20
36
|
context 'for a compressed node' do
|
21
37
|
let(:compressor) { Rambling::Trie::Compressor.new }
|
22
|
-
let(:
|
23
|
-
let(:compressed_child) {
|
38
|
+
let(:compressed) { compressor.compress node }
|
39
|
+
let(:compressed_child) { compressed[:o] }
|
24
40
|
|
25
41
|
it 'returns a pretty printed version of the compressed node' do
|
26
|
-
expect(
|
27
|
-
|
42
|
+
expect(compressed.inspect).to eq one_line <<~COMPRESSED
|
43
|
+
#<Rambling::Trie::Nodes::Compressed letter: nil,
|
44
|
+
terminal: nil,
|
45
|
+
children: [:o, :t, :w]>
|
46
|
+
COMPRESSED
|
47
|
+
|
48
|
+
expect(compressed_child.inspect).to eq one_line <<~CHILD
|
49
|
+
#<Rambling::Trie::Nodes::Compressed letter: :only,
|
50
|
+
terminal: true,
|
51
|
+
children: []>
|
52
|
+
CHILD
|
28
53
|
end
|
29
54
|
end
|
30
55
|
end
|
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe Rambling::Trie::Readers::PlainText do
|
4
6
|
describe '#each_word' do
|
5
7
|
let(:filepath) { File.join(::SPEC_ROOT, 'assets', 'test_words.en_US.txt') }
|
6
|
-
let(:words) { File.readlines(filepath).map
|
8
|
+
let(:words) { File.readlines(filepath).map(&:chomp) }
|
7
9
|
|
8
10
|
it 'yields every word yielded by the file' do
|
9
11
|
yielded = []
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe Rambling::Trie::Serializers::Zip do
|
@@ -10,17 +12,17 @@ describe Rambling::Trie::Serializers::Zip do
|
|
10
12
|
properties.tmp_path = tmp_path
|
11
13
|
end
|
12
14
|
|
13
|
-
let(:filename) { File.basename(filepath).gsub
|
15
|
+
let(:filename) { File.basename(filepath).gsub %r{\.zip}, '' }
|
14
16
|
let(:formatted_content) { zip Marshal.dump content }
|
15
17
|
|
16
18
|
def zip content
|
17
|
-
|
19
|
+
cursor = Zip::OutputStream.write_buffer do |io|
|
18
20
|
io.put_next_entry filename
|
19
21
|
io.write content
|
20
22
|
end
|
21
23
|
|
22
|
-
|
23
|
-
|
24
|
+
cursor.rewind
|
25
|
+
cursor.read
|
24
26
|
end
|
25
27
|
end
|
26
28
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe Rambling::Trie::Stringifyable do
|
@@ -36,7 +38,8 @@ describe Rambling::Trie::Stringifyable do
|
|
36
38
|
end
|
37
39
|
|
38
40
|
it 'raises an error for a non terminal node' do
|
39
|
-
expect { node[:l].as_word }
|
41
|
+
expect { node[:l].as_word }
|
42
|
+
.to raise_error Rambling::Trie::InvalidOperation
|
40
43
|
end
|
41
44
|
end
|
42
45
|
|
@@ -70,11 +73,12 @@ describe Rambling::Trie::Stringifyable do
|
|
70
73
|
|
71
74
|
it 'returns the words for the terminal nodes' do
|
72
75
|
expect(compressed_node[:m].as_word).to eq 'am'
|
73
|
-
expect(compressed_node[:
|
76
|
+
expect(compressed_node[:d].as_word).to eq 'add'
|
74
77
|
end
|
75
78
|
|
76
79
|
it 'raise an error for non terminal nodes' do
|
77
|
-
expect { compressed_node.as_word }
|
80
|
+
expect { compressed_node.as_word }
|
81
|
+
.to raise_error Rambling::Trie::InvalidOperation
|
78
82
|
end
|
79
83
|
end
|
80
84
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe Rambling::Trie do
|
@@ -31,7 +33,10 @@ describe Rambling::Trie do
|
|
31
33
|
|
32
34
|
before do
|
33
35
|
receive_and_yield = receive(:each_word)
|
34
|
-
words.inject(receive_and_yield)
|
36
|
+
words.inject(receive_and_yield) do |yielder, word|
|
37
|
+
yielder.and_yield word
|
38
|
+
end
|
39
|
+
|
35
40
|
allow(reader).to receive_and_yield
|
36
41
|
allow(container).to receive :<<
|
37
42
|
end
|
@@ -40,7 +45,7 @@ describe Rambling::Trie do
|
|
40
45
|
Rambling::Trie.create filepath, reader
|
41
46
|
|
42
47
|
words.each do |word|
|
43
|
-
expect(container).to have_received(:<<).with
|
48
|
+
expect(container).to have_received(:<<).with word
|
44
49
|
end
|
45
50
|
end
|
46
51
|
end
|
@@ -77,7 +82,7 @@ describe Rambling::Trie do
|
|
77
82
|
end
|
78
83
|
|
79
84
|
it 'uses the serializer to load the root node from the given filepath' do
|
80
|
-
|
85
|
+
Rambling::Trie.load filepath, serializer
|
81
86
|
expect(serializer).to have_received(:load).with filepath
|
82
87
|
end
|
83
88
|
|
@@ -98,16 +103,16 @@ describe Rambling::Trie do
|
|
98
103
|
end
|
99
104
|
|
100
105
|
it 'determines the serializer based on the file extension' do
|
101
|
-
|
106
|
+
Rambling::Trie.load 'test.marshal'
|
102
107
|
expect(marshal_serializer).to have_received(:load).with 'test.marshal'
|
103
108
|
|
104
|
-
|
109
|
+
Rambling::Trie.load 'test.yml'
|
105
110
|
expect(yaml_serializer).to have_received(:load).with 'test.yml'
|
106
111
|
|
107
|
-
|
112
|
+
Rambling::Trie.load 'test.yaml'
|
108
113
|
expect(yaml_serializer).to have_received(:load).with 'test.yaml'
|
109
114
|
|
110
|
-
|
115
|
+
Rambling::Trie.load 'test'
|
111
116
|
expect(default_serializer).to have_received(:load).with 'test'
|
112
117
|
end
|
113
118
|
end
|
@@ -153,10 +158,12 @@ describe Rambling::Trie do
|
|
153
158
|
context 'when provided with a format' do
|
154
159
|
it 'uses the corresponding serializer' do
|
155
160
|
Rambling::Trie.dump trie, "#{filename}.marshal"
|
156
|
-
expect(marshal_serializer).to have_received(:dump)
|
161
|
+
expect(marshal_serializer).to have_received(:dump)
|
162
|
+
.with root, "#{filename}.marshal"
|
157
163
|
|
158
164
|
Rambling::Trie.dump trie, "#{filename}.yml"
|
159
|
-
expect(yaml_serializer).to have_received(:dump)
|
165
|
+
expect(yaml_serializer).to have_received(:dump)
|
166
|
+
.with root, "#{filename}.yml"
|
160
167
|
end
|
161
168
|
end
|
162
169
|
end
|