File: test_top_n.rb

package info (click to toggle)
ruby-memory-profiler 1.1.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 284 kB
  • sloc: ruby: 1,128; makefile: 4
file content (53 lines) | stat: -rw-r--r-- 1,859 bytes parent folder | download | duplicates (3)
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
# frozen_string_literal: true

require_relative 'test_helper'

class HashWithTopN < Hash
  include MemoryProfiler::TopN
end

class TestTopN < Minitest::Test

  TestItem = Struct.new(:metric1, :metric2, :memsize)

  def sample_data
    HashWithTopN.new.merge!(
            1 => TestItem.new('class1', 'gem1', 100),
            2 => TestItem.new('class1', 'gem2', 100),
            3 => TestItem.new('class1', 'gem3', 100),
            4 => TestItem.new('class2', 'gem1', 100),
            5 => TestItem.new('class2', 'gem1', 100),
            6 => TestItem.new('class2', 'gem1', 100),
            7 => TestItem.new('class3', 'gem2', 1000)
    )
  end

  def test_top_n_small_n
    data = sample_data
    metric1_results = data.top_n(2, :metric1)
    metric2_results = data.top_n(2, :metric2)

    assert_equal([[{ data: "class3", count: 1000 }, { data: "class1", count: 300 }],
                  [{ data: "class1", count: 3 }, { data: "class2", count: 3 }]],
                 metric1_results)

    assert_equal([[{ data: "gem2", count: 1100 }, { data: "gem1", count: 400 }],
                  [{ data: "gem1", count: 4 }, { data: "gem2", count: 2 }]],
                 metric2_results)
  end

  def test_top_n_large_n
    data = sample_data
    metric1_results = data.top_n(50, :metric1)
    metric2_results = data.top_n(50, :metric2)

    assert_equal([[{ data: "class3", count: 1000 }, { data: "class1", count: 300 }, { data: "class2", count: 300 }],
                  [{ data: "class1", count: 3 }, { data: "class2", count: 3 }, { data: "class3", count: 1 }]],
                 metric1_results)

    assert_equal([[{ data: "gem2", count: 1100 }, { data: "gem1", count: 400 }, { data: "gem3", count: 100 }],
                  [{ data: "gem1", count: 4 }, { data: "gem2", count: 2 }, { data: "gem3", count: 1 }]],
                 metric2_results)
  end

end