@@ -276,6 +276,7 @@ def test_polygon_placement_perimeter(self):
276276 self .layer = TestQgsPalLabeling .loadFeatureLayer ('polygon_perimeter' )
277277 self ._TestMapSettings = self .cloneMapSettings (self ._MapSettings )
278278 self .lyr .placement = QgsPalLayerSettings .Line
279+ self .lyr .placementFlags = QgsPalLayerSettings .AboveLine
279280 self .checkTest ()
280281 self .removeMapLayer (self .layer )
281282 self .layer = None
@@ -385,6 +386,51 @@ def test_prefer_line_below_instead_of_online(self):
385386 self .removeMapLayer (self .layer )
386387 self .layer = None
387388
389+ def test_prefer_longer_lines_over_shorter (self ):
390+ # Test that labeling a line using parallel labels will tend to place the labels over the longer straight parts of
391+ # the line
392+ self .layer = TestQgsPalLabeling .loadFeatureLayer ('line_placement_1' )
393+ self ._TestMapSettings = self .cloneMapSettings (self ._MapSettings )
394+ self .lyr .placement = QgsPalLayerSettings .Line
395+ self .checkTest ()
396+ self .removeMapLayer (self .layer )
397+ self .layer = None
398+
399+ def test_prefer_more_horizontal_lines (self ):
400+ # Test that labeling a line using parallel labels will tend to place the labels over more horizontal sections
401+ self .layer = TestQgsPalLabeling .loadFeatureLayer ('line_placement_2' )
402+ self ._TestMapSettings = self .cloneMapSettings (self ._MapSettings )
403+ self .lyr .placement = QgsPalLayerSettings .Line
404+ self .checkTest ()
405+ self .removeMapLayer (self .layer )
406+ self .layer = None
407+
408+ def test_label_line_over_small_angles (self ):
409+ # Test that labeling a line using parallel labels will place labels near center of straightish line
410+ self .layer = TestQgsPalLabeling .loadFeatureLayer ('line_placement_3' )
411+ self ._TestMapSettings = self .cloneMapSettings (self ._MapSettings )
412+ self .lyr .placement = QgsPalLayerSettings .Line
413+ self .checkTest ()
414+ self .removeMapLayer (self .layer )
415+ self .layer = None
416+
417+ def test_label_line_toward_center (self ):
418+ # Test that labeling a line using parallel labels will try to place labels as close to center of line as possible
419+ self .layer = TestQgsPalLabeling .loadFeatureLayer ('line_placement_4' )
420+ self ._TestMapSettings = self .cloneMapSettings (self ._MapSettings )
421+ self .lyr .placement = QgsPalLayerSettings .Line
422+ self .checkTest ()
423+ self .removeMapLayer (self .layer )
424+ self .layer = None
425+
426+ def test_label_line_avoid_jaggy (self ):
427+ # Test that labeling a line using parallel labels won't place labels over jaggy bits of line
428+ self .layer = TestQgsPalLabeling .loadFeatureLayer ('line_placement_5' )
429+ self ._TestMapSettings = self .cloneMapSettings (self ._MapSettings )
430+ self .lyr .placement = QgsPalLayerSettings .Line
431+ self .checkTest ()
432+ self .removeMapLayer (self .layer )
433+ self .layer = None
388434
389435if __name__ == '__main__' :
390436 # NOTE: unless PAL_SUITE env var is set all test class methods will be run
0 commit comments