File: sized_uniq_array_spec.rb

package info (click to toggle)
atig 0.6.1-8
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 868 kB
  • sloc: ruby: 5,315; makefile: 11; sh: 3
file content (62 lines) | stat: -rw-r--r-- 1,385 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# -*- mode:ruby; coding:utf-8 -*-

require 'atig/db/sized_uniq_array'
require 'ostruct'

describe Atig::Db::SizedUniqArray do
  def item(id)
    item = double "Item-#{id}"
    allow(item).to receive(:id).and_return id
    item
  end

  before do
    @array = Atig::Db::SizedUniqArray.new 3
    @item1 = item 1
    @item2 = item 2
    @item3 = item 3
    @item4 = item 4

    @array << @item1
    @array << @item2
    @array << @item3
  end

  it "should include items" do
    expect(@array.to_a).to eq([ @item1, @item2, @item3 ])
  end

  it "should rorate array" do
    @array << @item4
    expect(@array.to_a).to eq([ @item2, @item3, @item4 ])
  end

  it "should have reverse_each" do
    xs = []
    @array.reverse_each {|x| xs << x }
    expect(xs).to eq([ @item3, @item2, @item1 ])
  end

  it "should not have duplicate element" do
    @array << item(1)
    expect(@array.to_a).to eq([ @item1, @item2, @item3 ])
  end

  it "should be accesible by index" do
    expect(@array[0]).to eq(@item1)
    expect(@array[1]).to eq(@item2)
    expect(@array[2]).to eq(@item3)
  end

  it "should not change index" do
    @array << @item4
    expect(@array[0]).to eq(@item4)
    expect(@array[1]).to eq(@item2)
    expect(@array[2]).to eq(@item3)
  end

  it "should return index when add element" do
    expect(@array << @item4).to eq(0)
    expect(@array << @item3).to eq(nil)
  end
end