/test/test_progress_bar.rb
Ruby | 123 lines | 95 code | 24 blank | 4 comment | 0 complexity | fd0eca5ed51ff672244b11c80a4455fe MD5 | raw file
Possible License(s): BSD-3-Clause
- # This code is free software; you can redistribute it and/or modify it under
- # the terms of the new BSD License.
- #
- # Copyright (c) 2009-2010, Sebastian Staudt
- require 'helper'
- class TestProgressBar < Test::Unit::TestCase
- context 'A progress bar' do
- should 'have default settings' do
- @bar = ProgressBar.new
- assert_equal 0.2, @bar.instance_variable_get(:@factor)
- assert_equal 100, @bar.instance_variable_get(:@maximum)
- assert_equal $stdout, @bar.instance_variable_get(:@ostream)
- assert_equal 0, @bar.instance_variable_get(:@progress)
- assert_equal '#', @bar.instance_variable_get(:@progress_char)
- assert_equal 0, @bar.instance_variable_get(:@value)
- end
- should 'have an easily changeable maximum' do
- @bar = ProgressBar.new(10)
- assert_equal 2, @bar.instance_variable_get(:@factor)
- assert_equal 10, @bar.instance_variable_get(:@maximum)
- assert_equal $stdout, @bar.instance_variable_get(:@ostream)
- assert_equal 0, @bar.instance_variable_get(:@progress)
- assert_equal '#', @bar.instance_variable_get(:@progress_char)
- assert_equal 0, @bar.instance_variable_get(:@value)
- end
- should 'be customizable' do
- options = {
- :char => '+',
- :maximum => 10,
- :ostream => StringIO.new,
- :size => 100,
- :start => 5
- }
- @bar = ProgressBar.new(options)
- assert_equal options[:size].to_f / options[:maximum], @bar.instance_variable_get(:@factor)
- assert_equal options[:maximum], @bar.instance_variable_get(:@maximum)
- assert_equal options[:ostream], @bar.instance_variable_get(:@ostream)
- assert_equal options[:start].to_f / options[:maximum] * options[:size], @bar.instance_variable_get(:@progress)
- assert_equal options[:char], @bar.instance_variable_get(:@progress_char)
- assert_equal options[:start], @bar.instance_variable_get(:@value)
- end
- should 'draw correctly for different sizes' do
- ostream = StringIO.new
- options = { :ostream => ostream, :start => 50 }
- @bar = ProgressBar.new(options)
- assert_equal "#" * 10, ostream.string
- @bar + 50
- assert_equal ("#" * 20) << "\n", ostream.string
- ostream.string = ''
- options[:size] = 10
- @bar = ProgressBar.new(options)
- assert_equal "#" * 5, ostream.string
- @bar + 10
- assert_equal "#" * 6, ostream.string
- ostream.string = ''
- options[:size] = 100
- @bar = ProgressBar.new(options)
- assert_equal "#" * 50, ostream.string
- @bar + 30
- assert_equal "#" * 80, ostream.string
- end
- should 'not overflow' do
- ostream = StringIO.new
- options = { :ostream => ostream, :size => 100 }
- @bar = ProgressBar.new options
- @bar + 101
- assert_equal ("#" * 100) << "\n", ostream.string
- assert_equal 100, @bar.instance_variable_get(:@progress)
- assert_equal 101, @bar.instance_variable_get(:@value)
- ostream.string = ''
- options[:start] = 50
- @bar = ProgressBar.new options
- @bar + 51
- assert_equal ("#" * 100) << "\n", ostream.string
- assert_equal 100, @bar.instance_variable_get(:@progress)
- assert_equal 101, @bar.instance_variable_get(:@value)
- ostream.string = ''
- options[:start] = 101
- @bar = ProgressBar.new options
- assert_equal ("#" * 100) << "\n", ostream.string
- assert_equal 100, @bar.instance_variable_get(:@progress)
- assert_equal 101, @bar.instance_variable_get(:@value)
- end
- should 'have brackets when enabled' do
- ostream = StringIO.new
- options = {
- :brackets => true,
- :bracket_filler => '-',
- :ostream => ostream
- }
- @bar = ProgressBar.new options
- assert_equal '[' + '-' * 20 + ']' + "\b" * 21, ostream.string
- @bar + 50
- assert_equal '[' + '-' * 20 + ']' + "\b" * 21 + '#' * 10, ostream.string
- @bar + 50
- assert_equal '[' + '-' * 20 + ']' + "\b" * 21 + '#' * 20 + "\n", ostream.string
- end
- end
- end