140 lines
7.2 KiB
Ruby
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
|