Sha256: 01da3acd5fa89eb622eb476eeed160e88bd37085d0558f44657e947dda65650f

Contents?: true

Size: 1.78 KB

Versions: 2

Compression:

Stored size: 1.78 KB

Contents

require 'spec_helper'

describe Downsampler do
  let(:data) { generate_enumerable }
  let(:downsampled_data) { data.downsample_by(60, &:time) }    

  it "should add downsample_by method" do
    expect([]).to respond_to :downsample_by
  end

  describe ".downsample_by" do
    
    it "should return a downsampled hash" do
      expect(downsampled_data).to be_a(Downsampler::DownsampledHash)
    end

    it "should generate the correct group keys" do
      sorted_keys = downsampled_data.keys.sort
      first_time = sorted_keys.first
      generated_keys = sorted_keys.size.times.map do |i|
        first_time + i*60
      end
      expect(generated_keys == sorted_keys).to be true
    end

    it "should create 3 groups for the 9 datapoints" do
      expect(downsampled_data.count).to eq(3)
    end

    it "should disribute the groups correctly" do
      downsampled_data.each_pair do |key, values|
        expect(
          (values.first.time + 60) > values.last.time
        ).to be true
      end
    end

  end

  describe ".sum" do
    let(:first_key) { downsampled_data.keys.first }
    let(:summed) { downsampled_data.sum(&:value) }
    
    it "should correctly sum each group" do
      #first group should have the values [1,2,3]
      expect(summed[first_key]).to eq 6
    end

    it "should leak sum method to original array" do
      summed
      expect(downsampled_data[first_key]).not_to respond_to :sum
    end
  end

  describe ".mean" do
    let(:first_key) { downsampled_data.keys.first }
    let(:meaned) { downsampled_data.mean(&:value) }
    
    it "should correctly average each group" do
      expect(meaned[first_key]).to eq 2
    end

    it "should not leak mean method to original array" do
      meaned
      expect(downsampled_data[first_key]).not_to respond_to :mean
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
downsampler-0.2.0 spec/downsampler_spec.rb
downsampler-0.1.0 spec/downsampler_spec.rb