/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* $Id$ */
package org.apache.fop.fonts.truetype;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/**
* This class tests the enum org.apache.fop.fonts.truetype.TTFTableName
*
*/
public class TTFTableNameTestCase {
/**
* Test getName() - tests that the getName() method returns the expected String as expected in
* the Directory Table.
* @exception IllegalAccessException error
*/
@Test
public void testGetName() throws IllegalAccessException {
assertEquals("tableDirectory", OFTableName.TABLE_DIRECTORY.getName());
assertEquals("EBDT", OFTableName.EBDT.getName());
assertEquals("EBLC", OFTableName.EBLC.getName());
assertEquals("EBSC", OFTableName.EBSC.getName());
assertEquals("FFTM", OFTableName.FFTM.getName());
assertEquals("GDEF", OFTableName.GDEF.getName());
assertEquals("GPOS", OFTableName.GPOS.getName());
assertEquals("GSUB", OFTableName.GSUB.getName());
assertEquals("LTSH", OFTableName.LTSH.getName());
assertEquals("OS/2", OFTableName.OS2.getName());
assertEquals("PCLT", OFTableName.PCLT.getName());
assertEquals("VDMX", OFTableName.VDMX.getName());
assertEquals("cmap", OFTableName.CMAP.getName());
assertEquals("cvt ", OFTableName.CVT.getName());
assertEquals("fpgm", OFTableName.FPGM.getName());
assertEquals("gasp", OFTableName.GASP.getName());
assertEquals("glyf", OFTableName.GLYF.getName());
assertEquals("hdmx", OFTableName.HDMX.getName());
assertEquals("head", OFTableName.HEAD.getName());
assertEquals("hhea", OFTableName.HHEA.getName());
assertEquals("hmtx", OFTableName.HMTX.getName());
assertEquals("kern", OFTableName.KERN.getName());
assertEquals("loca", OFTableName.LOCA.getName());
assertEquals("maxp", OFTableName.MAXP.getName());
assertEquals("name", OFTableName.NAME.getName());
assertEquals("post", OFTableName.POST.getName());
assertEquals("prep", OFTableName.PREP.getName());
assertEquals("vhea", OFTableName.VHEA.getName());
assertEquals("vmtx", OFTableName.VMTX.getName());
// make sure it works with other table names
OFTableName test = OFTableName.getValue("test");
assertEquals("test", test.getName());
}
/**
* Test getValue(String) - tests that the getValue(String) method returns the expected
* TTFTableNames value when it is given a String (name of a table).
* @exception IllegalAccessException error
*/
@Test
public void testGetValue() throws IllegalAccessException {
assertEquals(OFTableName.EBDT, OFTableName.getValue("EBDT"));
assertEquals(OFTableName.EBLC, OFTableName.getValue("EBLC"));
assertEquals(OFTableName.EBSC, OFTableName.getValue("EBSC"));
assertEquals(OFTableName.FFTM, OFTableName.getValue("FFTM"));
assertEquals(OFTableName.LTSH, OFTableName.getValue("LTSH"));
assertEquals(OFTableName.OS2, OFTableName.getValue("OS/2"));
assertEquals(OFTableName.PCLT, OFTableName.getValue("PCLT"));
assertEquals(OFTableName.VDMX, OFTableName.getValue("VDMX"));
assertEquals(OFTableName.CMAP, OFTableName.getValue("cmap"));
assertEquals(OFTableName.CVT, OFTableName.getValue("cvt "));
assertEquals(OFTableName.FPGM, OFTableName.getValue("fpgm"));
assertEquals(OFTableName.GASP, OFTableName.getValue("gasp"));
assertEquals(OFTableName.GLYF, OFTableName.getValue("glyf"));
assertEquals(OFTableName.HDMX, OFTableName.getValue("hdmx"));
assertEquals(OFTableName.HEAD, OFTableName.getValue("head"));
assertEquals(OFTableName.HHEA, OFTableName.getValue("hhea"));
assertEquals(OFTableName.HMTX, OFTableName.getValue("hmtx"));
assertEquals(OFTableName.KERN, OFTableName.getValue("kern"));
assertEquals(OFTableName.LOCA, OFTableName.getValue("loca"));
assertEquals(OFTableName.MAXP, OFTableName.getValue("maxp"));
assertEquals(OFTableName.NAME, OFTableName.getValue("name"));
assertEquals(OFTableName.POST, OFTableName.getValue("post"));
assertEquals(OFTableName.PREP, OFTableName.getValue("prep"));
assertEquals(OFTableName.VHEA, OFTableName.getValue("vhea"));
assertEquals(OFTableName.VMTX, OFTableName.getValue("vmtx"));
// Test that we can store a random table name and it will not fail or throw an error.
OFTableName test = OFTableName.getValue("random");
assertTrue(test instanceof OFTableName);
}
/**
* This class overrides hashCode() - we need to ensure it works properly by instantiating two
* objects and comparing their hash-codes.
* @exception IllegalAccessException error
*/
@Test
public void testHashCode() throws IllegalAccessException {
OFTableName a = OFTableName.getValue("testObject");
OFTableName b = OFTableName.getValue("testObject");
assertTrue(a.hashCode() == b.hashCode());
OFTableName c = OFTableName.getValue("fail");
assertFalse(a.hashCode() == c.hashCode());
}
/**
* This class overrides equals(object) - we need to test:
* 1) Reflexivity
* 2) Symmetry
* 3) Transitivity
* 4) Consistency
* 5) check it fails if you put in a null value
* @throws IllegalAccessException error
*/
@Test
public void testEquals() throws IllegalAccessException {
// Reflexivity
OFTableName a = OFTableName.getValue("test");
assertTrue(a.equals(a));
// Symmetry
OFTableName b = OFTableName.getValue("test");
assertTrue(a.equals(b));
assertTrue(b.equals(a));
// Transitivity (tested with symmetry)
// Consistency (test that a == b is true and that a == c fails)
OFTableName c = OFTableName.getValue("fail");
for (int i = 0; i < 100; i++) {
assertTrue(a.equals(b));
assertFalse(a.equals(c));
}
// check with null value
assertFalse(a.equals(null));
}
}