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 142 143 144 145 146 147
|
class ContextTest < Test::Unit::TestCase
include Helper
def setup
@output = StringIO.new
@surface = Cairo::PDFSurface.new(@output, 10, 10)
end
def test_new_and_destroy
context = Cairo::Context.new(@surface)
@surface.destroy
assert_not_equal("%%EOF\n", @output.string[-6..-1])
assert {not context.destroyed?}
context.destroy
assert {context.destroyed?}
assert_equal("%%EOF\n", @output.string[-6..-1])
end
def test_create_with_block
Cairo::Context.create(@surface) do |context|
@surface.destroy
assert_not_equal("%%EOF\n", @output.string[-6..-1])
end
assert_equal("%%EOF\n", @output.string[-6..-1])
end
def test_create_with_block_and_destroy
assert_nothing_raised do
Cairo::Context.create(@surface) do |context|
context.destroy
end
end
end
def test_font_face
only_cairo_version(1, 7, 2)
context = Cairo::Context.new(@surface)
assert_kind_of(Cairo::FontFace, context.font_face)
face = Cairo::ToyFontFace.new("serif")
context.font_face = face
assert_equal("serif", context.font_face.family)
face = Cairo::ToyFontFace.new("sans")
context.font_face = face
assert_equal("sans", context.font_face.family)
end
def test_text_to_glyphs
only_cairo_version(1, 7, 2)
surface = Cairo::PDFSurface.new(StringIO.new, 10, 10)
context = Cairo::Context.new(surface)
scaled_font = Cairo::ScaledFont.new(context.font_face,
Cairo::Matrix.identity,
Cairo::Matrix.identity,
Cairo::FontOptions.new)
utf8 = "text"
glyphs, clusters, backward = scaled_font.text_to_glyphs(0, 0, utf8)
assert_nothing_raised do
context.show_text_glyphs(utf8, glyphs, clusters, backward)
end
end
def test_select_font_face
only_cairo_version(1, 7, 2)
context = Cairo::Context.new(@surface)
face = context.font_face
default_font_family = ""
default_font_family = "Helvetica" if quartz?
default_font_family = "Arial" if windows?
assert_equal([default_font_family,
Cairo::FONT_SLANT_NORMAL,
Cairo::FONT_WEIGHT_NORMAL],
[face.family, face.slant, face.weight])
context.select_font_face
face = context.font_face
assert_equal([default_font_family,
Cairo::FONT_SLANT_NORMAL,
Cairo::FONT_WEIGHT_NORMAL],
[face.family, face.slant, face.weight])
context.select_font_face(:serif, :italic, :bold)
face = context.font_face
assert_equal(["serif", Cairo::FONT_SLANT_ITALIC, Cairo::FONT_WEIGHT_BOLD],
[face.family, face.slant, face.weight])
end
def test_select_font_face_with_invalid_family_name
context = Cairo::Context.new(@surface)
exception = assert_raise(ArgumentError) do
context.select_font_face([999])
end
assert_equal("family name should be nil, String or Symbol: [999]",
exception.message)
end
sub_test_case("#tag") do
setup do
only_cairo_version(1, 15, 4)
only_not_windows
end
test("LINK") do
Cairo::Context.create(@surface) do |context|
context.tag(Cairo::Tag::LINK, "uri='http://localhost/'") do
context.show_text("localhost")
end
@surface.finish
end
document = Poppler::Document.new(@output.string)
uris = document[0].link_mapping.collect do |mapping|
mapping.action.uri
end
assert_equal(["http://localhost/"],
uris)
end if defined?(Poppler)
end
def test_raw_address
context = Cairo::Context.new(@surface)
assert do
context.raw_address > 0
end
end
def test_hairline
only_cairo_version(1, 17, 6)
Cairo::Context.create(@surface) do |context|
assert do
not context.hairline?
end
context.hairline = true
assert do
context.hairline?
end
end
end
end
|