<!--
Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.

This code 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 code 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 in the LICENSE file that
accompanied this code).

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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
or visit www.oracle.com if you need additional information or have any
questions.
-->

<html>
<head>
<title> DiacriticsTest </title>
</head>
<body>
<applet code="DiacriticsTest.class" width=350 height=200></applet>

Test run requires the following keyboard layouts to be installed:
Linux OS: English (US, alternative international)
Windows OS: Hungarian

To test JDK-8000423 fix (Linux only!):
please switch to US alternative international layout and try to type diacritics
(using the following combinations: `+e; `+u; etc.)

To test JDK-7197619 fix (Windows only!):
please switch to Hungarian keyboard layout and try to type diacritics 
(Ctrl+Alt+2 e; Ctrl+Alt+2 E)

If you can do that then the test is passed; otherwise failed.
</body>
</html>
