spec/test-ships.cr: tests are passing.

toying-with-ramdb
Philippe PITTOLI 2024-05-20 03:14:47 +02:00
parent 61020dfd59
commit 39b427886f
3 changed files with 27 additions and 16 deletions

View File

@ -71,11 +71,11 @@ describe "DODB::DataBase" do
end
# The two #each test iteration.
db.each_with_index do |item, index|
db.each_with_key do |item, index|
item.should eq Ship.all_ships[index]
end
db.each_with_index(reversed: true) do |item, index|
db.each_with_key(reversed: true) do |item, index|
item.should eq Ship.all_ships[index]
end
@ -90,11 +90,11 @@ describe "DODB::DataBase" do
db << ship
end
db.to_a(start_offset: 0, end_offset: 0)[0]?.should eq Ship.mutsuki
db.to_a(start_offset: 1, end_offset: 1)[0]?.should eq Ship.kisaragi
db.to_a(start_offset: 2, end_offset: 2)[0]?.should eq Ship.yayoi
db.to_a(offset: 0, limit: 1)[0]?.should eq Ship.mutsuki
db.to_a(offset: 1, limit: 1)[0]?.should eq Ship.kisaragi
db.to_a(offset: 2, limit: 1)[0]?.should eq Ship.yayoi
db.to_a(start_offset: 0, end_offset: 2).should eq [
db.to_a(offset: 0, limit: 3).should eq [
Ship.mutsuki, Ship.kisaragi, Ship.yayoi
]
end
@ -362,7 +362,7 @@ describe "DODB::DataBase" do
new_ships_by_class = new_db.new_partition "class", &.klass
new_ships_by_tags = new_db.new_tags "tags", &.tags
old_db.each_with_index do |ship, index|
old_db.each_with_key do |ship, index|
new_ship = Ship.new ship.name,
klass: ship.class_name,
id: ship.id,
@ -376,7 +376,7 @@ describe "DODB::DataBase" do
# At this point, the conversion is done, so… were making a few
# arbitrary tests on the new data.
old_db.each_with_index do |old_ship, old_index|
old_db.each_with_key do |old_ship, old_index|
ship = new_db[old_index]
ship.id.should eq(old_ship.id)
@ -555,11 +555,11 @@ describe "DODB::CachedDataBase" do
end
# The two #each test iteration.
db.each_with_index do |item, index|
db.each_with_key do |item, index|
item.should eq Ship.all_ships[index]
end
db.each_with_index(reversed: true) do |item, index|
db.each_with_key(reversed: true) do |item, index|
item.should eq Ship.all_ships[index]
end
@ -576,11 +576,11 @@ describe "DODB::CachedDataBase" do
db << ship
end
db.to_a(start_offset: 0, end_offset: 0)[0]?.should eq Ship.mutsuki
db.to_a(start_offset: 1, end_offset: 1)[0]?.should eq Ship.kisaragi
db.to_a(start_offset: 2, end_offset: 2)[0]?.should eq Ship.yayoi
db.to_a(offset: 0, limit: 1)[0]?.should eq Ship.mutsuki
db.to_a(offset: 1, limit: 1)[0]?.should eq Ship.kisaragi
db.to_a(offset: 2, limit: 1)[0]?.should eq Ship.yayoi
db.to_a(start_offset: 0, end_offset: 2).should eq [
db.to_a(offset: 0, limit: 3).should eq [
Ship.mutsuki, Ship.kisaragi, Ship.yayoi
]
@ -874,7 +874,7 @@ describe "DODB::CachedDataBase" do
new_ships_by_class = new_db.new_partition "class", &.klass
new_ships_by_tags = new_db.new_tags "tags", &.tags
old_db.each_with_index do |ship, index|
old_db.each_with_key do |ship, index|
new_ship = Ship.new ship.name,
klass: ship.class_name,
id: ship.id,
@ -888,7 +888,7 @@ describe "DODB::CachedDataBase" do
# At this point, the conversion is done, so… were making a few
# arbitrary tests on the new data.
old_db.each_with_index do |old_ship, old_index|
old_db.each_with_key do |old_ship, old_index|
ship = new_db[old_index]
ship.id.should eq(old_ship.id)

View File

@ -84,6 +84,11 @@ class DODB::CachedDataBase(V) < DODB::Storage(V)
# :inherit:
def each_with_key(reversed : Bool = false, offset = 0, limit : Int32? = -1)
limit = if l = limit
l
else
-1
end
(reversed ? @data.reverse : @data).each do |key, v|
offset -= 1 if offset >= 0
next if offset >= 0

View File

@ -473,6 +473,12 @@ class DODB::DataBase(V) < DODB::Storage(V)
def each_with_key(reversed : Bool = false, offset = 0, limit : Int32? = -1)
dirname = data_path
limit = if l = limit
l
else
-1
end
each_key(reversed) do |key, path|
offset -= 1 if offset >= 0
next if offset >= 0