2008-12-09 17:35:03 +00:00
|
|
|
$LOAD_PATH[0,0] = File.join(File.dirname(__FILE__), '..', 'lib')
|
|
|
|
require 'mongo'
|
|
|
|
require 'test/unit'
|
|
|
|
|
|
|
|
class ObjectIDTest < Test::Unit::TestCase
|
|
|
|
|
2009-08-20 14:50:48 +00:00
|
|
|
include Mongo
|
2008-12-09 17:35:03 +00:00
|
|
|
|
|
|
|
def setup
|
2009-08-25 14:30:14 +00:00
|
|
|
@o = ObjectID.new()
|
2008-12-09 17:35:03 +00:00
|
|
|
end
|
|
|
|
|
2009-10-19 21:14:41 +00:00
|
|
|
def test_create_pk_method
|
|
|
|
doc = {:name => 'Mongo'}
|
|
|
|
doc = ObjectID.create_pk(doc)
|
|
|
|
assert doc[:_id]
|
|
|
|
|
|
|
|
doc = {:name => 'Mongo', :_id => '12345'}
|
|
|
|
doc = ObjectID.create_pk(doc)
|
|
|
|
assert_equal '12345', doc[:_id]
|
|
|
|
end
|
|
|
|
|
2008-12-09 17:35:03 +00:00
|
|
|
def test_different
|
2009-08-25 14:30:14 +00:00
|
|
|
a = ObjectID.new
|
|
|
|
b = ObjectID.new
|
|
|
|
assert_not_equal a.to_a, b.to_a
|
|
|
|
assert_not_equal a, b
|
2008-12-09 17:35:03 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_eql?
|
|
|
|
o2 = ObjectID.new(@o.to_a)
|
2009-08-25 14:30:14 +00:00
|
|
|
assert_equal @o, o2
|
2008-12-09 17:35:03 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_to_s
|
|
|
|
s = @o.to_s
|
|
|
|
assert_equal 24, s.length
|
|
|
|
s =~ /^([0-9a-f]+)$/
|
|
|
|
assert_equal 24, $1.length
|
|
|
|
end
|
|
|
|
|
2009-08-25 18:56:02 +00:00
|
|
|
def test_to_s_legacy
|
|
|
|
s = @o.to_s_legacy
|
|
|
|
assert_equal 24, s.length
|
|
|
|
s =~ /^([0-9a-f]+)$/
|
|
|
|
assert_equal 24, $1.length
|
|
|
|
|
|
|
|
assert_not_equal s, @o.to_s
|
|
|
|
end
|
|
|
|
|
2008-12-09 18:48:38 +00:00
|
|
|
def test_save_and_restore
|
|
|
|
host = ENV['MONGO_RUBY_DRIVER_HOST'] || 'localhost'
|
2009-08-20 22:48:09 +00:00
|
|
|
port = ENV['MONGO_RUBY_DRIVER_PORT'] || Connection::DEFAULT_PORT
|
|
|
|
db = Connection.new(host, port).db('ruby-mongo-test')
|
2008-12-09 18:48:38 +00:00
|
|
|
coll = db.collection('test')
|
|
|
|
|
2009-10-20 15:31:07 +00:00
|
|
|
coll.remove
|
2008-12-09 18:48:38 +00:00
|
|
|
coll << {'a' => 1, '_id' => @o}
|
|
|
|
|
|
|
|
row = coll.find().collect.first
|
|
|
|
assert_equal 1, row['a']
|
|
|
|
assert_equal @o, row['_id']
|
|
|
|
end
|
|
|
|
|
2009-01-09 18:34:30 +00:00
|
|
|
def test_from_string
|
|
|
|
hex_str = @o.to_s
|
|
|
|
o2 = ObjectID.from_string(hex_str)
|
|
|
|
assert_equal hex_str, o2.to_s
|
|
|
|
assert_equal @o, o2
|
|
|
|
assert_equal @o.to_s, o2.to_s
|
|
|
|
end
|
|
|
|
|
2009-08-25 18:56:02 +00:00
|
|
|
def test_from_string_legacy
|
|
|
|
hex_str = @o.to_s_legacy
|
|
|
|
o2 = ObjectID.from_string_legacy(hex_str)
|
|
|
|
assert_equal hex_str, o2.to_s_legacy
|
|
|
|
assert_equal @o, o2
|
|
|
|
assert_equal @o.to_s, o2.to_s
|
|
|
|
end
|
|
|
|
|
2009-02-09 16:38:24 +00:00
|
|
|
def test_legal
|
|
|
|
assert !ObjectID.legal?(nil)
|
|
|
|
assert !ObjectID.legal?("fred")
|
|
|
|
assert !ObjectID.legal?("0000")
|
|
|
|
assert !ObjectID.legal?('000102030405060708090A0')
|
|
|
|
assert ObjectID.legal?('000102030405060708090A0B')
|
|
|
|
assert ObjectID.legal?('abcdefABCDEF123456789012')
|
|
|
|
assert !ObjectID.legal?('abcdefABCDEF12345678901x')
|
2009-01-15 16:25:23 +00:00
|
|
|
end
|
|
|
|
|
2009-01-12 14:59:46 +00:00
|
|
|
def test_from_string_leading_zeroes
|
2009-08-25 18:56:02 +00:00
|
|
|
hex_str = '000000000000000000000000'
|
2009-01-12 14:59:46 +00:00
|
|
|
o = ObjectID.from_string(hex_str)
|
|
|
|
assert_equal hex_str, o.to_s
|
|
|
|
end
|
|
|
|
|
2009-01-12 15:14:48 +00:00
|
|
|
def test_byte_order
|
|
|
|
hex_str = '000102030405060708090A0B'
|
|
|
|
o = ObjectID.from_string(hex_str)
|
2009-08-25 18:56:02 +00:00
|
|
|
assert_equal [0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b], o.to_a
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_legacy_byte_order
|
|
|
|
hex_str = '000102030405060708090A0B'
|
|
|
|
o = ObjectID.from_string_legacy(hex_str)
|
2009-01-12 15:14:48 +00:00
|
|
|
assert_equal [0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x0b, 0x0a, 0x09, 0x08], o.to_a
|
|
|
|
end
|
|
|
|
|
2009-08-25 18:56:02 +00:00
|
|
|
def test_legacy_string_convert
|
|
|
|
l = @o.to_s_legacy
|
|
|
|
s = @o.to_s
|
|
|
|
assert_equal s, ObjectID.legacy_string_convert(l)
|
|
|
|
end
|
|
|
|
|
2009-01-06 15:47:29 +00:00
|
|
|
end
|