File: enumerable_examples.rb

package info (click to toggle)
ruby-multimap 1.1.2%2Bgh-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 228 kB
  • ctags: 96
  • sloc: ruby: 1,464; ansic: 18; makefile: 2
file content (50 lines) | stat: -rw-r--r-- 1,956 bytes parent folder | download | duplicates (2)
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
shared_examples_for "Enumerable Multimap with inital values {'a' => [100], 'b' => [200, 300]}" do
  it "should check all key/value pairs for condition" do
    @map.all? { |key, value| key =~ /\w/ }.should be_true
    @map.all? { |key, value| key =~ /\d/ }.should be_false
    @map.all? { |key, value| value > 0 }.should be_true
    @map.all? { |key, value| value > 200 }.should be_false
  end

  it "should check any key/value pairs for condition" do
    @map.any? { |key, value| key == "a" }.should be_true
    @map.any? { |key, value| key == "z" }.should be_false
    @map.any? { |key, value| value == 100 }.should be_true
    @map.any? { |key, value| value > 1000 }.should be_false
  end

  it "should collect key/value pairs" do
    @map.collect { |key, value| [key, value] }.should sorted_eql([["a", 100], ["b", 200], ["b", 300]])
    @map.map { |key, value| [key, value] }.should sorted_eql([["a", 100], ["b", 200], ["b", 300]])
  end

  it "should detect key/value pair" do
    @map.detect { |key, value| value > 200 }.should eql(["b", 300])
    @map.find { |key, value| value > 200 }.should eql(["b", 300])
  end

  it "should return entries" do
    @map.entries.should sorted_eql([["a", 100], ["b", 200], ["b", 300]])
    @map.to_a.should sorted_eql([["a", 100], ["b", 200], ["b", 300]])
  end

  it "should find all key/value pairs" do
    @map.find_all { |key, value| value >= 200 }.should eql([["b", 200], ["b", 300]])
    @map.select { |key, value| value >= 200 }.should eql(Multimap["b", [200, 300]])
  end

  it "should combine key/value pairs with inject" do
    @map.inject(0) { |sum, (key, value)| sum + value }.should eql(600)

    @map.inject(0) { |memo, (key, value)|
      memo > value ? memo : value
    }.should eql(300)
  end

  it "should check for key membership" do
    @map.member?("a").should be_true
    @map.include?("a").should be_true
    @map.member?("z").should be_false
    @map.include?("z").should be_false
  end
end