File: test_pdf_surface.rb

package info (click to toggle)
ruby-cairo 1.17.13-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,532 kB
  • sloc: ruby: 11,997; ansic: 10,183; sh: 48; makefile: 4
file content (141 lines) | stat: -rw-r--r-- 4,333 bytes parent folder | download
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
class PDFSurfaceTest < Test::Unit::TestCase
  include Helper

  def create_pdf
    pdf = StringIO.new
    surface = Cairo::PDFSurface.new(pdf, 10, 20)
    yield(surface)
    surface.finish
    Poppler::Document.new(pdf.string)
  end

  def test_new_with_nil_target
    surface = Cairo::PDFSurface.new(nil, 10, 20)
    surface.finish
  end

  sub_test_case "#add_outline" do
    def test_sub_outline
      only_cairo_version(1, 15, 4)
      surface = Cairo::PDFSurface.new(nil, 10, 20)
      context = Cairo::Context.new(surface)
      context.tag(Cairo::Tag::DEST, "name='destination'") do
        context.show_text("Destination")
      end
      id = surface.add_outline(Cairo::PDFOutline::ROOT,
                               "top-level",
                               "dest='destination'",
                               Cairo::PDFOutlineFlags::OPEN)
      sub_id = surface.add_outline(sub_id,
                                   "sub",
                                   "dest='destination'",
                                   Cairo::PDFOutlineFlags::OPEN)
      assert_equal(2, sub_id)
    end
  end

  sub_test_case "#set_metadata" do
    test "title" do
      only_cairo_version(1, 15, 4)
      pdf = create_pdf do |surface|
        surface.set_metadata(Cairo::PDFMetadata::TITLE, "Hello")
      end
      assert_equal("Hello", pdf.title)
    end

    test "author" do
      only_cairo_version(1, 15, 4)
      pdf = create_pdf do |surface|
        surface.set_metadata(Cairo::PDFMetadata::AUTHOR, "Alice")
      end
      assert_equal("Alice", pdf.author)
    end

    test "subject" do
      only_cairo_version(1, 15, 4)
      pdf = create_pdf do |surface|
        surface.set_metadata(Cairo::PDFMetadata::SUBJECT, "This is world.")
      end
      assert_equal("This is world.", pdf.subject)
    end

    test "keywords" do
      only_cairo_version(1, 15, 4)
      pdf = create_pdf do |surface|
        surface.set_metadata(Cairo::PDFMetadata::KEYWORDS, "hello, alice")
      end
      assert_equal("hello, alice", pdf.keywords)
    end

    test "creator" do
      only_cairo_version(1, 15, 4)
      pdf = create_pdf do |surface|
        surface.set_metadata(Cairo::PDFMetadata::CREATOR, "cairo")
      end
      assert_equal("cairo", pdf.creator)
    end

    sub_test_case "create date" do
      test "string" do
        only_cairo_version(1, 15, 4)
        pdf = create_pdf do |surface|
          surface.set_metadata(Cairo::PDFMetadata::CREATE_DATE,
                               "2017-01-04T02:17:01+09:00")
        end
        assert_equal(Time.parse("2017-01-04T02:17:01+09:00"),
                     Time.at(pdf.creation_date))
      end

      test "time" do
        only_cairo_version(1, 15, 4)
        pdf = create_pdf do |surface|
          surface.set_metadata(Cairo::PDFMetadata::CREATE_DATE,
                               Time.parse("2017-01-04T02:17:01+09:00"))
        end
        assert_equal(Time.parse("2017-01-04T02:17:01+09:00"),
                     Time.at(pdf.creation_date))
      end
    end

    sub_test_case "modified date" do
      test "string" do
        only_cairo_version(1, 15, 4)
        pdf = create_pdf do |surface|
          surface.set_metadata(Cairo::PDFMetadata::MOD_DATE,
                               "2017-01-04T02:17:01+09:00")
        end
        assert_equal(Time.parse("2017-01-04T02:17:01+09:00"),
                     Time.at(pdf.mod_date))
      end

      test "time" do
        only_cairo_version(1, 15, 4)
        pdf = create_pdf do |surface|
          surface.set_metadata(Cairo::PDFMetadata::MOD_DATE,
                               Time.parse("2017-01-04T02:17:01+09:00"))
        end
        assert_equal(Time.parse("2017-01-04T02:17:01+09:00"),
                     Time.at(pdf.mod_date))
      end
    end
  end

  test "#page_label=" do
    only_cairo_version(1, 15, 4)
    pdf = create_pdf do |surface|
      surface.page_label = "Hello"
    end
    assert_equal("Hello", pdf[0].label)
  end

  test "#set_thumbnail_size" do
    only_cairo_version(1, 15, 4)
    pdf = create_pdf do |surface|
      surface.set_thumbnail_size(5, 10)
    end
    thumbnail_size = pdf[0].thumbnail_size
    # TODO: Workaround for poppler gem 3.2.1
    thumbnail_size.shift if thumbnail_size.size == 3
    assert_equal([5, 10], thumbnail_size)
  end
end if defined?(Poppler)