Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'spec_helper'
- module Counter
- def self.included(base)
- base.class_eval do
- @@counters = {}
- def self.instances_count
- @@counters[self]
- end
- end
- end
- def self.reset_counters
- @@counters = {}
- end
- def initialize
- @@counters[self.class] ||= 0
- @@counters[self.class] += 1
- end
- end
- class Car
- include Counter
- end
- class Truck
- include Counter
- end
- class Van
- include Counter
- end
- describe 'Instance counter' do
- before { Counter.reset_counters }
- it 'works with car, van and truck' do
- Car.new
- Van.new
- Truck.new
- expect(Car.instances_count).to eq(1)
- expect(Van.instances_count).to eq(1)
- expect(Truck.instances_count).to eq(1)
- end
- it 'works with 2 cars, 4 vans and 3 trucks' do
- 2.times { Car.new }
- 4.times { Van.new }
- 3.times { Truck.new }
- expect(Car.instances_count).to eq(2)
- expect(Van.instances_count).to eq(4)
- expect(Truck.instances_count).to eq(3)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement