/*
*
*
* Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version
* 2 only, as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License version 2 for more details (a copy is
* included at /legal/license.txt).
*
* You should have received a copy of the GNU General Public License
* version 2 along with this work; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
* Clara, CA 95054 or visit www.sun.com if you need additional
* information or have any questions.
*/
package javax.microedition.lcdui;
import com.sun.midp.i3test.*;
import com.sun.midp.configurator.Constants;
public class TestStringItemNoLabelSizing extends TestCase {
private final int ITEM_PAD = 4;
private final int I_W_TEXT = 3;
private final int TEXT_FONT_H = 15;
// make a string with count repetitions of ch
private String makeString(int count, char ch) {
char arr[] = new char[count];
for (int i = 0; i < count; i++) {
arr[i] = ch;
}
return new String(arr);
}
private String makeStringThatFits(char ch, int char_width, int width) {
char arr[] = new char[width/char_width];
for (int i = 0; i < arr.length; i++) {
arr[i] = ch;
}
return new String(arr);
}
private int getW(StringItem strItem) {
return strItem.stringItemLF.lGetPreferredWidth(-1);
}
private int getH(StringItem strItem) {
return strItem.stringItemLF.lGetPreferredHeight(-1);
}
private void checkSizes(StringItem si, int expectedW, int expectedH) {
int w = getW(si);
int h = getH(si);
assertEquals("w: " + expectedW + " != " + w, expectedW, w);
assertEquals("h: " + expectedH + " != " + h, expectedH, h);
}
private void checkNonemptySizes(String content,
int expectedConW,
int expectedConH) {
checkSizes(new StringItem(null, content),
ITEM_PAD + expectedConW + ITEM_PAD,
ITEM_PAD + expectedConH + ITEM_PAD);
}
public void runTests() {
// null content
declare("testNull");
checkSizes(new StringItem(null, null), 0, 0);
// empty content
declare("testEmpty");
checkSizes(new StringItem(null, ""), 0, 0);
// nonemtpy content, no newline,fits on one line
declare("testI");
checkNonemptySizes("i", I_W_TEXT, TEXT_FONT_H);
// nonempty content, no newline, just fits on one line
declare("test70i");
checkNonemptySizes(makeString(70, 'i'),
70*I_W_TEXT,
TEXT_FONT_H);
// nonempty content, has newline => multiline
// content consists just of "\n" (width is 0 but height is not)
declare("test\\n");
checkNonemptySizes("\n", 0, 2*TEXT_FONT_H);
// nonempty content, has newline => multiline
// content consists of "\ni" (first line is empty)
declare("test\\ni");
checkNonemptySizes("\ni", I_W_TEXT, 2*TEXT_FONT_H);
// nonempty content, has newline => multiline
// content consists of "i\n" (second line is empty)
declare("testI\\n");
checkNonemptySizes("i\n", I_W_TEXT, 2*TEXT_FONT_H);
// nonempty content, has newline => multiline
// content consists of "i\nii" (second line is longer)
declare("testI\\nii");
checkNonemptySizes("i\nii", 2*I_W_TEXT, 2*TEXT_FONT_H);
// nonempty content, has newline => multiline
// content consists of "ii\ni" (first line is longer)
declare("testIi\\ni");
checkNonemptySizes("ii\ni", 2*I_W_TEXT, 2*TEXT_FONT_H);
// nonempty very long content without newline which has to wrap
declare("test75i");
String strFitsInWidth =
makeStringThatFits('i', I_W_TEXT,
Constants.NORMALWIDTH -
Constants.VERT_SCROLLBAR_WIDTH -
ITEM_PAD - ITEM_PAD);
checkNonemptySizes(strFitsInWidth + "ii",
strFitsInWidth.length()*I_W_TEXT,
2*TEXT_FONT_H);
}
}
|