diff --git a/spec/test-cars.cr b/spec/test-cars.cr index 1313c28..df8b17d 100644 --- a/spec/test-cars.cr +++ b/spec/test-cars.cr @@ -45,49 +45,59 @@ describe "tracking inconsistencies between implementations" do cars_ram0 = SPECDB::RAMOnly(Car).new "-0" cars_ram1 = SPECDB::RAMOnly(Car).new "-1" cars_ram2 = SPECDB::RAMOnly(Car).new "-2" + cars_fifo = SPECDB::FIFO(Car).new "-2", 5 - uncached_searchby_name, uncached_searchby_color, uncached_searchby_keywords = uncached_indexes cars_ram0 - cached_searchby_name, cached_searchby_color, cached_searchby_keywords = cached_indexes cars_ram1 - ram_searchby_name, ram_searchby_color, ram_searchby_keywords = ram_indexes cars_ram2 + uncached_searchby_name, uncached_searchby_color, uncached_searchby_keywords = uncached_indexes cars_ram0 + cached_searchby_name, cached_searchby_color, cached_searchby_keywords = cached_indexes cars_ram1 + ram_searchby_name, ram_searchby_color, ram_searchby_keywords = ram_indexes cars_ram2 + fifo_cached_searchby_name, fifo_cached_searchby_color, fifo_cached_searchby_keywords = cached_indexes cars_fifo add_cars cars_ram0, 1 add_cars cars_ram1, 1 add_cars cars_ram2, 1 + add_cars cars_fifo, 1 # Searches should be consistent between all implementations of basic indexes, partitions and tags. # Basic index. - uncached_corvet_car = uncached_searchby_name.get? "Corvet-0" - cached_corvet_car = cached_searchby_name.get? "Corvet-0" - ram_corvet_car = ram_searchby_name.get? "Corvet-0" + uncached_corvet_car = uncached_searchby_name.get? "Corvet-0" + cached_corvet_car = cached_searchby_name.get? "Corvet-0" + ram_corvet_car = ram_searchby_name.get? "Corvet-0" + fifo_cached_corvet_car = fifo_cached_searchby_name.get? "Corvet-0" uncached_corvet_car.should eq cached_corvet_car uncached_corvet_car.should eq ram_corvet_car + uncached_corvet_car.should eq fifo_cached_corvet_car uncached_corvet_car.should eq corvet0 # Partitions. red_cars = [ Car.new("Corvet-0", "red", [ "shiny", "impressive", "fast", "elegant" ]), Car.new("Ford-5-0", "red", [ "unknown" ]) ] - uncached_red_cars = uncached_searchby_color.get? "red" - cached_red_cars = cached_searchby_color.get? "red" - ram_red_cars = ram_searchby_color.get? "red" + uncached_red_cars = uncached_searchby_color.get? "red" + cached_red_cars = cached_searchby_color.get? "red" + ram_red_cars = ram_searchby_color.get? "red" + fifo_cached_red_cars = fifo_cached_searchby_color.get? "red" uncached_red_cars.sort.should eq cached_red_cars.sort uncached_red_cars.sort.should eq ram_red_cars.sort + uncached_red_cars.sort.should eq fifo_cached_red_cars.sort uncached_red_cars.sort.should eq red_cars.sort # Tags. fast_cars = [ Car.new("Corvet-0", "red", [ "shiny", "impressive", "fast", "elegant" ]), Car.new("Bullet-GT-0", "blue", [ "shiny", "fast", "expensive" ]) ] - uncached_fast_cars = uncached_searchby_keywords.get? "fast" - cached_fast_cars = cached_searchby_keywords.get? "fast" - ram_fast_cars = ram_searchby_keywords.get? "fast" + uncached_fast_cars = uncached_searchby_keywords.get? "fast" + cached_fast_cars = cached_searchby_keywords.get? "fast" + ram_fast_cars = ram_searchby_keywords.get? "fast" + fifo_cached_fast_cars = fifo_cached_searchby_keywords.get? "fast" uncached_fast_cars.sort.should eq cached_fast_cars.sort uncached_fast_cars.sort.should eq ram_fast_cars.sort + uncached_fast_cars.sort.should eq fifo_cached_fast_cars.sort uncached_fast_cars.sort.should eq fast_cars.sort cars_ram0.rm_storage_dir cars_ram1.rm_storage_dir cars_ram2.rm_storage_dir + cars_fifo.rm_storage_dir end end