]> git.wincent.com - walrat.git/blob - spec/parslet_sequence_spec.rb
Update to RSpec 3.1.0
[walrat.git] / spec / parslet_sequence_spec.rb
1 # Copyright 2007-2014 Greg Hurrell. All rights reserved.
2 # Licensed under the terms of the BSD 2-clause license.
3
4 require 'spec_helper'
5
6 describe Walrat::ParsletSequence do
7   before do
8     @p1 = 'foo'.to_parseable
9     @p2 = 'bar'.to_parseable
10   end
11
12   it 'hashes should be the same if initialized with the same parseables' do
13     Walrat::ParsletSequence.new(@p1, @p2).hash.
14       should == Walrat::ParsletSequence.new(@p1, @p2).hash
15     Walrat::ParsletSequence.new(@p1, @p2).
16       should eql(Walrat::ParsletSequence.new(@p1, @p2))
17   end
18
19   it 'hashes should (ideally) be different if initialized with different parseables' do
20     Walrat::ParsletSequence.new(@p1, @p2).hash.
21       should_not == Walrat::ParsletSequence.new('baz'.to_parseable, 'abc'.to_parseable).hash
22     Walrat::ParsletSequence.new(@p1, @p2).
23       should_not eql(Walrat::ParsletSequence.new('baz'.to_parseable, 'abc'.to_parseable))
24   end
25
26   it 'hashes should be different compared to other similar classes even if initialized with the same parseables' do
27     Walrat::ParsletSequence.new(@p1, @p2).hash.
28       should_not == Walrat::ParsletChoice.new(@p1, @p2).hash
29     Walrat::ParsletSequence.new(@p1, @p2).
30       should_not eql(Walrat::ParsletChoice.new(@p1, @p2))
31   end
32
33   it 'should be able to use Parslet Choice instances as keys in a hash' do
34     hash = {}
35     key1 = Walrat::ParsletSequence.new(@p1, @p2)
36     key2 = Walrat::ParsletSequence.new('baz'.to_parseable, 'abc'.to_parseable)
37     hash[:key1] = 'foo'
38     hash[:key2] = 'bar'
39     hash[:key1].should == 'foo'
40     hash[:key2].should == 'bar'
41   end
42 end