summaryrefslogtreecommitdiffhomepage
path: root/test/workbook/worksheet/tc_page_margins.rb
blob: 39f51fecc46cb2fd5ac25e724e5d840203ac41ab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# frozen_string_literal: true

require 'tc_helper'

class TestPageMargins < Test::Unit::TestCase
  def setup
    p = Axlsx::Package.new
    ws = p.workbook.add_worksheet name: "hmmm"
    @pm = ws.page_margins
  end

  def test_initialize
    assert_equal(Axlsx::PageMargins::DEFAULT_LEFT_RIGHT, @pm.left)
    assert_equal(Axlsx::PageMargins::DEFAULT_LEFT_RIGHT, @pm.right)
    assert_equal(Axlsx::PageMargins::DEFAULT_TOP_BOTTOM, @pm.top)
    assert_equal(Axlsx::PageMargins::DEFAULT_TOP_BOTTOM, @pm.bottom)
    assert_equal(Axlsx::PageMargins::DEFAULT_HEADER_FOOTER, @pm.header)
    assert_equal(Axlsx::PageMargins::DEFAULT_HEADER_FOOTER, @pm.footer)
  end

  def test_initialize_with_options
    optioned = Axlsx::PageMargins.new(left: 2, right: 3, top: 2, bottom: 1, header: 0.1, footer: 0.1)

    assert_equal(2, optioned.left)
    assert_equal(3, optioned.right)
    assert_equal(2, optioned.top)
    assert_equal(1, optioned.bottom)
    assert_in_delta(0.1, optioned.header)
    assert_in_delta(0.1, optioned.footer)
  end

  def test_set_all_values
    @pm.set(left: 1.1, right: 1.2, top: 1.3, bottom: 1.4, header: 0.8, footer: 0.9)

    assert_in_delta(1.1, @pm.left)
    assert_in_delta(1.2, @pm.right)
    assert_in_delta(1.3, @pm.top)
    assert_in_delta(1.4, @pm.bottom)
    assert_in_delta(0.8, @pm.header)
    assert_in_delta(0.9, @pm.footer)
  end

  def test_set_some_values
    @pm.set(left: 1.1, right: 1.2)

    assert_in_delta(1.1, @pm.left)
    assert_in_delta(1.2, @pm.right)
    assert_equal(Axlsx::PageMargins::DEFAULT_TOP_BOTTOM, @pm.top)
    assert_equal(Axlsx::PageMargins::DEFAULT_TOP_BOTTOM, @pm.bottom)
    assert_equal(Axlsx::PageMargins::DEFAULT_HEADER_FOOTER, @pm.header)
    assert_equal(Axlsx::PageMargins::DEFAULT_HEADER_FOOTER, @pm.footer)
  end

  def test_to_xml
    @pm.left = 1.1
    @pm.right = 1.2
    @pm.top = 1.3
    @pm.bottom = 1.4
    @pm.header = 0.8
    @pm.footer = 0.9
    doc = Nokogiri::XML.parse(@pm.to_xml_string)

    assert_equal(1, doc.xpath(".//pageMargins[@left=1.1][@right=1.2][@top=1.3][@bottom=1.4][@header=0.8][@footer=0.9]").size)
  end

  def test_left
    assert_raise(ArgumentError) { @pm.left = -1.2 }
    assert_nothing_raised { @pm.left = 1.5 }
    assert_in_delta(@pm.left, 1.5)
  end

  def test_right
    assert_raise(ArgumentError) { @pm.right = -1.2 }
    assert_nothing_raised { @pm.right = 1.5 }
    assert_in_delta(@pm.right, 1.5)
  end

  def test_top
    assert_raise(ArgumentError) { @pm.top = -1.2 }
    assert_nothing_raised { @pm.top = 1.5 }
    assert_in_delta(@pm.top, 1.5)
  end

  def test_bottom
    assert_raise(ArgumentError) { @pm.bottom = -1.2 }
    assert_nothing_raised { @pm.bottom = 1.5 }
    assert_in_delta(@pm.bottom, 1.5)
  end

  def test_header
    assert_raise(ArgumentError) { @pm.header = -1.2 }
    assert_nothing_raised { @pm.header = 1.5 }
    assert_in_delta(@pm.header, 1.5)
  end

  def test_footer
    assert_raise(ArgumentError) { @pm.footer = -1.2 }
    assert_nothing_raised { @pm.footer = 1.5 }
    assert_in_delta(@pm.footer, 1.5)
  end
end