def test_layout_iter_properties(): context = Context() layout = Layout(context) layout_iter = layout.get_iter() assert layout_iter.next_run() is False assert layout_iter.next_char() is False assert layout_iter.next_cluster() is False assert layout_iter.next_line() is False assert layout_iter.at_last_line() is True assert layout_iter.get_index() == 0 assert layout_iter.get_baseline() == 0 assert isinstance(layout_iter.get_char_extents(), Rectangle) cluster_ink, cluster_logical = layout_iter.get_cluster_extents() assert isinstance(cluster_ink, Rectangle) assert isinstance(cluster_logical, Rectangle) run_ink, run_logical = layout_iter.get_run_extents() assert isinstance(run_ink, Rectangle) assert isinstance(run_logical, Rectangle) y0, y1 = layout_iter.get_line_yrange() assert y0 == 0 assert y1 == 0 line_ink, line_logical = layout_iter.get_line_extents() assert isinstance(line_ink, Rectangle) assert isinstance(line_logical, Rectangle) layout_ink, layout_logical = layout_iter.get_layout_extents() assert isinstance(layout_ink, Rectangle) assert isinstance(layout_logical, Rectangle)
def test_layout_setting_properties(): context = Context() layout = Layout(context) layout.set_width(300) assert layout.get_width() == 300 layout.set_height(400) assert layout.get_height() == 400 assert layout.get_spacing() == 0 layout.set_spacing(30) assert layout.get_spacing() == 30 layout.set_alignment(Alignment.CENTER) assert layout.get_alignment() is Alignment.CENTER layout.set_ellipsize(EllipsizeMode.MIDDLE) assert layout.get_ellipsize() is EllipsizeMode.MIDDLE ink_rect, logical_rect = layout.get_extents() assert logical_rect.width == 0 assert logical_rect.height == 0 width, height = layout.get_size() assert width == 0 assert height == 0 baseline = layout.get_baseline() assert baseline == 0 line_count = layout.get_line_count() assert line_count == 1
def test_glyph_item_iterator(self): text = 'Hi from Παν語' layout = Layout(self.pango_context) layout.set_text(text) layout_iter = layout.get_iter() glyph_item_iter = GlyphItemIter() assert isinstance(glyph_item_iter.get_pointer(), ffi.CData) assert glyph_item_iter.init_start( layout_iter.get_run(), text ) assert isinstance(glyph_item_iter.glyph_item, GlyphItem) assert glyph_item_iter.text == text # Verify first cluster assert glyph_item_iter.start_glyph == 0 assert glyph_item_iter.start_index == 0 assert glyph_item_iter.start_char == 0 assert glyph_item_iter.end_glyph == 1 assert glyph_item_iter.end_index == 1 assert glyph_item_iter.end_char == 1 assert not glyph_item_iter.prev_cluster() assert glyph_item_iter.next_cluster() # Verify second cluster assert glyph_item_iter.start_glyph == 1 assert glyph_item_iter.start_index == 1 assert glyph_item_iter.start_char == 1 assert glyph_item_iter.end_glyph == 2 assert glyph_item_iter.end_index == 2 assert glyph_item_iter.end_char == 2 assert glyph_item_iter.init_end( layout_iter.get_run(), text ) # Verify last cluster assert glyph_item_iter.start_glyph == 7 assert glyph_item_iter.start_index == 7 assert glyph_item_iter.start_char == 7 assert glyph_item_iter.end_glyph == 8 assert glyph_item_iter.end_index == 8 assert glyph_item_iter.end_char == 8 assert not glyph_item_iter.next_cluster() assert glyph_item_iter.prev_cluster() # Verify second to last cluster assert glyph_item_iter.start_glyph == 6 assert glyph_item_iter.start_index == 6 assert glyph_item_iter.start_char == 6 assert glyph_item_iter.end_glyph == 7 assert glyph_item_iter.end_index == 7 assert glyph_item_iter.end_char == 7
def test_layout_run_properties(self): layout = Layout(self.pango_context) layout.set_text('Hello World') layout_iter = layout.get_iter() layout_run = layout_iter.get_run() layout_run_item = layout_run.item assert isinstance(layout_run_item, Item)
def test_layout_setting_text(self): layout = Layout(self.pango_context) layout.set_text('Hi from Παν語') assert layout.get_text() == 'Hi from Παν語' layout.set_markup('<span font="italic 30">Hello from Παν語</span>') assert layout.get_text() == 'Hello from Παν語'
def test_layout_setting_text(): context = Context() layout = Layout(context) layout.set_width(300) layout.set_text('Hi from Pango') layout.set_markup('<span font="italic 30">Hi from Παν語</span>')
def test_glyph_item_copies(self): text = 'Hi from Παν語' layout = Layout(self.pango_context) layout.set_text(text) layout_iter = layout.get_iter() layout_run = layout_iter.get_run() assert layout_run.copy().get_pointer() != layout_run.get_pointer()
def test_layout_run_from_pointer(self): layout = Layout(self.pango_context) layout.set_text('Hello World') layout_iter = layout.get_iter() layout_run = layout_iter.get_run() same_layout = LayoutRun.from_pointer(layout_run.get_pointer()) assert isinstance(same_layout, LayoutRun)
def test_glyph_item_get_logical_widths(self): text = 'Hi from Παν語' layout = Layout(self.pango_context) layout.set_text(text) layout_iter = layout.get_iter() layout_run = layout_iter.get_run() logical_widths = layout_run.get_logical_widths(text) assert len(logical_widths) == 8 assert isinstance(logical_widths[0], int)
def test_layout_iter_pointer(self): layout = Layout(self.pango_context) layout_iter = layout.get_iter() assert isinstance(layout_iter, LayoutIter) assert isinstance(layout_iter.get_pointer(), ffi.CData) pointer_shallow_copy = layout_iter.get_pointer() layout_iter_shallow_copy = LayoutIter.from_pointer( pointer_shallow_copy ) assert isinstance(layout_iter_shallow_copy, LayoutIter) assert isinstance(layout_iter_shallow_copy.get_pointer(), ffi.CData)
def test_glyph_item_splits(self): text = 'Hi from Παν語' layout = Layout(self.pango_context) layout.set_text(text) layout_iter = layout.get_iter() layout_run = layout_iter.get_run() layout_run_hi = layout_run.split(text, 3) # Substring "Hi " assert layout_run_hi.item.num_chars == 3 assert layout_run_hi.item.offset == 0 # Substring "from " assert layout_run.item.num_chars == 5 assert layout_run.item.offset == 3
def test_set_attributes(self): context = Context() layout = Layout(context) layout.set_text("Working?") attr = Attribute.from_size(5, 1, 4) attr_list = AttrList() attr_list.insert(attr) layout.set_attributes(attr_list) layout.get_attributes() # Resetting the attributes layout.set_attributes(None) layout.get_attributes()
def test_layout_setting_properties(self): layout = Layout(self.pango_context) layout.set_width(300) assert layout.get_width() == 300 layout.set_height(400) assert layout.get_height() == 400 assert layout.get_spacing() == 0 layout.set_spacing(30) assert layout.get_spacing() == 30 layout.set_alignment(Alignment.CENTER) assert layout.get_alignment() is Alignment.CENTER layout.set_ellipsize(EllipsizeMode.MIDDLE) assert layout.get_ellipsize() is EllipsizeMode.MIDDLE layout.set_wrap(WrapMode.WORD_CHAR) assert layout.get_wrap() is WrapMode.WORD_CHAR ink_rect, logical_rect = layout.get_extents() assert logical_rect.width == 0 # The height of the layout will be the height of the font, despite no # text being set against the layout. assert logical_rect.height > 0 width, height = layout.get_size() assert width == 0 # The height of the layout will be the height of the font, despite no # text being set against the layout. assert height > 0 baseline = layout.get_baseline() # The baseline of the layout will correspond to the selected font, # despite no text being set against the layout. assert baseline > 0 line_count = layout.get_line_count() assert line_count == 1
def test_item_properties(self): layout = Layout(self.pango_context) layout.set_text('Hi from Παν語') layout_iter = layout.get_iter() layout_run = layout_iter.get_run() layout_run_item = layout_run.item assert layout_run_item.length == 8 assert layout_run_item.offset == 0 assert layout_run_item.num_chars == 8 assert isinstance(layout_run_item.get_pointer(), ffi.CData) assert layout_iter.next_run() layout_run = layout_iter.get_run() layout_run_item = layout_run.item assert layout_run_item.length == 6 assert layout_run_item.offset == 8 assert layout_run_item.num_chars == 3 assert isinstance(layout_run_item.get_pointer(), ffi.CData)
def test_layout_setting_font_description(): context = Context() layout = Layout(context) # Assert that the font description is not set assert layout.get_font_description() is None # Creating the font description desc = FontDescription() desc.set_family('sans-serif') layout.set_font_description(desc) # Verifying the font description was set same_desc = layout.get_font_description() assert same_desc.get_family() == desc.get_family() # Changing the font description desc.set_family('serif') assert same_desc.get_family() != desc.get_family() # Resetting the font description layout.set_font_description(None) assert layout.get_font_description() is None
def test_layout_iter_properties(self): layout = Layout(self.pango_context) layout_iter = layout.get_iter() assert layout_iter.next_run() is False assert layout_iter.next_char() is False assert layout_iter.next_cluster() is False assert layout_iter.next_line() is False assert layout_iter.at_last_line() is True assert layout_iter.get_index() == 0 # Even with no text in the layout, the layout will still have a # baseline corresponding to the selected font description. assert layout_iter.get_baseline() > 0 assert isinstance(layout_iter.get_char_extents(), Rectangle) cluster_ink, cluster_logical = layout_iter.get_cluster_extents() assert isinstance(cluster_ink, Rectangle) assert isinstance(cluster_logical, Rectangle) run_ink, run_logical = layout_iter.get_run_extents() assert isinstance(run_ink, Rectangle) assert isinstance(run_logical, Rectangle) y0, y1 = layout_iter.get_line_yrange() assert y0 == 0 # Even with no text in the layout, the layout will still have a # y-range corresponding to the selected font description. assert y1 > 0 line_ink, line_logical = layout_iter.get_line_extents() assert isinstance(line_ink, Rectangle) assert isinstance(line_logical, Rectangle) layout_ink, layout_logical = layout_iter.get_layout_extents() assert isinstance(layout_ink, Rectangle) assert isinstance(layout_logical, Rectangle)
def test_layout_returns_identical_context(): context = Context() layout = Layout(context) identical_context = layout.get_context() assert identical_context.get_pointer() == context.get_pointer()
def test_layout_iterator_run_returns_none(): context = Context() layout = Layout(context) layout_iter = layout.get_iter() assert layout_iter.get_run() is None
def test_layout_not_implemented_equality(self): context = Context() layout = Layout(context) assert ('not an object' != layout)
def test_layout_get_pointer_returns_identical_layout(): context = Context() layout = Layout(context) identical_layout = Layout.from_pointer(layout.get_pointer()) assert identical_layout.get_pointer() == layout.get_pointer()
def test_layout_iterator_run_returns_none(self): layout = Layout(self.pango_context) layout_iter = layout.get_iter() assert layout_iter.get_run() is None
def test_layout_iter_pointer(): context = Context() layout = Layout(context) layout_iter = layout.get_iter() assert isinstance(layout_iter.get_pointer(), ffi.CData)