Subversion Repository Public Repository

litesoft

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package org.litesoft.locale;

import org.junit.Test;

import junit.framework.*;

import org.litesoft.core.typeutils.Objects;
import java.util.*;

public class DerivedLocaleGraphTest
{
    private static final List<String> FRENCH_CANADIAN = toCodes( Locale.CANADA_FRENCH, Locale.FRENCH, Locale.CANADA, Locale.ENGLISH );
    private static final List<String> ENGLISH_CANADIAN = toCodes( Locale.CANADA, Locale.ENGLISH );
    private static final List<String> ENGLISH_US = toCodes( Locale.US, Locale.ENGLISH );
    private static final List<String> MEXICAN_US = toCodes( new Locale( "es", "US" ), new Locale( "es", "MX" ), new Locale( "es" ), Locale.US, Locale.ENGLISH );
    private static final List<String> BRITAIN = toCodes( Locale.UK, Locale.ENGLISH );
    private static final List<String> GERMAN = toCodes( Locale.GERMANY, Locale.GERMAN );
    private static final List<String> FRANCE = toCodes( Locale.FRANCE, Locale.FRENCH );
    private static final List<String> ITALY = toCodes( Locale.ITALY, Locale.ITALIAN );
    private static final List<String> JAPAN = toCodes( Locale.JAPAN, Locale.JAPANESE, Locale.ENGLISH );
    private static final List<String> KOREA = toCodes( Locale.KOREA, Locale.KOREAN );
    private static final List<String> CHINA = toCodes( Locale.CHINA, Locale.PRC, Locale.CHINESE, Locale.SIMPLIFIED_CHINESE );
    private static final List<String> TAIWAN = toCodes( Locale.TAIWAN, Locale.TRADITIONAL_CHINESE, Locale.CHINESE, Locale.SIMPLIFIED_CHINESE, Locale.ENGLISH );

    private AbstractLocale[] SUPPORTED = { // Alphabetical
                                           Locale_de_DE.INSTANCE,
                                           Locale_en_US.INSTANCE, // Locale_en_CA.INSTANCE, Locale_en_GB.INSTANCE,
                                           Locale_es_ES.INSTANCE, // Locale_es_MX.INSTANCE,
                                           Locale_fr_FR.INSTANCE, // Locale_fr_CA.INSTANCE,
                                           Locale_it_IT.INSTANCE,
                                           Locale_ja_JP.INSTANCE,
                                           Locale_ko_KR.INSTANCE,
                                           Locale_zh_CN.INSTANCE, // Locale_zh_TW.INSTANCE,
    };

