Support table and table column sizing
All checks were successful
CI Pipeline / build (pull_request) Successful in 13s
All checks were successful
CI Pipeline / build (pull_request) Successful in 13s
This commit is contained in:
91
test/width_parser_test.rb
Normal file
91
test/width_parser_test.rb
Normal file
@@ -0,0 +1,91 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user