Files
Notare/test/width_parser_test.rb
mathias234 843466549a
All checks were successful
CI Pipeline / build (pull_request) Successful in 13s
Support table and table column sizing
2025-12-03 13:50:56 +01:00

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