    @Test
    public void testSelect()
            throws Exception
    {
        expectSelected( Locale_fr_FR.INSTANCE, FRENCH_CANADIAN, null, SUPPORTED );
        expectSelected( Locale_fr_CA.INSTANCE, FRENCH_CANADIAN, Locale_fr_CA.INSTANCE, SUPPORTED );
        expectSelected( Locale_en_CA.INSTANCE, FRENCH_CANADIAN, Locale_en_CA.INSTANCE, Locale_en_US.INSTANCE );
        expectSelected( Locale_en_US.INSTANCE, FRENCH_CANADIAN, Locale_en_GB.INSTANCE, Locale_en_US.INSTANCE );

        expectSelected( Locale_en_US.INSTANCE, ENGLISH_CANADIAN, null, SUPPORTED );
        expectSelected( Locale_en_US.INSTANCE, ENGLISH_CANADIAN, Locale_fr_CA.INSTANCE, SUPPORTED );
        expectSelected( Locale_en_CA.INSTANCE, ENGLISH_CANADIAN, Locale_en_CA.INSTANCE, SUPPORTED );
        expectSelected( Locale_en_US.INSTANCE, ENGLISH_CANADIAN, Locale_en_GB.INSTANCE, SUPPORTED );

        expectSelected( Locale_en_US.INSTANCE, ENGLISH_US, Locale_en_US.INSTANCE );
        expectSelected( Locale_en_US.INSTANCE, ENGLISH_US, null, SUPPORTED );
        expectSelected( Locale_en_US.INSTANCE, ENGLISH_US, Locale_en_GB.INSTANCE, SUPPORTED );
        expectSelected( Locale_en_US.INSTANCE, ENGLISH_US, Locale_en_CA.INSTANCE, SUPPORTED );

        expectSelected( Locale_es_ES.INSTANCE, MEXICAN_US, null, SUPPORTED );
        expectSelected( Locale_es_MX.INSTANCE, MEXICAN_US, Locale_es_MX.INSTANCE, SUPPORTED );
        expectSelected( Locale_en_US.INSTANCE, MEXICAN_US, Locale_en_GB.INSTANCE, Locale_en_US.INSTANCE );

        expectSelected( Locale_en_US.INSTANCE, BRITAIN, null, SUPPORTED );
        expectSelected( Locale_en_US.INSTANCE, BRITAIN, Locale_en_CA.INSTANCE, SUPPORTED );
        expectSelected( Locale_en_GB.INSTANCE, BRITAIN, Locale_en_GB.INSTANCE, SUPPORTED );

        expectSelected( Locale_de_DE.INSTANCE, GERMAN, null, SUPPORTED );
        expectSelected( Locale_de_DE.INSTANCE, GERMAN, Locale_zh_TW.INSTANCE, SUPPORTED );
        expectSelected( Locale_en_US.INSTANCE, GERMAN, Locale_en_GB.INSTANCE, Locale_en_US.INSTANCE );

        expectSelected( Locale_fr_FR.INSTANCE, FRANCE, null, SUPPORTED );
        expectSelected( Locale_fr_FR.INSTANCE, FRANCE, Locale_zh_TW.INSTANCE, SUPPORTED );
        expectSelected( Locale_en_US.INSTANCE, FRANCE, Locale_en_GB.INSTANCE, Locale_en_US.INSTANCE );

        expectSelected( Locale_it_IT.INSTANCE, ITALY, null, SUPPORTED );
        expectSelected( Locale_it_IT.INSTANCE, ITALY, Locale_zh_TW.INSTANCE, SUPPORTED );
        expectSelected( Locale_en_US.INSTANCE, ITALY, Locale_en_GB.INSTANCE, Locale_en_US.INSTANCE );

        expectSelected( Locale_ja_JP.INSTANCE, JAPAN, null, SUPPORTED );
        expectSelected( Locale_ja_JP.INSTANCE, JAPAN, Locale_zh_TW.INSTANCE, SUPPORTED );
        expectSelected( Locale_en_US.INSTANCE, JAPAN, Locale_en_GB.INSTANCE, Locale_en_US.INSTANCE );

        expectSelected( Locale_ko_KR.INSTANCE, KOREA, null, SUPPORTED );
        expectSelected( Locale_ko_KR.INSTANCE, KOREA, Locale_zh_TW.INSTANCE, SUPPORTED );
        expectSelected( Locale_en_US.INSTANCE, KOREA, Locale_en_GB.INSTANCE, Locale_en_US.INSTANCE );

        expectSelected( Locale_zh_CN.INSTANCE, CHINA, null, SUPPORTED );
        expectSelected( Locale_zh_CN.INSTANCE, CHINA, Locale_zh_TW.INSTANCE, SUPPORTED );
        expectSelected( Locale_en_US.INSTANCE, CHINA, Locale_en_GB.INSTANCE, Locale_en_US.INSTANCE );

        expectSelected( Locale_zh_CN.INSTANCE, TAIWAN, null, SUPPORTED );
        expectSelected( Locale_zh_TW.INSTANCE, TAIWAN, Locale_zh_TW.INSTANCE, SUPPORTED );
        expectSelected( Locale_en_US.INSTANCE, TAIWAN, Locale_en_GB.INSTANCE, Locale_en_US.INSTANCE );

        List<String> zTonga = toCodes( new Locale( "to", "TO" ), new Locale( "en", "AU" ), Locale.ENGLISH );
        expectSelected( Locale_en_US.INSTANCE, zTonga, null, SUPPORTED );
        expectSelected( Locale_en_US.INSTANCE, zTonga, Locale_zh_TW.INSTANCE, SUPPORTED );
        expectSelected( Locale_en_US.INSTANCE, zTonga, Locale_en_GB.INSTANCE, Locale_en_US.INSTANCE );
    }

    private void expectSelected( AbstractLocale pExpected, List<String> pLocaleCodesToTest, AbstractLocale pAdditionalSupported, AbstractLocale... pSupported )
    {
        Set<AbstractLocale> zSupported = Locales.toSet( pSupported );
        if ( pAdditionalSupported != null )
        {
            zSupported.add( pAdditionalSupported );
        }
        AbstractLocale zSelected = DerivedLocaleGraph.select( zSupported, pLocaleCodesToTest );
        if ( !pExpected.equals( zSelected ) )
        {
            throw new AssertionFailedError( "\n"
                                            + "Expected: " + pExpected + "\n"
                                            + "  Actual: " + zSelected + "\n"
                                            + "Supported: " + Arrays.asList( pSupported ) + "\n"
                                            + "Acceptable: " + pLocaleCodesToTest
            );
        }
    }

    private static List<String> toCodes( Locale... pLocales )
    {
        List<String> zCodes = new ArrayList<>( pLocales.length );
        for ( Locale zLocale : pLocales )
        {
            zCodes.add( AbstractLocale.toCode( zLocale.getLanguage(), zLocale.getCountry() ) );
        }
        return Collections.unmodifiableList( zCodes );
    }
}

Commits for litesoft/trunk/DeviceDesktopTest/src/org/litesoft/locale/DerivedLocaleGraphTest.java

Diff revisions: vs.
Revision Author Commited Message
939 Diff Diff GeorgeS picture GeorgeS Mon 02 Jun, 2014 21:30:31 +0000

Extracting commonfoundation

935 Diff Diff GeorgeS picture GeorgeS Fri 30 May, 2014 20:28:08 +0000

Reformatted.

933 Diff Diff GeorgeS picture GeorgeS Fri 04 Apr, 2014 22:08:13 +0000

Locale Work w/ Tests done!

932 Diff Diff GeorgeS picture GeorgeS Fri 04 Apr, 2014 17:04:48 +0000

Tests

931 Diff Diff GeorgeS picture GeorgeS Tue 01 Apr, 2014 20:11:20 +0000

Locale Support.

930 Diff Diff GeorgeS picture GeorgeS Mon 31 Mar, 2014 01:47:32 +0000

Locale Work...

929 GeorgeS picture GeorgeS Mon 31 Mar, 2014 01:42:14 +0000

Locale Work...