Sha256: 99875f2e45fa8f480b1b844c9a9be657c57356db7d59e9fe3fa32ae019188d3a
Contents?: true
Size: 1.9 KB
Versions: 1
Compression:
Stored size: 1.9 KB
Contents
require 'spec_helper' describe Rambling::Trie::Stringifyable do describe '#as_word' do let(:node) { Rambling::Trie::Nodes::Raw.new } context 'for an empty node' do before do add_word node, '' end it 'returns nil' do expect(node.as_word).to be_empty end end context 'for one letter' do before do node.letter = :a add_word node, '' end it 'returns the expected one letter word' do expect(node.as_word).to eq 'a' end end context 'for a small word' do before do node.letter = :a add_word node, 'll' end it 'returns the expected small word' do expect(node[:l][:l].as_word).to eq 'all' end it 'raises an error for a non terminal node' do expect { node[:l].as_word }.to raise_error Rambling::Trie::InvalidOperation end end context 'for a long word' do before do node.letter = :b add_word node, 'eautiful' end it 'returns the expected long word' do expect(node[:e][:a][:u][:t][:i][:f][:u][:l].as_word).to eq 'beautiful' end end context 'for a node with nil letter' do let(:node) { Rambling::Trie::Nodes::Raw.new nil } it 'returns nil' do expect(node.as_word).to be_empty end end context 'for a compressed node' do let(:compressor) { Rambling::Trie::Compressor.new } let(:compressed_node) { compressor.compress node } before do node.letter = :a add_words node, %w(m dd) end it 'returns the words for the terminal nodes' do expect(compressed_node[:m].as_word).to eq 'am' expect(compressed_node[:dd].as_word).to eq 'add' end it 'raise an error for non terminal nodes' do expect { compressed_node.as_word }.to raise_error Rambling::Trie::InvalidOperation end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rambling-trie-1.0.3 | spec/lib/rambling/trie/stringifyable_spec.rb |