middleman/middleman-core/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/test_number_helpers.rb
2013-06-04 09:56:33 -07:00

140 lines
7.2 KiB
Ruby

require File.expand_path(File.dirname(__FILE__) + '/helper')
require File.expand_path(File.dirname(__FILE__) + '/fixtures/markup_app/app')
describe "NumberHelpers" do
include Padrino::Helpers::NumberHelpers
def kilobytes(number)
number * 1024
end
def megabytes(number)
kilobytes(number) * 1024
end
def gigabytes(number)
megabytes(number) * 1024
end
def terabytes(number)
gigabytes(number) * 1024
end
context 'for number helpers functionality' do
should 'display number_to_currency' do
assert_equal "$1,234,567,890.50", number_to_currency(1234567890.50)
assert_equal "$1,234,567,890.51", number_to_currency(1234567890.506)
assert_equal "$1,234,567,892", number_to_currency(1234567891.50, {:precision => 0})
assert_equal "$1,234,567,890.5", number_to_currency(1234567890.50, {:precision => 1})
assert_equal "£1234567890,50", number_to_currency(1234567890.50, {:unit => "£", :separator => ",", :delimiter => ""})
assert_equal "$1,234,567,890.50", number_to_currency("1234567890.50")
assert_equal "1,234,567,890.50 Kč", number_to_currency("1234567890.50", {:unit => "Kč", :format => "%n %u"})
assert_equal "$x", number_to_currency("x")
assert_nil number_to_currency(nil)
end
should 'display number_to_percentage' do
assert_equal "100.000%", number_to_percentage(100)
assert_equal "100%", number_to_percentage(100, {:precision => 0})
assert_equal "302.06%", number_to_percentage(302.0574, {:precision => 2})
assert_equal "100.000%", number_to_percentage("100")
assert_equal "1000.000%", number_to_percentage("1000")
assert_equal "x%", number_to_percentage("x")
assert_equal "1.000,000%", number_to_percentage(1000, :delimiter => '.', :separator => ',')
assert_nil number_to_percentage(nil)
end
should 'display number_with_delimiter' do
assert_equal "12,345,678", number_with_delimiter(12345678)
assert_equal "0", number_with_delimiter(0)
assert_equal "123", number_with_delimiter(123)
assert_equal "123,456", number_with_delimiter(123456)
assert_equal "123,456.78", number_with_delimiter(123456.78)
assert_equal "123,456.789", number_with_delimiter(123456.789)
assert_equal "123,456.78901", number_with_delimiter(123456.78901)
assert_equal "123,456,789.78901", number_with_delimiter(123456789.78901)
assert_equal "0.78901", number_with_delimiter(0.78901)
assert_equal "123,456.78", number_with_delimiter("123456.78")
assert_equal "x", number_with_delimiter("x")
assert_nil number_with_delimiter(nil)
end
should 'display number_with_delimiter with options' do
assert_equal '12 345 678', number_with_delimiter(12345678, :delimiter => ' ')
assert_equal '12,345,678-05', number_with_delimiter(12345678.05, :separator => '-')
assert_equal '12.345.678,05', number_with_delimiter(12345678.05, :separator => ',', :delimiter => '.')
assert_equal '12.345.678,05', number_with_delimiter(12345678.05, :delimiter => '.', :separator => ',')
end
should 'display number_with_precision' do
assert_equal "111.235", number_with_precision(111.2346)
assert_equal "31.83", number_with_precision(31.825, :precision => 2)
assert_equal "111.23", number_with_precision(111.2346, :precision => 2)
assert_equal "111.00", number_with_precision(111, :precision => 2)
assert_equal "111.235", number_with_precision("111.2346")
assert_equal "31.83", number_with_precision("31.825", :precision => 2)
assert_equal "3268", number_with_precision((32.6751 * 100.00), :precision => 0)
assert_equal "112", number_with_precision(111.50, :precision => 0)
assert_equal "1234567892", number_with_precision(1234567891.50, :precision => 0)
# Return non-numeric params unchanged.
assert_equal "x", number_with_precision("x")
assert_nil number_with_precision(nil)
end
should 'display number_with_precision with custom delimiter and separator' do
assert_equal '31,83', number_with_precision(31.825, :precision => 2, :separator => ',')
assert_equal '1.231,83', number_with_precision(1231.825, :precision => 2, :separator => ',', :delimiter => '.')
end
should 'display number_to_human_size' do
assert_equal '0 Bytes', number_to_human_size(0)
assert_equal '1 Byte', number_to_human_size(1)
assert_equal '3 Bytes', number_to_human_size(3.14159265)
assert_equal '123 Bytes', number_to_human_size(123.0)
assert_equal '123 Bytes', number_to_human_size(123)
assert_equal '1.2 KB', number_to_human_size(1234)
assert_equal '12.1 KB', number_to_human_size(12345)
assert_equal '1.2 MB', number_to_human_size(1234567)
assert_equal '1.1 GB', number_to_human_size(1234567890)
assert_equal '1.1 TB', number_to_human_size(1234567890123)
assert_equal '1025 TB', number_to_human_size(terabytes(1025))
assert_equal '444 KB', number_to_human_size(kilobytes(444))
assert_equal '1023 MB', number_to_human_size(megabytes(1023))
assert_equal '3 TB', number_to_human_size(terabytes(3))
assert_equal '1.18 MB', number_to_human_size(1234567, :precision => 2)
assert_equal '3 Bytes', number_to_human_size(3.14159265, :precision => 4)
assert_equal '123 Bytes', number_to_human_size("123")
assert_equal '1.01 KB', number_to_human_size(kilobytes(1.0123), :precision => 2)
assert_equal '1.01 KB', number_to_human_size(kilobytes(1.0100), :precision => 4)
assert_equal '10 KB', number_to_human_size(kilobytes(10.000), :precision => 4)
assert_equal '1 Byte', number_to_human_size(1.1)
assert_equal '10 Bytes', number_to_human_size(10)
assert_nil number_to_human_size(nil)
end
should 'display number_to_human_size with options' do
assert_equal '1.18 MB', number_to_human_size(1234567, :precision => 2)
assert_equal '3 Bytes', number_to_human_size(3.14159265, :precision => 4)
assert_equal '1.01 KB', number_to_human_size(kilobytes(1.0123), :precision => 2)
assert_equal '1.01 KB', number_to_human_size(kilobytes(1.0100), :precision => 4)
assert_equal '10 KB', number_to_human_size(kilobytes(10.000), :precision => 4)
assert_equal '1 TB', number_to_human_size(1234567890123, :precision => 0)
assert_equal '500 MB', number_to_human_size(524288000, :precision => 0)
assert_equal '40 KB', number_to_human_size(41010, :precision => 0)
assert_equal '40 KB', number_to_human_size(41100, :precision => 0)
end
should 'display number_to_human_size with custom delimiter and separator' do
assert_equal '1,01 KB', number_to_human_size(kilobytes(1.0123), :precision => 2, :separator => ',')
assert_equal '1,01 KB', number_to_human_size(kilobytes(1.0100), :precision => 4, :separator => ',')
assert_equal '1.000,1 TB', number_to_human_size(terabytes(1000.1), :delimiter => '.', :separator => ',')
end
end
end