File: comparator_spec.rb

package info (click to toggle)
ruby-benchmark-memory 0.2.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 300 kB
  • sloc: ruby: 1,121; makefile: 7; sh: 4
file content (39 lines) | stat: -rw-r--r-- 1,267 bytes parent folder | download
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
# frozen_string_literal: true

require 'spec_helper'

RSpec.describe Benchmark::Memory::Report::Comparator do
  describe '.from_spec' do
    it 'defaults to memory: :allocated when given nothing' do
      subject = described_class.from_spec({})

      expect(subject).to eq described_class.new(metric: :memory, value: :allocated)
    end

    it 'accepts all different types of metrics' do
      memory = described_class.from_spec({ memory: :allocated })
      expect(memory.metric).to eq :memory

      objects = described_class.from_spec({ objects: :allocated })
      expect(objects.metric).to eq :objects

      strings = described_class.from_spec({ strings: :allocated })
      expect(strings.metric).to eq :strings
    end

    it 'raises an error if given an invalid metric' do
      expect { described_class.from_spec({ unknown: :allocated }) }
        .to raise_error ArgumentError
    end

    it 'raises an error if given an invalid value' do
      expect { described_class.from_spec({ memory: :unknown }) }
        .to raise_error ArgumentError
    end

    it 'raises an error if given more than one metric' do
      expect { described_class.from_spec({ memory: :allocated, objects: :retained }) }
        .to raise_error ArgumentError
    end
  end
end