Bikeshedding from a non-Rails developer here, but rather than seeing if two items are sorted correctly, you could specify that one object is treated as coming before another object
object1.should < object2 or sorting(object1, object2).should eq -1 It might make it easier to read. Andrew On Wed, Aug 15, 2012 at 10:13 AM, Gregory McIntyre <[email protected]> wrote: > I agree with Paul and David. I would use strategy (2) with Machinist'd > data or stubs. > > 1. Set up two items, out of order. > 2. Assert ordered(items) swaps them. > > If you are concerned about further cases such as numerical sorting > versus string sorting, or edge cases, then put those in too, but > David's code looks good to me, as a minimum check. > > My only addition is that sometimes I stick a .map(&:name) on the end > of my subject to make the output nicer. > > describe OrderedFooList > let(:shorts) { stub(:name => "Shorts") } > let(:socks) { stub(:name => "socks") } > > describe '#ordered' do > subject { OrderedFooList.new(input).ordered.map(&:name) } > context 'when given socks and Shorts in that order' do > let(:input) { [socks, shorts] } > it { should == ['Shorts', 'socks'] } > end > end > end > > -Greg > > -- > You received this message because you are subscribed to the Google Groups > "Ruby or Rails Oceania" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/rails-oceania?hl=en. > -- You received this message because you are subscribed to the Google Groups "Ruby or Rails Oceania" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rails-oceania?hl=en.
