@Test
  public void test_getLocation() {
    if (SwtTestUtil.isCocoa) {
      // TODO Fix Cocoa failure.
      if (SwtTestUtil.verbose) {
        System.out.println(
            "Excluded test_getLocation(org.eclipse.swt.tests.junit.Test_org_eclipse_swt_graphics_TextLayout).");
      }
      return;
    }
    TextLayout layout = new TextLayout(display);
    String text = "AB\u05E9\u05E0";
    layout.setText(text);
    assertEquals(0, layout.getLocation(0, false).x);
    assertEquals(layout.getLocation(0, true).x, layout.getLocation(1, false).x);
    assertEquals(layout.getLocation(2, false).x, layout.getLineBounds(0).width);
    assertEquals(layout.getLocation(2, true).x, layout.getLocation(3, false).x);
    assertEquals(layout.getLocation(3, true).x, layout.getLocation(1, true).x);

    assertEquals(layout.getLocation(4, false).x, layout.getLineBounds(0).width);
    assertEquals(layout.getLocation(4, true).x, layout.getLineBounds(0).width);
    layout.dispose();
  }
  @Test
  public void test_getOffset() {
    boolean isCocoa = SwtTestUtil.isCocoa;
    if (isCocoa) {
      // TODO Fix Cocoa failure.
      if (SwtTestUtil.verbose) {
        System.out.println(
            "Partially excluded test_getOffset(org.eclipse.swt.tests.junit.Test_org_eclipse_swt_graphics_TextLayout).");
      }
    }
    TextLayout layout = new TextLayout(display);
    String text = "AB \u05E9\u05E0 CD\nHello";
    layout.setText(text);
    int[] trailing = new int[1];

    assertEquals(0, layout.getOffset(0, 0, trailing));
    assertEquals(0, trailing[0]);
    Point point = layout.getLocation(0, true);
    assertEquals(1, layout.getOffset(point.x + 1, 0, trailing));
    assertEquals(0, trailing[0]);
    point = layout.getLocation(1, false);
    assertEquals(0, layout.getOffset(point.x - 1, 0, trailing));
    assertEquals(1, trailing[0]);
    point = layout.getLocation(2, true);
    assertEquals(4, layout.getOffset(point.x + 1, 0, trailing));
    assertEquals(1, trailing[0]);
    point = layout.getLocation(4, true);
    assertEquals(2, layout.getOffset(point.x - 1, 0, trailing));
    assertEquals(1, trailing[0]);
    point = layout.getLocation(4, false);
    assertEquals(3, layout.getOffset(point.x + 1, 0, trailing));
    assertEquals(1, trailing[0]);

    Rectangle bounds = layout.getBounds();
    layout.setWidth(bounds.width + 100);
    layout.setAlignment(SWT.CENTER);

    assertEquals(0, layout.getOffset(0, 0, trailing));
    assertEquals(0, trailing[0]);
    point = layout.getLocation(0, true);
    assertEquals(1, layout.getOffset(point.x + 1, 0, trailing));
    assertEquals(0, trailing[0]);
    point = layout.getLocation(1, false);
    assertEquals(0, layout.getOffset(point.x - 1, 0, trailing));
    assertEquals(1, trailing[0]);
    point = layout.getLocation(2, true);
    assertEquals(4, layout.getOffset(point.x + 1, 0, trailing));
    assertEquals(1, trailing[0]);
    point = layout.getLocation(4, true);
    assertEquals(2, layout.getOffset(point.x - 1, 0, trailing));
    assertEquals(1, trailing[0]);
    point = layout.getLocation(4, false);
    assertEquals(3, layout.getOffset(point.x + 1, 0, trailing));
    assertEquals(1, trailing[0]);

    layout.setAlignment(SWT.RIGHT);

    assertEquals(0, layout.getOffset(0, 0, trailing));
    assertEquals(0, trailing[0]);
    point = layout.getLocation(0, true);
    assertEquals(1, layout.getOffset(point.x + 1, 0, trailing));
    assertEquals(0, trailing[0]);
    point = layout.getLocation(1, false);
    assertEquals(0, layout.getOffset(point.x - 1, 0, trailing));
    assertEquals(1, trailing[0]);
    point = layout.getLocation(2, true);
    assertEquals(4, layout.getOffset(point.x + 1, 0, trailing));
    assertEquals(1, trailing[0]);
    point = layout.getLocation(4, true);
    assertEquals(2, layout.getOffset(point.x - 1, 0, trailing));
    if (!isCocoa) assertEquals(1, trailing[0]);
    point = layout.getLocation(4, false);
    assertEquals(3, layout.getOffset(point.x + 1, 0, trailing));
    assertEquals(1, trailing[0]);

    text = "Text";
    layout.setText(text);
    int width = layout.getBounds().width;
    layout.setAlignment(SWT.LEFT);
    assertEquals(0, layout.getOffset(1, 0, null));
    assertEquals(text.length() - 1, layout.getOffset(width - 1, 0, null));
    layout.setWidth(width + 100);
    layout.setAlignment(SWT.CENTER);
    assertEquals(0, layout.getOffset(1 + 50, 0, null));
    assertEquals(text.length() - 1, layout.getOffset(width - 1 + 50, 0, null));
    layout.setAlignment(SWT.RIGHT);
    assertEquals(0, layout.getOffset(1 + 100, 0, null));
    assertEquals(text.length() - 1, layout.getOffset(width - 1 + 100, 0, null));

    layout.dispose();
  }