package org.mt4j.test.css;
import java.util.HashMap;
import java.util.List;
import junit.framework.TestCase;
import org.junit.Before;
import org.junit.Test;
import org.mt4j.components.css.parser.CSSParserConnection;
import org.mt4j.components.css.style.CSSSelector;
import org.mt4j.components.css.style.CSSStyle;
import org.mt4j.components.css.util.CSSKeywords.CSSSelectorType;
import org.mt4j.util.MTColor;
import org.mt4j.util.font.FontManager;
import org.mt4j.util.font.IFont;
public class FontParserTest extends TestCase{
private StartTestApp app = new StartTestApp();
private CSSParserConnection pc;
private List<CSSStyle> styles;
private MTColor w = new MTColor(255,255,255,255);
private HashMap<CSSSelector, IFont> hm = new HashMap<CSSSelector, IFont>();
public FontParserTest() {
pc = new CSSParserConnection("junit/fonttest.css", app);
styles= pc.getCssh().getStyles();
hm.clear();
for (CSSStyle s: styles) {
hm.put(s.getSelector(), s.getFont());
}
}
@Before
public void setUp() {
}
protected void tearDown() {
//app.destroy();
}
@Test
public void testFontFamilesSans() {
CSSSelector sans = new CSSSelector("sans", CSSSelectorType.ID);
CSSSelector sansbold = new CSSSelector("sansbold", CSSSelectorType.ID);
CSSSelector sanslight = new CSSSelector("sanslight", CSSSelectorType.ID);
CSSSelector sansitalic = new CSSSelector("sansitalic", CSSSelectorType.ID);
CSSSelector sansitalicbold = new CSSSelector("sansitalicbold", CSSSelectorType.ID);
CSSSelector sansitaliclight = new CSSSelector("sansitaliclight", CSSSelectorType.ID);
CSSSelector sansoblique = new CSSSelector("sansoblique", CSSSelectorType.ID);
CSSSelector sansobliquebold = new CSSSelector("sansobliquebold", CSSSelectorType.ID);
CSSSelector sansobliquelight = new CSSSelector("sansobliquelight", CSSSelectorType.ID);
CSSSelector sansnormal = new CSSSelector("sansnormal", CSSSelectorType.ID);
CSSSelector sansnormalbold = new CSSSelector("sansnormalbold", CSSSelectorType.ID);
CSSSelector sansnormallight = new CSSSelector("sansnormallight", CSSSelectorType.ID);
IFont sansFont = FontManager.getInstance().createFont(app,"SansSerif", 16,w);
IFont sansBoldFont = FontManager.getInstance().createFont(app,"SansSerif.bold", 16,w);
IFont sansItalicFont = FontManager.getInstance().createFont(app,"SansSerif.italic", 16,w);
IFont sansItalicBoldFont = FontManager.getInstance().createFont(app,"SansSerif.bolditalic", 16,w);
IFont sansLightFont = FontManager.getInstance().createFont(app,"SansSerif", 16,w);
assertTrue(sameFont(hm.get(sans), sansFont));
assertTrue(sameFont(hm.get(sansbold), sansBoldFont));
assertTrue(sameFont(hm.get(sanslight), sansLightFont));
assertTrue(sameFont(hm.get(sansitalic), sansItalicFont));
assertTrue(sameFont(hm.get(sansitalicbold), sansItalicBoldFont));
assertTrue(sameFont(hm.get(sansitaliclight), sansItalicFont));
assertTrue(sameFont(hm.get(sansoblique), sansItalicFont));
assertTrue(sameFont(hm.get(sansobliquebold), sansItalicBoldFont));
assertTrue(sameFont(hm.get(sansobliquelight), sansItalicFont));
assertTrue(sameFont(hm.get(sansnormal), sansFont));
assertTrue(sameFont(hm.get(sansnormalbold), sansBoldFont));
assertTrue(sameFont(hm.get(sansnormallight), sansLightFont));
}
@Test
public void testFontFamilesSerif() {
CSSSelector serif = new CSSSelector("serif", CSSSelectorType.ID);
CSSSelector serifbold = new CSSSelector("serifbold", CSSSelectorType.ID);
CSSSelector seriflight = new CSSSelector("seriflight", CSSSelectorType.ID);
CSSSelector serifitalic = new CSSSelector("serifitalic", CSSSelectorType.ID);
CSSSelector serifitalicbold = new CSSSelector("serifitalicbold", CSSSelectorType.ID);
CSSSelector serifitaliclight = new CSSSelector("serifitaliclight", CSSSelectorType.ID);
CSSSelector serifoblique = new CSSSelector("serifoblique", CSSSelectorType.ID);
CSSSelector serifobliquebold = new CSSSelector("serifobliquebold", CSSSelectorType.ID);
CSSSelector serifobliquelight = new CSSSelector("serifobliquelight", CSSSelectorType.ID);
CSSSelector serifnormal = new CSSSelector("serifnormal", CSSSelectorType.ID);
CSSSelector serifnormalbold = new CSSSelector("serifnormalbold", CSSSelectorType.ID);
CSSSelector serifnormallight = new CSSSelector("serifnormallight", CSSSelectorType.ID);
IFont serifFont = FontManager.getInstance().createFont(app,"Serif", 16,w);
IFont serifBoldFont = FontManager.getInstance().createFont(app,"Serif.bold", 16,w);
IFont serifItalicFont = FontManager.getInstance().createFont(app,"Serif.italic", 16,w);
IFont serifItalicBoldFont = FontManager.getInstance().createFont(app,"Serif.bolditalic", 16,w);
IFont serifLightFont = FontManager.getInstance().createFont(app,"Serif", 16,w);
assertTrue(sameFont(hm.get(serif), serifFont));
assertTrue(sameFont(hm.get(serifbold), serifBoldFont));
assertTrue(sameFont(hm.get(seriflight), serifLightFont));
assertTrue(sameFont(hm.get(serifitalic), serifItalicFont));
assertTrue(sameFont(hm.get(serifitalicbold), serifItalicBoldFont));
assertTrue(sameFont(hm.get(serifitaliclight), serifItalicFont));
assertTrue(sameFont(hm.get(serifoblique), serifItalicFont));
assertTrue(sameFont(hm.get(serifobliquebold), serifItalicBoldFont));
assertTrue(sameFont(hm.get(serifobliquelight), serifItalicFont));
assertTrue(sameFont(hm.get(serifnormal), serifFont));
assertTrue(sameFont(hm.get(serifnormalbold), serifBoldFont));
assertTrue(sameFont(hm.get(serifnormallight), serifLightFont));
}
@Test
public void testFontFamilesMono() {
CSSSelector mono = new CSSSelector("mono", CSSSelectorType.ID);
CSSSelector monobold = new CSSSelector("monobold", CSSSelectorType.ID);
CSSSelector monolight = new CSSSelector("monolight", CSSSelectorType.ID);
CSSSelector monoitalic = new CSSSelector("monoitalic", CSSSelectorType.ID);
CSSSelector monoitalicbold = new CSSSelector("monoitalicbold", CSSSelectorType.ID);
CSSSelector monoitaliclight = new CSSSelector("monoitaliclight", CSSSelectorType.ID);
CSSSelector monooblique = new CSSSelector("monooblique", CSSSelectorType.ID);
CSSSelector monoobliquebold = new CSSSelector("monoobliquebold", CSSSelectorType.ID);
CSSSelector monoobliquelight = new CSSSelector("monoobliquelight", CSSSelectorType.ID);
CSSSelector mononormal = new CSSSelector("mononormal", CSSSelectorType.ID);
CSSSelector mononormalbold = new CSSSelector("mononormalbold", CSSSelectorType.ID);
CSSSelector mononormallight = new CSSSelector("mononormallight", CSSSelectorType.ID);
IFont monoFont = FontManager.getInstance().createFont(app,"Monospaced", 16,w);
IFont monoBoldFont = FontManager.getInstance().createFont(app,"Monospaced.bold", 16,w);
IFont monoItalicFont = FontManager.getInstance().createFont(app,"Monospaced.italic", 16,w);
IFont monoItalicBoldFont = FontManager.getInstance().createFont(app,"Monospaced.bolditalic", 16,w);
IFont monoLightFont = FontManager.getInstance().createFont(app,"Monospaced", 16,w);
assertTrue(sameFont(hm.get(mono), monoFont));
assertTrue(sameFont(hm.get(monobold), monoBoldFont));
assertTrue(sameFont(hm.get(monolight), monoLightFont));
assertTrue(sameFont(hm.get(monoitalic), monoItalicFont));
assertTrue(sameFont(hm.get(monoitalicbold), monoItalicBoldFont));
assertTrue(sameFont(hm.get(monoitaliclight), monoItalicFont));
assertTrue(sameFont(hm.get(monooblique), monoItalicFont));
assertTrue(sameFont(hm.get(monoobliquebold), monoItalicBoldFont));
assertTrue(sameFont(hm.get(monoobliquelight), monoItalicFont));
assertTrue(sameFont(hm.get(mononormal), monoFont));
assertTrue(sameFont(hm.get(mononormalbold), monoBoldFont));
assertTrue(sameFont(hm.get(mononormallight), monoLightFont));
}
@Test
public void testFontFamilesOther() {
CSSSelector arial = new CSSSelector("arial", CSSSelectorType.ID);
CSSSelector arial12 = new CSSSelector("arial12", CSSSelectorType.ID);
CSSSelector arialgreen = new CSSSelector("arialgreen", CSSSelectorType.ID);
CSSSelector arialsmaller = new CSSSelector("arialsmaller", CSSSelectorType.ID);
IFont arialFont = FontManager.getInstance().createFont(app,"arial.ttf", 16,w);
IFont arial12Font = FontManager.getInstance().createFont(app, "arial.ttf", 12, w);
MTColor g = new MTColor(0,128,0,255);
IFont arialgreenFont = FontManager.getInstance().createFont(app, "arial.ttf", 16, g);
IFont arialsmallerFont = FontManager.getInstance().createFont(app, "arial.ttf", 8, w);
assertTrue(sameFont(hm.get(arial), arialFont));
assertTrue(sameFont(hm.get(arial12), arial12Font));
assertTrue(sameFont(hm.get(arialgreen), arialgreenFont));
assertTrue(sameFont(hm.get(arialsmaller), arialsmallerFont));
}
public boolean sameFont(IFont f1, IFont f2) {
boolean same = true;
same = same && f1.getFillColor().equals(f2.getFillColor());
// same = same && f1.getStrokeColor().equals(f2.getStrokeColor());
same = same && f1.getOriginalFontSize() == f2.getOriginalFontSize();
same = same && f1.getFontFileName().equalsIgnoreCase(f2.getFontFileName());
return same;
}
}