| /******************************************************************************* |
| * Copyright (c) 2005, 2010 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.draw2d.test; |
| |
| import java.util.List; |
| |
| import org.eclipse.draw2d.text.FlowPage; |
| import org.eclipse.draw2d.text.InlineFlow; |
| import org.eclipse.draw2d.text.TextFlow; |
| import org.eclipse.draw2d.text.TextFragmentBox; |
| import org.eclipse.swt.graphics.Font; |
| |
| /** |
| * @author Pratik Shah |
| * @since 3.1 |
| */ |
| public class TextualTests extends BaseTestCase { |
| |
| public void testLineRootBidiCommit() { |
| FlowPage block = new FlowPage(); |
| InlineFlow bold = new InlineFlow(); |
| InlineFlow italics = new InlineFlow(); |
| TextFlow boldTextStart = new TextFlow(); |
| TextFlow boldTextEnd = new TextFlow(); |
| TextFlow italicText = new TextFlow(); |
| |
| block.add(bold); |
| bold.add(boldTextStart); |
| bold.add(italics); |
| italics.add(italicText); |
| bold.add(boldTextEnd); |
| |
| boldTextStart.setText("abc "); |
| italicText.setText("xyz \u0634\u0637\u0635"); |
| boldTextEnd.setText(" \u0639\u0633\u0640 hum"); |
| |
| block.setSize(-1, -1); |
| block.setFont(TAHOMA); |
| block.validate(); |
| |
| // TODO enhance verification |
| List boldFragments = bold.getFragments(); |
| assertEquals(3, boldFragments.size()); |
| List italicFragments = italics.getFragments(); |
| assertTrue(italicFragments.size() == 2); |
| } |
| |
| // test for bug 113700 |
| public void testGetFirstAndLastOffsetForLine() { |
| Font xlFont = new Font(null, "Tahoma", 28, 0); |
| FlowPage block = new FlowPage(); |
| TextFlow smallText = new TextFlow("wwww"); |
| TextFlow largeText = new TextFlow("ABCD"); |
| |
| block.setFont(TAHOMA); |
| largeText.setFont(xlFont); |
| block.add(smallText); |
| block.add(largeText); |
| block.setSize(-1, -1); |
| block.validate(); |
| |
| TextFragmentBox box = (TextFragmentBox) largeText.getFragments().get(0); |
| int y = box.getBaseline(); |
| try { |
| assertTrue(smallText.getFirstOffsetForLine(y) == 0); |
| assertTrue(smallText.getLastOffsetForLine(y) == 3); |
| assertTrue(smallText.getFirstOffsetForLine(y - 1) == -1); |
| assertTrue(smallText.getLastOffsetForLine(y + 1) == -1); |
| } finally { |
| xlFont.dispose(); |
| } |
| } |
| |
| } |