panmind-rtf 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. data/CHANGES +8 -0
  2. data/LICENSE +20 -0
  3. data/README +186 -0
  4. data/Rakefile +48 -0
  5. data/VERSION.yml +5 -0
  6. data/examples/example01.rb +51 -0
  7. data/examples/example02.rb +45 -0
  8. data/examples/example03.rb +66 -0
  9. data/examples/example03.rtf +164 -0
  10. data/examples/example04.rb +50 -0
  11. data/examples/rubyrtf.bmp +0 -0
  12. data/examples/rubyrtf.jpg +0 -0
  13. data/examples/rubyrtf.png +0 -0
  14. data/lib/rtf.rb +34 -0
  15. data/lib/rtf/colour.rb +173 -0
  16. data/lib/rtf/font.rb +173 -0
  17. data/lib/rtf/information.rb +111 -0
  18. data/lib/rtf/node.rb +1680 -0
  19. data/lib/rtf/paper.rb +55 -0
  20. data/lib/rtf/style.rb +305 -0
  21. data/test/character_style_test.rb +136 -0
  22. data/test/colour_table_test.rb +93 -0
  23. data/test/colour_test.rb +116 -0
  24. data/test/command_node_test.rb +219 -0
  25. data/test/container_node_test.rb +64 -0
  26. data/test/document_style_test.rb +79 -0
  27. data/test/document_test.rb +106 -0
  28. data/test/fixtures/bitmap1.bmp +0 -0
  29. data/test/fixtures/bitmap2.bmp +0 -0
  30. data/test/fixtures/jpeg1.jpg +0 -0
  31. data/test/fixtures/jpeg2.jpg +0 -0
  32. data/test/fixtures/png1.png +0 -0
  33. data/test/fixtures/png2.png +0 -0
  34. data/test/font_table_test.rb +91 -0
  35. data/test/font_test.rb +48 -0
  36. data/test/footer_node_test.rb +30 -0
  37. data/test/header_node_test.rb +30 -0
  38. data/test/image_node_test.rb +125 -0
  39. data/test/information_test.rb +127 -0
  40. data/test/node_test.rb +25 -0
  41. data/test/paragraph_style_test.rb +81 -0
  42. data/test/style_test.rb +16 -0
  43. data/test/table_cell_node_test.rb +89 -0
  44. data/test/table_node_test.rb +83 -0
  45. data/test/table_row_node_test.rb +59 -0
  46. data/test/test_helper.rb +13 -0
  47. data/test/text_node_test.rb +50 -0
  48. metadata +133 -0
