From f41b48a51b7eba6ece34c0b16f043b0f5fcae102 Mon Sep 17 00:00:00 2001 From: Mike Dirolf Date: Thu, 17 Sep 2009 15:07:18 -0400 Subject: [PATCH] minor: tweaks and some more test cases --- lib/mongo/cursor.rb | 6 +++--- test/test_cursor.rb | 25 +++++++++++++++---------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/lib/mongo/cursor.rb b/lib/mongo/cursor.rb index 1c3b908..b1bfac8 100644 --- a/lib/mongo/cursor.rb +++ b/lib/mongo/cursor.rb @@ -84,7 +84,7 @@ module Mongo # This method overrides any sort order specified in the Collection#find # method, and only the last sort applied has an effect def sort(order) - raise InvalidOperation, "can't call Cursor#sort on a used cursor" if @query_run + check_modifiable @query.order_by = order self end @@ -100,7 +100,7 @@ module Mongo raise ArgumentError, "limit requires an integer" unless number_to_return.is_a? Integer @query.number_to_return = number_to_return - return self + self end # Skips the first +number_to_skip+ results of this cursor. @@ -114,7 +114,7 @@ module Mongo raise ArgumentError, "skip requires an integer" unless number_to_skip.is_a? Integer @query.number_to_skip = number_to_skip - return self + self end # Iterate over each document in this cursor, yielding it to the given diff --git a/test/test_cursor.rb b/test/test_cursor.rb index 049e224..d36d380 100644 --- a/test/test_cursor.rb +++ b/test/test_cursor.rb @@ -57,22 +57,27 @@ class CursorTest < Test::Unit::TestCase assert_equal 0, @@db['acollectionthatdoesn'].count() end - + def test_sort @@coll.clear - 5.times{|x| @@coll.insert({"a" => x, "b" => 5-x}) } - - assert_kind_of Cursor, @@coll.find().sort({:a=>1}) - + 5.times{|x| @@coll.insert({"a" => x}) } + + assert_kind_of Cursor, @@coll.find().sort({:a => 1}) + assert_equal 0, @@coll.find().sort({:a => 1}).next_object["a"] assert_equal 4, @@coll.find().sort({:a => -1}).next_object["a"] - - assert_equal 1, @@coll.find().sort({:a => -1, :b => 1}).next_object["b"] - assert_equal 5, @@coll.find().sort({:a => 1, :b => -1}).next_object["b"] - + assert_equal 0, @@coll.find().sort(["a"]).next_object["a"] + + assert_kind_of Cursor, @@coll.find().sort({:a => -1, :b => 1}) + assert_equal 4, @@coll.find().sort({:a => 1}).sort({:a => -1}).next_object["a"] assert_equal 0, @@coll.find().sort({:a => -1}).sort({:a => 1}).next_object["a"] - + + cursor = @@coll.find() + cursor.next_object() + assert_raise InvalidOperation do + cursor.sort(["a"]) + end end def test_limit