test/unit/generator/pdf/document/graphics/test_text.rb in thinreports-0.7.7 vs test/unit/generator/pdf/document/graphics/test_text.rb in thinreports-0.8.0

- old
+ new

@@ -1,164 +1,171 @@ # coding: utf-8 -require 'test/unit/helper' +require 'test_helper' -class ThinReports::Generator::PDF::Graphics::TestText < MiniTest::Unit::TestCase - include ThinReports::TestHelpers - +class Thinreports::Generator::PDF::Graphics::TestText < Minitest::Test + include Thinreports::TestHelper + def setup - @pdf = ThinReports::Generator::PDF::Document.new + @pdf = Thinreports::Generator::PDF::Document.new @pdf.internal.start_new_page end - + def exec_with_font_styles(attrs = nil, font = nil, &block) - attrs ||= {:styles => [:bold]} - font ||= {:name => 'IPAMincho', :size => 18, :color => 'ff0000'} - + attrs ||= {styles: [:bold]} + font ||= {name: 'IPAMincho', size: 18, color: 'ff0000'} + @pdf.send(:with_font_styles, attrs, font, &block) end - + def exec_with_text_styles(attrs = {}, &block) - default_attrs = {:font => 'Helvetica', - :color => 'ff0000', - :size => 18} + default_attrs = {font: 'Helvetica', + color: 'ff0000', + size: 18} @pdf.send(:with_text_styles, default_attrs.merge(attrs), &block) end - + def test_with_text_styles_should_not_operate_when_color_is_none - exec_with_text_styles(:color => 'none') do |attrs, styles| + exec_with_text_styles(color: 'none') do |attrs, styles| flunk end end - + def test_with_text_styles_should_set_leading_via_line_height_attribute - exec_with_text_styles(:line_height => 30) do |attrs, styles| + exec_with_text_styles(line_height: 30) do |attrs, styles| expected = @pdf.send(:text_line_leading, @pdf.send(:s2f, 30), - :name => 'Helvetica', :size => 18) + name: 'Helvetica', size: 18) assert_equal attrs[:leading], expected end end - + def test_with_text_styles_should_not_set_leading_when_line_height_is_not_specified exec_with_text_styles do |attrs, styles| refute_includes attrs.keys, :leading end end - + def test_with_text_styles_should_set_character_spacing_via_letter_spacing_attribute - exec_with_text_styles(:letter_spacing => 5) do |attrs, styles| + exec_with_text_styles(letter_spacing: 5) do |attrs, styles| assert_equal attrs[:character_spacing], @pdf.send(:s2f, 5) end end - + def test_with_text_styles_should_not_set_character_spacing_when_letter_spacing_is_not_specified exec_with_text_styles do |attrs, styles| refute_includes attrs.keys, :character_spacing end end - + def test_with_text_styles_should_parse_color - exec_with_text_styles(:color => '#ff0000') do |attrs, styles| + exec_with_text_styles(color: '#ff0000') do |attrs, styles| assert_equal @pdf.internal.fill_color, 'ff0000' end end - + def test_with_font_styles_should_set_fill_color_using_color_of_font exec_with_font_styles do |attrs, styles| assert_equal @pdf.internal.fill_color, 'ff0000' end end - + def test_with_font_styles_should_perform_manual_style_when_bold_style_cannot_be_applied exec_with_font_styles do |attrs, styles| assert_empty styles end end - + def test_with_font_styles_should_perform_manual_style_when_italic_style_cannot_be_applied exec_with_font_styles do |attrs, styles| assert_empty styles end end - + def test_with_font_styles_should_set_stroke_color_using_color_of_font_when_bold_style_cannot_be_applied exec_with_font_styles do |attrs, styles| assert_equal @pdf.internal.stroke_color, 'ff0000' end end - + def test_with_font_styles_should_set_line_width_calculated_from_font_size_when_bold_style_cannot_be_applied exec_with_font_styles do |attrs, styles| assert_equal @pdf.internal.line_width, 18 * 0.025 end end - + def test_with_font_styles_should_set_mode_to_fill_stroke_when_bold_style_cannot_be_applied exec_with_font_styles do |attrs, styles| assert_equal attrs[:mode], :fill_stroke end end - + def test_with_font_styles_should_not_perform_a_manual_style_when_bold_style_can_be_applied - exec_with_font_styles(nil, :name => 'Helvetica', :size => 12, :color => '0000ff') do |attrs, styles| + exec_with_font_styles(nil, name: 'Helvetica', size: 12, color: '0000ff') do |attrs, styles| assert_includes styles, :bold end end - + def test_with_font_styles_should_not_perform_a_manual_style_when_italic_style_can_be_applied - exec_with_font_styles({:styles => [:italic]}, :name => 'Helvetica', :size => 12, :color => 'ff0000') do |attrs, styles| + exec_with_font_styles({styles: [:italic]}, name: 'Helvetica', size: 12, color: 'ff0000') do |attrs, styles| assert_includes styles, :italic end end - + def test_text_line_leading_should_return_a_specified_leading_value_minus_the_font_height - font = {:name => 'IPAMincho', :size => 36} - font_height = @pdf.internal.font(font[:name], :size => font[:size]).height - + font = {name: 'IPAMincho', size: 36} + font_height = @pdf.internal.font(font[:name], size: font[:size]).height + assert_equal @pdf.send(:text_line_leading, 100, font), 100 - font_height end - + def test_text_without_line_wrap_should_replace_the_spaces_NBSP assert_equal @pdf.send(:text_without_line_wrap, ' ' * 2), Prawn::Text::NBSP * 2 end - + def test_text_box_should_not_raise_PrawnCannotFitError - @pdf.text_box('foo', 0, 0, 1, 1, :font => 'IPAMincho', - :size => 100, - :color => '000000') + @pdf.text_box('foo', 0, 0, 1, 1, font: 'IPAMincho', + size: 100, + color: '000000') rescue Prawn::Errors::CannotFit flunk('Raise Prawn::Errors::CannotFit.') end - + def test_text_box_attrs_should_return_a_Hash_containing_a_at_and_width_options attrs = @pdf.send(:text_box_attrs, 0, 0, 50, 100) - + assert_equal attrs.values_at(:at, :width), [@pdf.send(:pos, 0, 0), @pdf.send(:s2f, 50)] end - + def test_text_box_attrs_should_return_a_Hash_which_doesnt_contain_the_single_line_option_when_single_is_true_but_overflow_is_expand - attrs = @pdf.send(:text_box_attrs, 0, 0, 100, 100, :single => true, :overflow => :expand) + attrs = @pdf.send(:text_box_attrs, 0, 0, 100, 100, single: true, overflow: :expand) refute attrs.key?(:single_line) end - + def test_text_box_attrs_should_return_a_Hash_containing_a_single_line_option_when_single_is_true_and_overflow_isnot_expand - attrs = @pdf.send(:text_box_attrs, 0, 0, 100, 100, :single => true, :overflow => :truncate) + attrs = @pdf.send(:text_box_attrs, 0, 0, 100, 100, single: true, overflow: :truncate) assert_equal attrs[:single_line], true end - + def test_text_box_attrs_should_return_a_Hash_which_does_not_contain_a_height_option_when_single_is_true - attrs = @pdf.send(:text_box_attrs, 0, 0, 100, 100, :single => true) + attrs = @pdf.send(:text_box_attrs, 0, 0, 100, 100, single: true) refute attrs.key?(:height) end - + def test_text_box_attrs_should_return_a_Hash_which_does_not_contain_a_single_line_option_when_single_is_not_specified attrs = @pdf.send(:text_box_attrs, 0, 0, 100, 100) refute attrs.key?(:single_line) end - + def test_text_box_attrs_should_return_a_Hash_containing_a_height_optin_when_single_is_not_specified attrs = @pdf.send(:text_box_attrs, 0, 0, 100, 200) assert_equal attrs[:height], 200 + end + + def test_text + @pdf.expects(:text_box). + with('contents', 100, 200, 150, 250, { overflow: :shirink_to_fit }).once + + @pdf.text('contents', 100, 200, 150, 250) end end