Sha256: 74eb5d9484fabd125e2b8326ea210366b310c28e02b5d1e4496abe97c25c05c2

Contents?: true

Size: 1.18 KB

Versions: 34

Compression:

Stored size: 1.18 KB

Contents

module Cuboid
module Support
module Mixins

# @note Only for when running specs!
#
# Keeps track of every initialized instance so that they can be properly
# cleaned-up later.
module SpecInstances

    def self.prepended( base )
        base.extend ClassMethods
    end

    module ClassMethods

        # @abstract
        def _spec_instance_cleanup( i )
            fail 'Not implemented.'
        end

        def _spec_instances_cleanup
            _spec_instances.each do |i|
                _spec_instance_cleanup i
            end

            _spec_instances_clear
        end

        def _spec_instances_clear
            _spec_instances.clear
        end

        def _spec_instance( instance )
            return if !_spec_instances_collect?
            _spec_instances << instance
        end

        def _spec_instances_collect!
            @_spec_instances_collect = true
        end

        def _spec_instances_collect?
            @_spec_instances_collect
        end

        private

        def _spec_instances
            @_spec_instances ||= Concurrent::Array.new
        end

    end

    def initialize(*)
        super

        self.class._spec_instance self
    end

end

end
end
end

Version data entries

34 entries across 34 versions & 1 rubygems

Version Path
cuboid-0.2.13 lib/cuboid/support/mixins/spec_instances.rb
cuboid-0.2.12 lib/cuboid/support/mixins/spec_instances.rb
cuboid-0.2.11 lib/cuboid/support/mixins/spec_instances.rb
cuboid-0.2.10 lib/cuboid/support/mixins/spec_instances.rb
cuboid-0.2.9 lib/cuboid/support/mixins/spec_instances.rb
cuboid-0.2.8 lib/cuboid/support/mixins/spec_instances.rb
cuboid-0.2.7 lib/cuboid/support/mixins/spec_instances.rb
cuboid-0.2.6 lib/cuboid/support/mixins/spec_instances.rb
cuboid-0.2.5 lib/cuboid/support/mixins/spec_instances.rb
cuboid-0.2.4.2 lib/cuboid/support/mixins/spec_instances.rb
cuboid-0.2.4.1 lib/cuboid/support/mixins/spec_instances.rb
cuboid-0.2.4 lib/cuboid/support/mixins/spec_instances.rb
cuboid-0.2.3 lib/cuboid/support/mixins/spec_instances.rb
cuboid-0.2.2 lib/cuboid/support/mixins/spec_instances.rb
cuboid-0.2.1 lib/cuboid/support/mixins/spec_instances.rb
cuboid-0.2 lib/cuboid/support/mixins/spec_instances.rb
cuboid-0.1.9.1 lib/cuboid/support/mixins/spec_instances.rb
cuboid-0.1.9 lib/cuboid/support/mixins/spec_instances.rb
cuboid-0.1.8 lib/cuboid/support/mixins/spec_instances.rb
cuboid-0.1.7 lib/cuboid/support/mixins/spec_instances.rb