All checks were successful
CI Pipeline / build (pull_request) Successful in 13s
92 lines
2.3 KiB
Ruby
92 lines
2.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "test_helper"
|
|
|
|
class WidthParserTest < Minitest::Test
|
|
def test_parse_auto_symbol
|
|
result = Notare::WidthParser.parse(:auto)
|
|
assert_equal 0, result.value
|
|
assert_equal "auto", result.type
|
|
end
|
|
|
|
def test_parse_nil
|
|
result = Notare::WidthParser.parse(nil)
|
|
assert_equal 0, result.value
|
|
assert_equal "auto", result.type
|
|
end
|
|
|
|
def test_parse_integer_as_twips
|
|
result = Notare::WidthParser.parse(1440)
|
|
assert_equal 1440, result.value
|
|
assert_equal "dxa", result.type
|
|
end
|
|
|
|
def test_parse_inches
|
|
result = Notare::WidthParser.parse("2in")
|
|
assert_equal 2880, result.value
|
|
assert_equal "dxa", result.type
|
|
end
|
|
|
|
def test_parse_inches_with_decimal
|
|
result = Notare::WidthParser.parse("1.5in")
|
|
assert_equal 2160, result.value
|
|
assert_equal "dxa", result.type
|
|
end
|
|
|
|
def test_parse_inches_case_insensitive
|
|
result = Notare::WidthParser.parse("2IN")
|
|
assert_equal 2880, result.value
|
|
assert_equal "dxa", result.type
|
|
end
|
|
|
|
def test_parse_centimeters
|
|
result = Notare::WidthParser.parse("5cm")
|
|
assert_equal 2835, result.value
|
|
assert_equal "dxa", result.type
|
|
end
|
|
|
|
def test_parse_centimeters_with_decimal
|
|
result = Notare::WidthParser.parse("2.54cm")
|
|
assert_equal 1440, result.value
|
|
assert_equal "dxa", result.type
|
|
end
|
|
|
|
def test_parse_percentage
|
|
result = Notare::WidthParser.parse("50%")
|
|
assert_equal 2500, result.value
|
|
assert_equal "pct", result.type
|
|
end
|
|
|
|
def test_parse_percentage_with_decimal
|
|
result = Notare::WidthParser.parse("33.3%")
|
|
assert_equal 1664, result.value # 33.3 * 50 = 1664.999... truncates to 1664
|
|
assert_equal "pct", result.type
|
|
end
|
|
|
|
def test_parse_100_percent
|
|
result = Notare::WidthParser.parse("100%")
|
|
assert_equal 5000, result.value
|
|
assert_equal "pct", result.type
|
|
end
|
|
|
|
def test_parse_with_spaces
|
|
result = Notare::WidthParser.parse("2 in")
|
|
assert_equal 2880, result.value
|
|
assert_equal "dxa", result.type
|
|
end
|
|
|
|
def test_invalid_width_raises_error
|
|
error = assert_raises(ArgumentError) do
|
|
Notare::WidthParser.parse("invalid")
|
|
end
|
|
assert_match(/Invalid width/, error.message)
|
|
end
|
|
|
|
def test_invalid_unit_raises_error
|
|
error = assert_raises(ArgumentError) do
|
|
Notare::WidthParser.parse("10px")
|
|
end
|
|
assert_match(/Invalid width/, error.message)
|
|
end
|
|
end
|