From c9147478c05f3c600113dc4fc1f65736da9522cb Mon Sep 17 00:00:00 2001 From: Jeff Felchner Date: Fri, 3 Mar 2023 01:14:41 -0600 Subject: [PATCH] Refactor: Rename Calculators To Projectors Why This Change Is Necessary ======================================================================== Now that the calculator is responsible for more than just a single `calculate` method, it is being renamed to something more appropriate for its task. What These Changes Do To Address the Issue ======================================================================== Rename and move the files for the `SmoothedAverage` class. Side Effects Caused By This Change ======================================================================== None expected. --- lib/ruby-progressbar/projector.rb | 6 +-- .../smoothed_average.rb | 2 +- .../ruby-progressbar/components/bar_spec.rb | 44 ++++++++-------- .../components/percentage_spec.rb | 8 +-- .../ruby-progressbar/components/rate_spec.rb | 6 +-- .../ruby-progressbar/components/time_spec.rb | 50 +++++++++---------- .../smoothed_average_spec.rb | 4 +- spec/lib/ruby-progressbar/projector_spec.rb | 4 +- 8 files changed, 62 insertions(+), 62 deletions(-) rename lib/ruby-progressbar/{calculators => projectors}/smoothed_average.rb (98%) rename spec/lib/ruby-progressbar/{calculators => projector}/smoothed_average_spec.rb (97%) diff --git a/lib/ruby-progressbar/projector.rb b/lib/ruby-progressbar/projector.rb index 49dc83b..d1759c4 100644 --- a/lib/ruby-progressbar/projector.rb +++ b/lib/ruby-progressbar/projector.rb @@ -1,10 +1,10 @@ -require 'ruby-progressbar/calculators/smoothed_average' +require 'ruby-progressbar/projectors/smoothed_average' class ProgressBar class Projector - DEFAULT_PROJECTOR = ProgressBar::Calculators::SmoothedAverage + DEFAULT_PROJECTOR = ProgressBar::Projectors::SmoothedAverage NAME_TO_PROJECTOR_MAP = { - 'smoothed' => ProgressBar::Calculators::SmoothedAverage + 'smoothed' => ProgressBar::Projectors::SmoothedAverage }.freeze def self.from_type(name) diff --git a/lib/ruby-progressbar/calculators/smoothed_average.rb b/lib/ruby-progressbar/projectors/smoothed_average.rb similarity index 98% rename from lib/ruby-progressbar/calculators/smoothed_average.rb rename to lib/ruby-progressbar/projectors/smoothed_average.rb index ccafc2a..0a8b3c1 100644 --- a/lib/ruby-progressbar/calculators/smoothed_average.rb +++ b/lib/ruby-progressbar/projectors/smoothed_average.rb @@ -1,5 +1,5 @@ class ProgressBar -module Calculators +module Projectors class SmoothedAverage DEFAULT_STRENGTH = 0.1 DEFAULT_BEGINNING_POSITION = 0 diff --git a/spec/lib/ruby-progressbar/components/bar_spec.rb b/spec/lib/ruby-progressbar/components/bar_spec.rb index 0c6baa3..9c57a37 100644 --- a/spec/lib/ruby-progressbar/components/bar_spec.rb +++ b/spec/lib/ruby-progressbar/components/bar_spec.rb @@ -30,7 +30,7 @@ module Components describe '#bar' do it 'displays the bar with no indication of progress when just begun' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 50) progressbar = Bar.new(:progress => progress, :length => 100) @@ -41,7 +41,7 @@ module Components it 'displays the bar with an indication of progress when nothing has been ' \ 'completed and the bar is incremented' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 50) progressbar = Bar.new(:progress => progress, :length => 100) @@ -53,7 +53,7 @@ module Components it 'displays the bar with no indication of progress when a fraction of a percentage ' \ 'has been completed' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 200) progressbar = Bar.new(:progress => progress, :length => 100) @@ -64,7 +64,7 @@ module Components end it 'displays the bar as 100% complete when completed' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 50) progressbar = Bar.new(:progress => progress, :length => 100) @@ -76,7 +76,7 @@ module Components end it 'displays the bar as 98% complete when completed and the bar is decremented' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 50) progressbar = Bar.new(:progress => progress, :length => 100) @@ -90,7 +90,7 @@ module Components describe '#bar_with_percentage' do it 'displays the bar with an integrated percentage properly when empty' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 100) progressbar = Bar.new(:progress => progress, :length => 100) @@ -101,7 +101,7 @@ module Components it 'displays the bar with an integrated percentage properly just before' \ 'the percentage is displayed' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 100) progressbar = Bar.new(:progress => progress, :length => 100) @@ -114,7 +114,7 @@ module Components it 'displays the bar with an integrated percentage properly immediately after' \ 'the percentage is displayed' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 100) progressbar = Bar.new(:progress => progress, :length => 100) @@ -127,7 +127,7 @@ module Components it 'displays the bar with an integrated percentage properly on double digit' \ 'percentage' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 100) progressbar = Bar.new(:progress => progress, :length => 100) @@ -139,7 +139,7 @@ module Components end it 'displays the bar with an integrated percentage properly when finished' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 100) progressbar = Bar.new(:progress => progress, :length => 100) @@ -151,7 +151,7 @@ module Components it 'calculates the remaining negative space properly with an integrated percentage ' \ 'bar of 0 percent' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 200) progressbar = Bar.new(:progress => progress, :length => 100) @@ -173,7 +173,7 @@ module Components describe '#incomplete_space' do it 'displays the bar with an integrated percentage properly when empty' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 100) progressbar = Bar.new(:progress => progress, :length => 100) @@ -184,7 +184,7 @@ module Components it 'displays the bar with an integrated percentage properly just before' \ 'the percentage is displayed' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 100) progressbar = Bar.new(:progress => progress, :length => 100) @@ -197,7 +197,7 @@ module Components it 'displays the bar with an integrated percentage properly immediately after' \ 'the percentage is displayed' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 100) progressbar = Bar.new(:progress => progress, :length => 100) @@ -210,7 +210,7 @@ module Components it 'displays the bar with an integrated percentage properly on double digit' \ 'percentage' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 100) progressbar = Bar.new(:progress => progress, :length => 100) @@ -222,7 +222,7 @@ module Components end it 'displays the bar with an integrated percentage properly when finished' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 100) progressbar = Bar.new(:progress => progress, :length => 100) @@ -234,7 +234,7 @@ module Components it 'calculates the remaining negative space properly with an integrated percentage ' \ 'bar of 0 percent' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 200) progressbar = Bar.new(:progress => progress, :length => 100) @@ -254,7 +254,7 @@ module Components end it 'is represented correctly when a bar has an unknown amount to completion' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => nil) progressbar = Bar.new(:progress => progress, :length => 80) @@ -265,7 +265,7 @@ module Components it 'is represented after being incremented once when a bar has an unknown amount ' \ 'to completion' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => nil) progressbar = Bar.new(:progress => progress, :length => 80) @@ -278,7 +278,7 @@ module Components it 'is represented after being incremented twice when a bar has an unknown amount ' \ 'to completion' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => nil) progressbar = Bar.new(:progress => progress, :length => 80) @@ -290,7 +290,7 @@ module Components end it 'is represented correctly when a bar has a customized unknown animation' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => nil) progressbar = Bar.new(:progress => progress, :unknown_progress_animation_steps => [ @@ -307,7 +307,7 @@ module Components it 'raises an error when attempting to set the current value of the bar to be ' \ 'greater than the total' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 10) _progressbar = Bar.new(:progress => progress) diff --git a/spec/lib/ruby-progressbar/components/percentage_spec.rb b/spec/lib/ruby-progressbar/components/percentage_spec.rb index a9e5727..bad3790 100644 --- a/spec/lib/ruby-progressbar/components/percentage_spec.rb +++ b/spec/lib/ruby-progressbar/components/percentage_spec.rb @@ -6,7 +6,7 @@ module Components describe Percentage do describe '#percentage' do it 'returns the percentage' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 10) percentage = Percentage.new(:progress => progress) @@ -18,7 +18,7 @@ module Components describe '#percentage_with_precision' do it 'returns the percentage' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 10) percentage = Percentage.new(:progress => progress) @@ -30,7 +30,7 @@ module Components describe '#justified_percentage' do it 'returns the percentage' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 10) percentage = Percentage.new(:progress => progress) @@ -42,7 +42,7 @@ module Components describe '#justified_percentage_with_precision' do it 'returns the percentage' do - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 10) percentage = Percentage.new(:progress => progress) diff --git a/spec/lib/ruby-progressbar/components/rate_spec.rb b/spec/lib/ruby-progressbar/components/rate_spec.rb index fd7f382..7d48554 100644 --- a/spec/lib/ruby-progressbar/components/rate_spec.rb +++ b/spec/lib/ruby-progressbar/components/rate_spec.rb @@ -8,7 +8,7 @@ module Components it 'returns the rate as a formatted integer' do Timecop.freeze(::Time.utc(2020, 1, 1, 0, 0, 0)) - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 100) timer = Timer.new rate = Rate.new(:progress => progress, @@ -29,7 +29,7 @@ module Components it 'can scale the rate' do Timecop.freeze(::Time.utc(2020, 1, 1, 0, 0, 0)) - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 100) timer = Timer.new rate = Rate.new(:progress => progress, @@ -53,7 +53,7 @@ module Components it 'returns the rate as a formatted integer' do Timecop.freeze(::Time.utc(2020, 1, 1, 0, 0, 0)) - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:projector => projector, :total => 100) timer = Timer.new rate = Rate.new(:progress => progress, diff --git a/spec/lib/ruby-progressbar/components/time_spec.rb b/spec/lib/ruby-progressbar/components/time_spec.rb index e4b782c..45bdd7e 100644 --- a/spec/lib/ruby-progressbar/components/time_spec.rb +++ b/spec/lib/ruby-progressbar/components/time_spec.rb @@ -7,7 +7,7 @@ module Components describe '#elapsed_with_label' do it 'displays unknown elapsed time when the timer has not been started' do timer = Timer.new - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new time = Time.new(:timer => timer, :progress => progress, @@ -18,7 +18,7 @@ module Components it 'displays elapsed time when the timer has just been started' do timer = Timer.new - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new time = Time.new(:timer => timer, :progress => progress, @@ -32,7 +32,7 @@ module Components it 'displays elapsed time if it was previously started' do timer = Timer.new - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new time = Time.new(:timer => timer, :progress => progress, @@ -50,7 +50,7 @@ module Components it 'displays elapsed time frozen to a specific time if it was previously stopped' do timer = Timer.new - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new time = Time.new(:timer => timer, :progress => progress, @@ -73,7 +73,7 @@ module Components it 'displays unknown elapsed time after reset has been called' do timer = Timer.new - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new time = Time.new(:timer => timer, :progress => progress, @@ -95,7 +95,7 @@ module Components describe '#estimated_with_unknown_oob' do it 'displays estimated time if it is known' do timer = Timer.new - projector = Calculators::SmoothedAverage.new(:strength => 0.0) + projector = Projectors::SmoothedAverage.new(:strength => 0.0) progress = Progress.new(:total => 100) time = Time.new(:timer => timer, :progress => progress, @@ -118,7 +118,7 @@ module Components it 'displays an unknown estimated time remaining when the timer has been started ' \ 'but no progress has been made' do timer = Timer.new - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:total => 100) time = Time.new(:timer => timer, :progress => progress, @@ -133,7 +133,7 @@ module Components it 'displays unknown time remaining when progress has been made and then progress ' \ 'is reset' do timer = Timer.new - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:total => 100) time = Time.new(:timer => timer, :progress => progress, @@ -158,7 +158,7 @@ module Components it 'displays unknown time remaining when progress has been made and then rate ' \ 'is reset' do timer = Timer.new - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:total => 100) time = Time.new(:timer => timer, :progress => progress, @@ -183,7 +183,7 @@ module Components it 'displays estimated time of "??:??:??" when estimated time is out of bounds ' \ 'and the out of bounds format is set to "unknown"' do timer = Timer.new - projector = Calculators::SmoothedAverage.new(:strength => 0.0) + projector = Projectors::SmoothedAverage.new(:strength => 0.0) progress = Progress.new(:total => 100) time = Time.new(:out_of_bounds_time_format => :unknown, :timer => timer, @@ -207,7 +207,7 @@ module Components it 'displays smoothed unknown estimated time when reset is called after progress ' \ 'is made' do timer = Timer.new - projector = Calculators::SmoothedAverage.new(:strength => 0.5) + projector = Projectors::SmoothedAverage.new(:strength => 0.5) progress = Progress.new(:total => 100) time = Time.new(:timer => timer, :progress => progress, @@ -233,7 +233,7 @@ module Components describe '#estimated_with_friendly_oob' do it 'displays estimated time if it is known' do timer = Timer.new - projector = Calculators::SmoothedAverage.new(:strength => 0.0) + projector = Projectors::SmoothedAverage.new(:strength => 0.0) progress = Progress.new(:total => 100) time = Time.new(:timer => timer, :progress => progress, @@ -256,7 +256,7 @@ module Components it 'displays estimated time of "> 4 Days" when estimated time is out of bounds ' \ 'and the out of bounds format is set to "friendly"' do timer = Timer.new - projector = Calculators::SmoothedAverage.new(:strength => 0.0) + projector = Projectors::SmoothedAverage.new(:strength => 0.0) progress = Progress.new(:total => 100) time = Time.new(:out_of_bounds_time_format => :friendly, :timer => timer, @@ -281,7 +281,7 @@ module Components describe '#estimated_with_no_oob' do it 'displays estimated time if it is known' do timer = Timer.new - projector = Calculators::SmoothedAverage.new(:strength => 0.0) + projector = Projectors::SmoothedAverage.new(:strength => 0.0) progress = Progress.new(:total => 100) time = Time.new(:timer => timer, :progress => progress, @@ -304,7 +304,7 @@ module Components it 'displays actual estimated time when estimated time is out of bounds and the ' \ 'out of bounds format is unset' do timer = Timer.new - projector = Calculators::SmoothedAverage.new(:strength => 0.0) + projector = Projectors::SmoothedAverage.new(:strength => 0.0) progress = Progress.new(:total => 100) time = Time.new(:out_of_bounds_time_format => nil, :timer => timer, @@ -330,7 +330,7 @@ module Components it 'does not display unknown time remaining when the timer has been started and ' \ 'it is incremented' do timer = Timer.new - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new(:total => 100) time = Time.new(:timer => timer, :progress => progress, @@ -346,7 +346,7 @@ module Components it 'displays unsmoothed time remaining when progress has been made' do timer = Timer.new - projector = Calculators::SmoothedAverage.new(:strength => 0.0) + projector = Projectors::SmoothedAverage.new(:strength => 0.0) progress = Progress.new(:total => 100) time = Time.new(:timer => timer, :progress => progress, @@ -369,7 +369,7 @@ module Components it 'displays unsmoothed time remaining when progress has been made even after the ' \ 'bar is decremented' do timer = Timer.new - projector = Calculators::SmoothedAverage.new(:strength => 0.0) + projector = Projectors::SmoothedAverage.new(:strength => 0.0) progress = Progress.new(:total => 100) time = Time.new(:timer => timer, :progress => progress, @@ -397,7 +397,7 @@ module Components it 'displays smoothed estimated time properly even when taking decrements into ' \ 'account' do timer = Timer.new - projector = Calculators::SmoothedAverage.new(:strength => 0.5) + projector = Projectors::SmoothedAverage.new(:strength => 0.5) progress = Progress.new(:total => 100) time = Time.new(:timer => timer, :progress => progress, @@ -424,7 +424,7 @@ module Components it 'displays smoothed estimated time after progress has been made' do timer = Timer.new - projector = Calculators::SmoothedAverage.new(:strength => 0.5) + projector = Projectors::SmoothedAverage.new(:strength => 0.5) progress = Progress.new(:total => 100) time = Time.new(:timer => timer, :progress => progress, @@ -447,7 +447,7 @@ module Components it 'displays the estimated time remaining properly even for progress increments ' \ 'very short intervals' do timer = Timer.new - projector = Calculators::SmoothedAverage.new(:strength => 0.1) + projector = Projectors::SmoothedAverage.new(:strength => 0.1) progress = Progress.new(:total => 10) time = Time.new(:timer => timer, :progress => progress, @@ -492,7 +492,7 @@ module Components describe '#estimated_wall_clock' do it 'displays the wall clock time as unknown when the timer has been reset' do timer = Timer.new - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new time = Time.new(:timer => timer, :progress => progress, @@ -512,7 +512,7 @@ module Components it 'displays the wall clock time as unknown when the progress has not begun' do timer = Timer.new - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new time = Time.new(:timer => timer, :progress => progress, @@ -530,7 +530,7 @@ module Components it 'displays the completed wall clock time if the progress is finished' do timer = Timer.new - projector = Calculators::SmoothedAverage.new + projector = Projectors::SmoothedAverage.new progress = Progress.new time = Time.new(:timer => timer, :progress => progress, @@ -553,7 +553,7 @@ module Components it 'displays the estimated wall clock time if the progress is ongoing' do timer = Timer.new - projector = Calculators::SmoothedAverage.new(:strength => 0.0) + projector = Projectors::SmoothedAverage.new(:strength => 0.0) progress = Progress.new time = Time.new(:timer => timer, :progress => progress, diff --git a/spec/lib/ruby-progressbar/calculators/smoothed_average_spec.rb b/spec/lib/ruby-progressbar/projector/smoothed_average_spec.rb similarity index 97% rename from spec/lib/ruby-progressbar/calculators/smoothed_average_spec.rb rename to spec/lib/ruby-progressbar/projector/smoothed_average_spec.rb index 2e2d6d4..5d29dc3 100644 --- a/spec/lib/ruby-progressbar/calculators/smoothed_average_spec.rb +++ b/spec/lib/ruby-progressbar/projector/smoothed_average_spec.rb @@ -1,8 +1,8 @@ require 'spec_helper' -require 'ruby-progressbar/calculators/smoothed_average' +require 'ruby-progressbar/projectors/smoothed_average' class ProgressBar -module Calculators +module Projectors describe SmoothedAverage do describe '.calculate' do it 'can properly calculate a projection' do diff --git a/spec/lib/ruby-progressbar/projector_spec.rb b/spec/lib/ruby-progressbar/projector_spec.rb index 45ba37c..6304175 100644 --- a/spec/lib/ruby-progressbar/projector_spec.rb +++ b/spec/lib/ruby-progressbar/projector_spec.rb @@ -7,13 +7,13 @@ class ProgressBar it 'has a default projector' do projector = Projector.from_type(nil) - expect(projector).to be ProgressBar::Calculators::SmoothedAverage + expect(projector).to be ProgressBar::Projectors::SmoothedAverage end it 'can return a specific projector' do projector = Projector.from_type('smoothed') - expect(projector).to be ProgressBar::Calculators::SmoothedAverage + expect(projector).to be ProgressBar::Projectors::SmoothedAverage end end end