Sha256: 3f135282c93f1ebb3cfb2fa0d1a73e4b2f5d5de30237aeaab09500a663f10e5d
Contents?: true
Size: 1.79 KB
Versions: 3
Compression:
Stored size: 1.79 KB
Contents
require 'spec_helper' module Alf describe Aggregator do let(:input){[ {:a => 1, :sign => -1}, {:a => 2, :sign => 1 }, {:a => 3, :sign => -1}, {:a => 1, :sign => -1}, ]} it "should behave correctly on count" do Aggregator.count(:a).aggregate(input).should == 4 end it "should behave correctly on sum" do Aggregator.sum(:a).aggregate(input).should == 7 end it "should behave correctly on avg" do Aggregator.avg(:a).aggregate(input).should == 7.0 / 4.0 end it "should behave correctly on min" do Aggregator.min(:a).aggregate(input).should == 1 end it "should behave correctly on max" do Aggregator.max(:a).aggregate(input).should == 3 end it "should behave correctly on concat" do Aggregator.concat(:a).aggregate(input).should == "1231" Aggregator.concat(:a, :between => " ").aggregate(input).should == "1 2 3 1" Aggregator.concat(:a, :before => "[", :after => "]").aggregate(input).should == "[1231]" Aggregator.concat(:before => "[", :after => "]"){ a }.aggregate(input).should == "[1231]" end it "should behave correctly on collect" do Aggregator.collect(:a).aggregate(input).should == [1, 2, 3, 1] Aggregator.collect{ {:a => a, :sign => sign} }.aggregate(input).should == input end it "should behave correctly on group" do Aggregator.group(:a).aggregate(input).should == rel( {:a => 1}, {:a => 2}, {:a => 3} ) Aggregator.group(:a, :sign).aggregate(input).should == rel( {:a => 1, :sign => -1}, {:a => 2, :sign => 1 }, {:a => 3, :sign => -1} ) end it "should allow specific tuple computations" do Aggregator.sum{ 1.0 * a * sign }.aggregate(input).should == -3.0 end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
alf-0.9.3 | spec/unit/test_aggregator.rb |
alf-0.9.2 | spec/unit/test_aggregator.rb |
alf-0.9.1 | spec/unit/test_aggregator.rb |