@@ -0,0 +1,79 @@
1
+ require 'test_helper'
2
+
3
+ # Information class unit test class.
4
+ class DocumentStyleTest < Test::Unit::TestCase
5
+ def test_basics
6
+ style = DocumentStyle.new
7
+
8
+ assert(style.is_character_style? == false)
9
+ assert(style.is_document_style? == true)
10
+ assert(style.is_paragraph_style? == false)
11
+ assert(style.is_table_style? == false)
12
+
13
+ assert(style.prefix(nil, nil) == '\paperw11907\paperh16840\margl1800'\
14
+ '\margr1800\margt1440\margb1440')
15
+ assert(style.suffix(nil, nil) == nil)
16
+
17
+ assert(style.bottom_margin == DocumentStyle::DEFAULT_BOTTOM_MARGIN)
18
+ assert(style.gutter == nil)
19
+ assert(style.left_margin == DocumentStyle::DEFAULT_LEFT_MARGIN)
20
+ assert(style.orientation == DocumentStyle::PORTRAIT)
21
+ assert(style.paper == Paper::A4)
22
+ assert(style.right_margin == DocumentStyle::DEFAULT_RIGHT_MARGIN)
23
+ assert(style.top_margin == DocumentStyle::DEFAULT_TOP_MARGIN)
24
+ end
25
+
26
+ def test_mutators
27
+ style = DocumentStyle.new
28
+
29
+ style.bottom_margin = 200
30
+ assert(style.bottom_margin == 200)
31
+
32
+ style.gutter = 1000
33
+ assert(style.gutter == 1000)
34
+
35
+ style.left_margin = 34
36
+ assert(style.left_margin == 34)
37
+
38
+ style.orientation = DocumentStyle::LANDSCAPE
39
+ assert(style.orientation == DocumentStyle::LANDSCAPE)
40
+
41
+ style.paper = Paper::LETTER
42
+ assert(style.paper == Paper::LETTER)
43
+
44
+ style.right_margin = 345
45
+ assert(style.right_margin == 345)
46
+
47
+ style.top_margin = 819
48
+ assert(style.top_margin == 819)
49
+ end
50
+
51
+ def test_prefix
52
+ style = DocumentStyle.new
53
+
54
+ style.left_margin = style.right_margin = 200
55
+ style.top_margin = style.bottom_margin = 100
56
+ style.gutter = 300
57
+ style.orientation = DocumentStyle::LANDSCAPE
58
+ style.paper = Paper::A5
59
+
60
+ assert(style.prefix(nil, nil) == '\paperw11907\paperh8392\margl200'\
61
+ '\margr200\margt100\margb100\gutter300'\
62
+ '\sectd\lndscpsxn')
63
+ end
64
+
65
+ def test_body_method
66
+ style = DocumentStyle.new
67
+
68
+ lr_margin = style.left_margin + style.right_margin
69
+ tb_margin = style.top_margin + style.bottom_margin
70
+
71
+ assert(style.body_width == Paper::A4.width - lr_margin)
72
+ assert(style.body_height == Paper::A4.height - tb_margin)
73
+
74
+ style.orientation = DocumentStyle::LANDSCAPE
75
+
76
+ assert(style.body_width == Paper::A4.height - lr_margin)
77
+ assert(style.body_height == Paper::A4.width - tb_margin)
78
+ end
79
+ end
@@ -0,0 +1,106 @@
1
+ require 'test_helper'
2
+
3
+ # Information class unit test class.
4
+ class DocumentTest < Test::Unit::TestCase
5
+ def setup
6
+ @fonts = FontTable.new
7
+
8
+ @fonts << Font.new(Font::ROMAN, 'Arial')
9
+ @fonts << Font.new(Font::MODERN, 'Courier')
10
+ end
11
+
12
+ def test_basics
13
+ documents = []
14
+ style = DocumentStyle.new
15
+
16
+ documents << Document.new(@fonts[0])
17
+ documents << Document.new(@fonts[1], style)
18
+ documents << Document.new(@fonts[0], nil, Document::CS_MAC)
19
+ documents << Document.new(@fonts[1], style, Document::CS_PC,
20
+ Document::LC_ENGLISH_US)
21
+
22
+ lr_margin = DocumentStyle::DEFAULT_LEFT_MARGIN +
23
+ DocumentStyle::DEFAULT_RIGHT_MARGIN
24
+ tb_margin = DocumentStyle::DEFAULT_TOP_MARGIN +
25
+ DocumentStyle::DEFAULT_BOTTOM_MARGIN
26
+
27
+ fonts = []
28
+ fonts << FontTable.new(@fonts[0])
29
+ fonts << FontTable.new(@fonts[1])
30
+
31
+ assert(documents[0].character_set == Document::CS_ANSI)
32
+ assert(documents[1].character_set == Document::CS_ANSI)
33
+ assert(documents[2].character_set == Document::CS_MAC)
34
+ assert(documents[3].character_set == Document::CS_PC)
35
+
36
+ assert(documents[0].fonts.size == 1)
37
+ assert(documents[1].fonts.size == 1)
38
+ assert(documents[2].fonts.size == 1)
39
+ assert(documents[3].fonts.size == 1)
40
+
41
+ assert(documents[0].fonts[0] == @fonts[0])
42
+ assert(documents[1].fonts[0] == @fonts[1])
43
+ assert(documents[2].fonts[0] == @fonts[0])
44
+ assert(documents[3].fonts[0] == @fonts[1])
45
+
46
+ assert(documents[0].colours.size == 0)
47
+ assert(documents[1].colours.size == 0)
48
+ assert(documents[2].colours.size == 0)
49
+ assert(documents[3].colours.size == 0)
50
+
51
+ assert(documents[0].language == Document::LC_ENGLISH_UK)
52
+ assert(documents[1].language == Document::LC_ENGLISH_UK)
53
+ assert(documents[2].language == Document::LC_ENGLISH_UK)
54
+ assert(documents[3].language == Document::LC_ENGLISH_US)
55
+
56
+ assert(documents[0].style != nil)
57
+ assert(documents[1].style == style)
58
+ assert(documents[2].style != nil)
59
+ assert(documents[3].style == style)
60
+
61
+ assert(documents[0].body_width == Paper::A4.width - lr_margin)
62
+ assert(documents[0].body_height == Paper::A4.height - tb_margin)
63
+ assert(documents[0].default_font == @fonts[0])
64
+ assert(documents[0].paper == Paper::A4)
65
+ assert(documents[0].header == nil)
66
+ assert(documents[0].header(HeaderNode::UNIVERSAL) == nil)
67
+ assert(documents[0].header(HeaderNode::LEFT_PAGE) == nil)
68
+ assert(documents[0].header(HeaderNode::RIGHT_PAGE) == nil)
69
+ assert(documents[0].header(HeaderNode::FIRST_PAGE) == nil)
70
+ assert(documents[0].footer == nil)
71
+ assert(documents[0].footer(FooterNode::UNIVERSAL) == nil)
72
+ assert(documents[0].footer(FooterNode::LEFT_PAGE) == nil)
73
+ assert(documents[0].footer(FooterNode::RIGHT_PAGE) == nil)
74
+ assert(documents[0].footer(FooterNode::FIRST_PAGE) == nil)
75
+ end
76
+
77
+ def test_mutators
78
+ document = Document.new(@fonts[0])
79
+
80
+ document.default_font = @fonts[1]
81
+ assert(document.default_font == @fonts[1])
82
+
83
+ document.character_set = Document::CS_PCA
84
+ assert(document.character_set == Document::CS_PCA)
85
+
86
+ document.language = Document::LC_CZECH
87
+ assert(document.language == Document::LC_CZECH)
88
+ end
89
+
90
+ def test_page_break
91
+ document = Document.new(@fonts[0])
92
+
93
+ assert(document.page_break == nil)
94
+ assert(document.size == 1)
95
+ assert(document[0].prefix == '\page')
96
+ end
97
+
98
+ def test_exceptions
99
+ document = Document.new(@fonts[0])
100
+ begin
101
+ document.parent = document
102
+ flunk("Successfully change the parent of a Document object.")
103
+ rescue
104
+ end
105
+ end
106
+ end
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,91 @@
1
+ require 'test_helper'
2
+
3
+ # FontTable class unit test class.
4
+ class FontTableTest < Test::Unit::TestCase
5
+ def setup
6
+ @fonts = []
7
+ @fonts.push(Font.new(Font::MODERN, "Courier New"))
8
+ @fonts.push(Font.new(Font::ROMAN, "Arial"))
9
+ @fonts.push(Font.new(Font::SWISS, "Tahoma"))
10
+ @fonts.push(Font.new(Font::NIL, "La La La"))
11
+ end
12
+
13
+ def test_01
14
+ tables = []
15
+ tables.push(FontTable.new)
16
+ tables.push(FontTable.new(@fonts[0], @fonts[2]))
17
+ tables.push(FontTable.new(*@fonts))
18
+ tables.push(FontTable.new(@fonts[0], @fonts[2], @fonts[0]))
19
+
20
+ assert(tables[0].size == 0)
21
+ assert(tables[1].size == 2)
22
+ assert(tables[2].size == 4)
23
+ assert(tables[3].size == 2)
24
+
25
+ assert(tables[0][2] == nil)
26
+ assert(tables[1][1] == @fonts[2])
27
+ assert(tables[2][3] == @fonts[3])
28
+ assert(tables[3][2] == nil)
29
+
30
+ assert(tables[0].index(@fonts[0]) == nil)
31
+ assert(tables[1].index(@fonts[2]) == 1)
32
+ assert(tables[2].index(@fonts[2]) == 2)
33
+ assert(tables[3].index(@fonts[1]) == nil)
34
+
35
+ tables[0].add(@fonts[0])
36
+ assert(tables[0].size == 1)
37
+ assert(tables[0].index(@fonts[0]) == 0)
38
+
39
+ tables[0] << @fonts[1]
40
+ assert(tables[0].size == 2)
41
+ assert(tables[0].index(@fonts[1]) == 1)
42
+
43
+ tables[0].add(@fonts[0])
44
+ assert(tables[0].size == 2)
45
+ assert([tables[0][0], tables[0][1]] == [@fonts[0], @fonts[1]])
46
+
47
+ tables[0] << @fonts[1]
48
+ assert(tables[0].size == 2)
49
+ assert([tables[0][0], tables[0][1]] == [@fonts[0], @fonts[1]])
50
+
51
+ flags = [false, false, false, false]
52
+ tables[2].each do |font|
53
+ flags[@fonts.index(font)] = true if @fonts.index(font) != nil
54
+ end
55
+ assert(flags.index(false) == nil)
56
+
57
+ assert(tables[0].to_s == "Font Table (2 fonts)\n"\
58
+ " Family: modern, Name: Courier New\n"\
59
+ " Family: roman, Name: Arial")
60
+ assert(tables[1].to_s(6) == " Font Table (2 fonts)\n"\
61
+ " Family: modern, Name: Courier New\n"\
62
+ " Family: swiss, Name: Tahoma")
63
+ assert(tables[2].to_s(3) == " Font Table (4 fonts)\n"\
64
+ " Family: modern, Name: Courier New\n"\
65
+ " Family: roman, Name: Arial\n"\
66
+ " Family: swiss, Name: Tahoma\n"\
67
+ " Family: nil, Name: La La La")
68
+ assert(tables[3].to_s(-10) == "Font Table (2 fonts)\n"\
69
+ " Family: modern, Name: Courier New\n"\
70
+ " Family: swiss, Name: Tahoma")
71
+
72
+ assert(tables[0].to_rtf == "{\\fonttbl\n"\
73
+ "{\\f0\\fmodern Courier New;}\n"\
74
+ "{\\f1\\froman Arial;}\n"\
75
+ "}")
76
+ assert(tables[1].to_rtf(4) == " {\\fonttbl\n"\
77
+ " {\\f0\\fmodern Courier New;}\n"\
78
+ " {\\f1\\fswiss Tahoma;}\n"\
79
+ " }")
80
+ assert(tables[2].to_rtf(2) == " {\\fonttbl\n"\
81
+ " {\\f0\\fmodern Courier New;}\n"\
82
+ " {\\f1\\froman Arial;}\n"\
83
+ " {\\f2\\fswiss Tahoma;}\n"\
84
+ " {\\f3\\fnil La La La;}\n"\
85
+ " }")
86
+ assert(tables[3].to_rtf(-6) == "{\\fonttbl\n"\
87
+ "{\\f0\\fmodern Courier New;}\n"\
88
+ "{\\f1\\fswiss Tahoma;}\n"\
89
+ "}")
90
+ end
91
+ end
data/test/font_test.rb ADDED
@@ -0,0 +1,48 @@
1
+ require 'test_helper'
2
+
3
+ # Font class unit test class.
4
+ class FontTest < Test::Unit::TestCase
5
+ def test_01
6
+ fonts = []
7
+ fonts.push(Font.new(Font::MODERN, "Courier New"))
8
+ fonts.push(Font.new(Font::ROMAN, "Arial"))
9
+ fonts.push(Font.new(Font::SWISS, "Tahoma"))
10
+ fonts.push(Font.new(Font::NIL, "La La La"))
11
+
12
+ assert(fonts[0] == fonts[0])
13
+ assert(!(fonts[0] == fonts[1]))
14
+ assert(!(fonts[1] == 'a string of text'))
15
+ assert(fonts[2] == Font.new(Font::SWISS, "Tahoma"))
16
+
17
+ assert(fonts[0].family == Font::MODERN)
18
+ assert(fonts[1].family == Font::ROMAN)
19
+ assert(fonts[2].family == Font::SWISS)
20
+ assert(fonts[3].family == Font::NIL)
21
+
22
+ assert(fonts[0].name == 'Courier New')
23
+ assert(fonts[1].name == 'Arial')
24
+ assert(fonts[2].name == 'Tahoma')
25
+ assert(fonts[3].name == 'La La La')
26
+
27
+ assert(fonts[0].to_s == 'Family: modern, Name: Courier New')
28
+ assert(fonts[1].to_s(3) == ' Family: roman, Name: Arial')
29
+ assert(fonts[2].to_s(6) == ' Family: swiss, Name: Tahoma')
30
+ assert(fonts[3].to_s(-1) == 'Family: nil, Name: La La La')
31
+
32
+ assert(fonts[0].to_rtf == '\fmodern Courier New;')
33
+ assert(fonts[1].to_rtf(2) == ' \froman Arial;')
34
+ assert(fonts[2].to_rtf(4) == ' \fswiss Tahoma;')
35
+ assert(fonts[3].to_rtf(-6) == '\fnil La La La;')
36
+
37
+ begin
38
+ Font.new(12345, "Ningy")
39
+ flunk("Created a Font object with an invalid family setting.")
40
+ rescue RTFError
41
+ rescue Test::Unit::AssertionFailedError => error
42
+ raise error
43
+ rescue => error
44
+ flunk("Unexpected exception caught checking font creation with "\
45
+ "an invalid family. Exception type #{error.class.name}.")
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,30 @@
1
+ require 'test_helper'
2
+
3
+ # Information class unit test class.
4
+ class FooterNodeTest < Test::Unit::TestCase
5
+ def setup
6
+ @document = Document.new(Font.new(Font::ROMAN, 'Arial'))
7
+ end
8
+
9
+ def test_basics
10
+ footers = []
11
+
12
+ footers << FooterNode.new(@document)
13
+ footers << FooterNode.new(@document, FooterNode::LEFT_PAGE)
14
+
15
+ assert(footers[0].parent == @document)
16
+ assert(footers[1].parent == @document)
17
+
18
+ assert(footers[0].type == FooterNode::UNIVERSAL)
19
+ assert(footers[1].type == FooterNode::LEFT_PAGE)
20
+ end
21
+
22
+ def test_exceptions
23
+ footer = FooterNode.new(@document)
24
+ begin
25
+ footer.footnote("La la la.")
26
+ flunk("Successfully added a footnote to a footer.")
27
+ rescue
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ require 'test_helper'
2
+
3
+ # Information class unit test class.
4
+ class HeaderNodeTest < Test::Unit::TestCase
5
+ def setup
6
+ @document = Document.new(Font.new(Font::ROMAN, 'Arial'))
7
+ end
8
+
9
+ def test_basics
10
+ headers = []
11
+
12
+ headers << HeaderNode.new(@document)
13
+ headers << HeaderNode.new(@document, HeaderNode::LEFT_PAGE)
14
+
15
+ assert(headers[0].parent == @document)
16
+ assert(headers[1].parent == @document)
17
+
18
+ assert(headers[0].type == HeaderNode::UNIVERSAL)
19
+ assert(headers[1].type == HeaderNode::LEFT_PAGE)
20
+ end
21
+
22
+ def test_exceptions
23
+ headers = HeaderNode.new(@document)
24
+ begin
25
+ headers.footnote("La la la.")
26
+ flunk("Successfully added a footnote to a header.")
27
+ rescue
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,125 @@
1
+ $:.unshift(File.dirname(__FILE__)+"/../lib")
2
+
3
+ require 'test_helper'
4
+
5
+ # Colour class unit test class.
6
+ class ImageNodeTest < Test::Unit::TestCase
7
+ def setup
8
+ @document = Document.new(Font.new(Font::ROMAN, 'Arial'))
9
+ end
10
+ def test_basics
11
+ image = ImageNode.new(@document, fixture_file_path("bitmap1.bmp"), 1)
12
+
13
+ assert(image.width == 20)
14
+ assert(image.height == 20)
15
+ assert(image.x_scaling == nil)
16
+ assert(image.y_scaling == nil)
17
+ assert(image.top_crop == nil)
18
+ assert(image.right_crop == nil)
19
+ assert(image.left_crop == nil)
20
+ assert(image.bottom_crop == nil)
21
+ end
22
+
23
+ def test_mutators
24
+ image = ImageNode.new(@document, fixture_file_path("jpeg2.jpg"), 1)
25
+
26
+ image.x_scaling = 75
27
+ assert(image.x_scaling == 75)
28
+
29
+ image.y_scaling = 60
30
+ assert(image.y_scaling == 60)
31
+
32
+ image.top_crop = 100
33
+ assert(image.top_crop == 100)
34
+
35
+ image.bottom_crop = 10
36
+ assert(image.bottom_crop == 10)
37
+
38
+ image.right_crop = 35
39
+ assert(image.right_crop == 35)
40
+
41
+ image.left_crop = 50
42
+ assert(image.left_crop == 50)
43
+ end
44
+
45
+ def test_image_reading
46
+ images = []
47
+ images << ImageNode.new(@document, fixture_file_path('bitmap1.bmp'), 1)
48
+ images << ImageNode.new(@document, fixture_file_path('bitmap2.bmp'), 2)
49
+ images << ImageNode.new(@document, fixture_file_path('jpeg1.jpg'), 3)
50
+ images << ImageNode.new(@document, fixture_file_path('jpeg2.jpg'), 4)
51
+ images << ImageNode.new(@document, fixture_file_path('png1.png'), 5)
52
+ images << ImageNode.new(@document, fixture_file_path('png2.png'), 6)
53
+
54
+ assert(images[0].width == 20)
55
+ assert(images[0].height == 20)
56
+ assert(images[1].width == 123)
57
+ assert(images[1].height == 456)
58
+ assert(images[2].width == 20)
59
+ assert(images[2].height == 20)
60
+ assert(images[3].width == 123)
61
+ assert(images[3].height == 456)
62
+ assert(images[4].width == 20)
63
+ assert(images[4].height == 20)
64
+ assert(images[5].width == 123)
65
+ assert(images[5].height == 456)
66
+ end
67
+
68
+ def test_rtf
69
+ image = ImageNode.new(@document, fixture_file_path('png1.png'), 1)
70
+ image.x_scaling = 100
71
+ image.y_scaling = 75
72
+ image.top_crop = 10
73
+ image.right_crop = 15
74
+ image.left_crop = 20
75
+ image.bottom_crop = 25
76
+ rtf = image.to_rtf
77
+
78
+ assert(rtf == "{\\*\\shppict{\\pict\\picscalex100\\picscaley75"\
79
+ "\\piccropl20\\piccropr15\\piccropt10\\piccropb25"\
80
+ "\\picw20\\pich20\\bliptag1\\pngblip\n"\
81
+ "89504e470d0a1a0a0000000d494844520000001400000014080200000002eb8a5a00000001735247\n"\
82
+ "4200aece1ce90000000467414d410000b18f0bfc6105000000206348524d00007a26000080840000\n"\
83
+ "fa00000080e8000075300000ea6000003a98000017709cba513c000003dd49444154384f1d545b6c\n"\
84
+ "145518fee6cccccecc9e99d9b9ed76bbb3bdd8ae5b8144144413a335f141259228d60096b485aa2d\n"\
85
+ "b4686b634bb65b6d682244e2050d46239af0c88b181ff1c507f4411ec4447cf1f2808118d05ab1ed\n"\
86
+ "de778fff6cf2e73c9c33dfff7ddf7f1929052d015945890326d002cac0bfc05f30d624066b131d40\n"\
87
+ "0d5001016c020c68b6cf75e06ed84ff87d7b79728c1b33091c8d63c2c55ecf7a30c8596640c8f040\n"\
88
+ "3639ae741c55bba6b29de3e196d9befccb3db9e7b62104fa81a7adf428f75fe3c6b289a282e31ce3\n"\
89
+ "26df9dec330058c81fe9cdbde12697625e31482e66320b7eefab99ae17fa23455b81e74d678a270a\n"\
90
+ "aa7a1258014e4838c6947d5e97476013fd93416659958a40015864da02320b6e7632871e60277028\n"\
91
+ "61cf73bec2f01ef02ef03e50843c12f7badacc7d93b6bb0cbc05bcd38e37915ae1e1dc5dd802ec00\n"\
92
+ "46e2ca5c4c59024eb7c11f004b908765a397c01c3d633a9f6f4ba2378a027801d6a4037abe0f1875\n"\
93
+ "b5195b2fc878bbfd7a46370b317ec8f1a91cc4bc75bca383ca40b9c9d52938a7957025917925c400\n"\
94
+ "22f2215f7bd1d1a734b6a0c845595d34ac71591bf2dd148135dc3b92cfcde5f9acc716b856b4adb9\n"\
95
+ "78ea989b1e0b9103b2c0431c53db070e06f6b0a11f3613cf4aca81747a30e92608ac62d7fec7761c\n"\
96
+ "792a37f948f7f4aed4c4b67b6676660fe6b3cfe423e480a307887a461628d7fd6484b14ec0a6cbb4\n"\
97
+ "2fdb1e540f5a082384e923dd09c782a521134067a40bbdc98403108fdb0eea105d1a860446639585\n"\
98
+ "fa30f87e48fb802781c781c1a845d676a0138c29376ffc214445b42aa2d114cda668d51aa2561135\n"\
99
+ "2de882fe2877a675ed148f7d1206e77de723db3b13b70be9cc4bc003514d1a42b444fdd6ed1bf57a\n"\
100
+ "bd5a2764bd2a6a655107f381dd9a7e52c197b6fa43dafa09f8dae1df6bea05df3901ec895ab95eaa\n"\
101
+ "374493f0ad288b20dadbfffd1981e37d504754f59cc37f8db355e0baa5adc9b8095cb6ad8f81c330\n"\
102
+ "787abdd41482a25ebab3592b95230ba2541595762b860d7ed1f3fe614a15f85bb785ac3520ffe206\n"\
103
+ "5f01af13b341b2095cad6c44199aa2bcb146f896a0c5eb267090ba045ca56d8c99b493ab904ac0b5\n"\
104
+ "b87911381e6d2669aed43784a891e8f266ad49262217f469379346659c95f06d60ae1bb15585dd22\n"\
105
+ "d95cfbd1887d0eccc34870aa504b54ee6cac6e6e545b44de765eae34a8d30c4361f25cc6bb6280aa\n"\
106
+ "754595aec5d59f5d7ed9323e04a6c162ea6fd77f6f891a152c025150cd5af54aaddc19d2e0535767\n"\
107
+ "2dfd8b98f48d19ff2e99bcca70c9d02ee81acdfa3020a1bbbf87ce28a0ea9a153991e0fa3463343b\n"\
108
+ "830a9b05ce029fb5e3538004d3ee4ed04fe47f31ae584cdee40aed0000000049454e44ae426082"\
109
+ "\n}}")
110
+ end
111
+
112
+ def test_exceptions
113
+ begin
114
+ ImageNode.new(@document, 'lalala', 1)
115
+ flunk("Created an ImageNode for a non-existent file.")
116
+ rescue
117
+ end
118
+
119
+ begin
120
+ ImageNode.new(@document, 'ImageNodeTest.rb', 1)
121
+ flunk("Created an ImageNode from an unsupported file format.")
122
+ rescue
123
+ end
124
+ end
125
+ end