From 921c15fa6de8befc63f520737b4f62f86193f992 Mon Sep 17 00:00:00 2001 From: Andrew Harper Date: Fri, 26 Jun 2020 09:28:17 -0400 Subject: [PATCH] Fix divide by zero error for averages on an empty collection (#14) --- lib/data-table/table.rb | 2 ++ spec/table_spec.rb | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/lib/data-table/table.rb b/lib/data-table/table.rb index 2da8f33..9da2104 100644 --- a/lib/data-table/table.rb +++ b/lib/data-table/table.rb @@ -423,6 +423,8 @@ def calculate_sum(collection, column_name) end def calculate_avg(collection, column_name) + return 0 if collection.empty? + sum = calculate_sum(collection, column_name) sum / collection.size end diff --git a/spec/table_spec.rb b/spec/table_spec.rb index 021fe83..96284c8 100644 --- a/spec/table_spec.rb +++ b/spec/table_spec.rb @@ -138,6 +138,13 @@ expect(data_table.render).to \ eq(%{
#{text}
}) end + + it "avoids dividing by zero" do + data_table.column :power_level + data_table.total :power_level, :avg, 0 + data_table.calculate_totals! + expect(data_table.total_calculations).to eq([{:power_level=>0}]) + end end context 'with a more complicated setup' do