
import java.awt.*;
import java.util.Arrays;

public class GetMaxAdvanceTests {

	Font[] fonts;

	protected void init() {

		GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
		String[] availableFonts = ge.getAvailableFontFamilyNames();
		
		//System.out.println(Arrays.toString(availableFonts));
		System.out.println("Selected Font is "+availableFonts[availableFonts.length - 1]);
		if (availableFonts.length != 0) {
			Font[] fs = { new Font("Z003", Font.BOLD | Font.ITALIC, 1)};

			fonts = fs;
		}
	}

	/* standalone interface */
	public static void main(String argv[]) {
		GetMaxAdvanceTests test = new GetMaxAdvanceTests();
		test.init();
		test.FontMetrics2007();
	}

	/**
	 * Assertion testing for public int getMaxAdvance(), Gets the maximum advance
	 * width of any character in this Font.
	 */
	public void FontMetrics2007() {
		FontMetrics fm;
		Container container = new Container();
		int[] width;
		for (int i = 0; i < fonts.length; i++) {
			fm = container.getFontMetrics(fonts[i]);
			int maxWidth = fm.getMaxAdvance();
			System.out.println("MaxWidth is " + maxWidth);
			if (maxWidth != -1) {
				width = fm.getWidths();
				System.out.println("Width Array is " + Arrays.toString(width));
				for (int j = 0; j < width.length; j++) {
					
					if (width[j] > maxWidth) {
						System.out.println("getMaxAdvance: is not max. " + "component: " + container.toString()
								+ " for font: " + fonts[i].toString() + " getMaxAdvance(): " + maxWidth
								+ " getWidths()[" + j + "]: " + width[j]);
					}
				}
			}
		}

	}
}
