12d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert// © 2016 and later: Unicode, Inc. and others.
22d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html#License
37935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/**
47935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert *******************************************************************************
57935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Copyright (C) 2001-2013, International Business Machines Corporation and
67935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * others. All Rights Reserved.
77935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert *******************************************************************************
87935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */
97935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpackage com.ibm.icu.dev.test.lang;
107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
112d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubertimport org.junit.Test;
12fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubertimport org.junit.runner.RunWith;
13fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubertimport org.junit.runners.JUnit4;
142d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.dev.test.TestFmwk;
167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.lang.UCharacterDirection;
177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/**
197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert* Testing UCharacterDirection
207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert* @author Syn Wee Quek
217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert* @since July 22 2002
227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert*/
23fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert@RunWith(JUnit4.class)
247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpublic class UCharacterDirectionTest extends TestFmwk
25fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert{
267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    // constructor -----------------------------------------------------------
27fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert
287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    * Private constructor to prevent initialization
307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    */
317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public UCharacterDirectionTest()
327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    {
337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
34fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert
357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    // public methods --------------------------------------------------------
36fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert
377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    * Gets the name of the argument category
397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    * @returns category name
407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    */
412d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    @Test
427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public void TestToString()
437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    {
447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        String name[] = {"Left-to-Right",
45fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert                         "Right-to-Left",
467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "European Number",
477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "European Number Separator",
487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "European Number Terminator",
497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "Arabic Number",
507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "Common Number Separator",
517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "Paragraph Separator",
527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "Segment Separator",
537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "Whitespace",
547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "Other Neutrals",
557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "Left-to-Right Embedding",
567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "Left-to-Right Override",
577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "Right-to-Left Arabic",
587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "Right-to-Left Embedding",
597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "Right-to-Left Override",
607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "Pop Directional Format",
617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "Non-Spacing Mark",
627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "Boundary Neutral",
637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "First Strong Isolate",
647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "Left-to-Right Isolate",
657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "Right-to-Left Isolate",
667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "Pop Directional Isolate",
677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                         "Unassigned"};
68fe77e7203e518f62b5bd8e8c603bca361e9cf47bFredrik Roubert
697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        for (int i = UCharacterDirection.LEFT_TO_RIGHT;
707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            // Placed <= because we need to consider 'Unassigned'
717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            // when it goes out of bounds of UCharacterDirection
727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            i <= UCharacterDirection.CHAR_DIRECTION_COUNT; i++) {
737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert             if (!UCharacterDirection.toString(i).equals(name[i])) {
747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                errln("Error toString for direction " + i + " expected " +
757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                      name[i]);
767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert             }
777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert}
80