upload_progress_testx.rb
上传用户:netsea168
上传日期:2022-07-22
资源大小:4652k
文件大小:3k
源码类别:

Ajax

开发平台:

Others

  1. require 'test/unit'
  2. require 'cgi'
  3. require 'stringio'
  4. class UploadProgressTest < Test::Unit::TestCase
  5.   def test_remaining
  6.     progress = new_progress(20000)
  7.     assert_equal(0, progress.received_bytes)
  8.     assert_equal(20000, progress.remaining_bytes)
  9.     progress.update!(10000, 1.0)
  10.     assert_equal(10000, progress.remaining_bytes)
  11.     assert_equal(1.0, progress.remaining_seconds)
  12.     assert_equal(50, progress.completed_percent)
  13.     assert_equal(true, progress.started?)
  14.     assert_equal(false, progress.finished?)
  15.     assert_equal(false, progress.stalled?)
  16.     progress.update!(10000, 2.0)
  17.     assert_equal(true, progress.finished?)
  18.     assert_equal(0.0, progress.remaining_seconds)
  19.   end
  20.   def test_stalled
  21.     progress = new_progress(10000)
  22.     assert_equal(false, progress.stalled?)
  23.     progress.update!(100, 1.0)
  24.     assert_equal(false, progress.stalled?)
  25.     progress.update!(100, 20.0)
  26.     assert_equal(true, progress.stalled?)
  27.     assert_in_delta(0.0, progress.bitrate, 0.001)
  28.     progress.update!(100, 21.0)
  29.     assert_equal(false, progress.stalled?)
  30.   end
  31.   def test_elapsed
  32.     progress = new_progress(10000)
  33.     (1..5).each do |t|
  34.       progress.update!(1000, Float(t))
  35.     end
  36.     assert_in_delta(5.0, progress.elapsed_seconds, 0.001)
  37.     assert_equal(10000, progress.total_bytes)
  38.     assert_equal(5000, progress.received_bytes)
  39.     assert_equal(5000, progress.remaining_bytes)
  40.   end
  41.   def test_overflow
  42.     progress = new_progress(10000)
  43.     progress.update!(20000, 1.0)
  44.     assert_equal(10000, progress.received_bytes)
  45.   end
  46.   def test_zero
  47.     progress = new_progress(0)
  48.     assert_equal(0, progress.total_bytes)
  49.     assert_equal(0, progress.remaining_bytes)
  50.     assert_equal(false, progress.started?)
  51.     assert_equal(true, progress.finished?)
  52.     assert_equal(0, progress.bitrate)
  53.     assert_equal(0, progress.completed_percent)
  54.     assert_equal(0, progress.remaining_seconds)
  55.   end
  56.   def test_finished
  57.     progress = new_progress(10000)
  58.     (1..9).each do |t|
  59.       progress.update!(1000, Float(t))
  60.       assert_equal(false, progress.finished?)
  61.       assert_equal(1000.0, progress.bitrate)
  62.       assert_equal(false, progress.stalled?)
  63.     end
  64.     assert_equal(false, progress.finished?)
  65.     progress.update!(1000, 10.0)
  66.     assert_equal(true, progress.finished?)
  67.   end
  68.   def test_rapid_samples
  69.     progress = new_progress(10000)
  70.     (1..1000).each do |t|
  71.       progress.update!(10, t/100.0)
  72.     end
  73.     assert_in_delta(1000.0, progress.bitrate, 0.001)
  74.     assert_equal(true, progress.finished?)
  75.   end
  76.   private
  77.     def new_progress(total)
  78.       ActionController::UploadProgress::Progress.new(total)
  79.     end
  80. end