]> git.wincent.com - walrat.git/blob - spec/parslet_choice_spec.rb
Update to RSpec 3.1.0
[walrat.git] / spec / parslet_choice_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::ParsletChoice 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::ParsletChoice.new(@p1, @p2).hash.should == Walrat::ParsletChoice.new(@p1, @p2).hash
14     Walrat::ParsletChoice.new(@p1, @p2).should eql(Walrat::ParsletChoice.new(@p1, @p2))
15   end
16
17   it 'hashes should (ideally) be different if initialized with different parseables' do
18     Walrat::ParsletChoice.new(@p1, @p2).hash.should_not == Walrat::ParsletChoice.new('baz'.to_parseable, 'abc'.to_parseable).hash
19     Walrat::ParsletChoice.new(@p1, @p2).should_not eql(Walrat::ParsletChoice.new('baz'.to_parseable, 'abc'.to_parseable))
20   end
21
22   it 'hashes should be different compared to other similar classes even if initialized with the same parseables' do
23     Walrat::ParsletChoice.new(@p1, @p2).hash.should_not == Walrat::ParsletSequence.new(@p1, @p2).hash
24     Walrat::ParsletChoice.new(@p1, @p2).should_not eql(Walrat::ParsletSequence.new(@p1, @p2))
25   end
26
27   it 'should be able to use Parslet Choice instances as keys in a hash' do
28     hash = {}
29     key1 = Walrat::ParsletChoice.new(@p1, @p2)
30     key2 = Walrat::ParsletChoice.new('baz'.to_parseable, 'abc'.to_parseable)
31     hash[:key1] = 'foo'
32     hash[:key2] = 'bar'
33     hash[:key1].should == 'foo'
34     hash[:key2].should == 'bar'
35   end
36 end