Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
55983072
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
3
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
55983072
编写于
6月 28, 2019
作者:
A
andrew
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8040211: Update LSR datafile for BCP 47
Reviewed-by: okutsu, peytoia
上级
e7c56a5f
变更
4
展开全部
隐藏空白更改
内联
并排
Showing
4 changed file
with
916 addition
and
29 deletion
+916
-29
src/share/classes/sun/util/locale/LocaleEquivalentMaps.java
src/share/classes/sun/util/locale/LocaleEquivalentMaps.java
+44
-2
test/java/util/Locale/Bug8040211.java
test/java/util/Locale/Bug8040211.java
+353
-0
test/java/util/Locale/tools/EquivMapsGenerator.java
test/java/util/Locale/tools/EquivMapsGenerator.java
+37
-14
test/java/util/Locale/tools/language-subtag-registry.txt
test/java/util/Locale/tools/language-subtag-registry.txt
+482
-13
未找到文件。
src/share/classes/sun/util/locale/LocaleEquivalentMaps.java
浏览文件 @
55983072
/*
* Copyright (c) 2012, 201
3
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 201
6
, 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
...
...
@@ -43,12 +43,16 @@ final class LocaleEquivalentMaps {
regionVariantEquivMap
=
new
HashMap
<>();
// This is an auto-generated file and should not be manually edited.
// LSR Revision: 2013-09-23
// LSR Revision: 2016-02-10
singleEquivMap
.
put
(
"aam"
,
"aas"
);
singleEquivMap
.
put
(
"aas"
,
"aam"
);
singleEquivMap
.
put
(
"acn"
,
"xia"
);
singleEquivMap
.
put
(
"adp"
,
"dz"
);
singleEquivMap
.
put
(
"adx"
,
"pcr"
);
singleEquivMap
.
put
(
"ami"
,
"i-ami"
);
singleEquivMap
.
put
(
"art-lojban"
,
"jbo"
);
singleEquivMap
.
put
(
"ase"
,
"sgn-us"
);
singleEquivMap
.
put
(
"aue"
,
"ktz"
);
singleEquivMap
.
put
(
"ayx"
,
"nun"
);
singleEquivMap
.
put
(
"bfi"
,
"sgn-gb"
);
singleEquivMap
.
put
(
"bjd"
,
"drl"
);
...
...
@@ -67,12 +71,17 @@ final class LocaleEquivalentMaps {
singleEquivMap
.
put
(
"drl"
,
"bjd"
);
singleEquivMap
.
put
(
"dse"
,
"sgn-nl"
);
singleEquivMap
.
put
(
"dsl"
,
"sgn-dk"
);
singleEquivMap
.
put
(
"dz"
,
"adp"
);
singleEquivMap
.
put
(
"ema"
,
"uok"
);
singleEquivMap
.
put
(
"en-gb-oed"
,
"en-gb-oxendict"
);
singleEquivMap
.
put
(
"en-gb-oxendict"
,
"en-gb-oed"
);
singleEquivMap
.
put
(
"fsl"
,
"sgn-fr"
);
singleEquivMap
.
put
(
"gal"
,
"ilw"
);
singleEquivMap
.
put
(
"gan"
,
"zh-gan"
);
singleEquivMap
.
put
(
"gav"
,
"dev"
);
singleEquivMap
.
put
(
"gsg"
,
"sgn-de"
);
singleEquivMap
.
put
(
"gss"
,
"sgn-gr"
);
singleEquivMap
.
put
(
"gti"
,
"nyc"
);
singleEquivMap
.
put
(
"he"
,
"iw"
);
singleEquivMap
.
put
(
"hle"
,
"sca"
);
singleEquivMap
.
put
(
"hrr"
,
"jal"
);
...
...
@@ -102,28 +111,46 @@ final class LocaleEquivalentMaps {
singleEquivMap
.
put
(
"kgh"
,
"kml"
);
singleEquivMap
.
put
(
"khk"
,
"drh"
);
singleEquivMap
.
put
(
"kml"
,
"kgh"
);
singleEquivMap
.
put
(
"koj"
,
"kwv"
);
singleEquivMap
.
put
(
"ktz"
,
"aue"
);
singleEquivMap
.
put
(
"kwq"
,
"yam"
);
singleEquivMap
.
put
(
"kwv"
,
"koj"
);
singleEquivMap
.
put
(
"kxe"
,
"tvd"
);
singleEquivMap
.
put
(
"lb"
,
"i-lux"
);
singleEquivMap
.
put
(
"lcq"
,
"ppr"
);
singleEquivMap
.
put
(
"lii"
,
"raq"
);
singleEquivMap
.
put
(
"lmm"
,
"rmx"
);
singleEquivMap
.
put
(
"lrr"
,
"yma"
);
singleEquivMap
.
put
(
"meg"
,
"cir"
);
singleEquivMap
.
put
(
"mfs"
,
"sgn-mx"
);
singleEquivMap
.
put
(
"mo"
,
"ro"
);
singleEquivMap
.
put
(
"mom"
,
"cjr"
);
singleEquivMap
.
put
(
"mtm"
,
"ymt"
);
singleEquivMap
.
put
(
"nan"
,
"zh-min-nan"
);
singleEquivMap
.
put
(
"nb"
,
"no-bok"
);
singleEquivMap
.
put
(
"ncs"
,
"sgn-ni"
);
singleEquivMap
.
put
(
"ngv"
,
"nnx"
);
singleEquivMap
.
put
(
"nn"
,
"no-nyn"
);
singleEquivMap
.
put
(
"nnx"
,
"ngv"
);
singleEquivMap
.
put
(
"no-bok"
,
"nb"
);
singleEquivMap
.
put
(
"no-nyn"
,
"nn"
);
singleEquivMap
.
put
(
"nsl"
,
"sgn-no"
);
singleEquivMap
.
put
(
"nun"
,
"ayx"
);
singleEquivMap
.
put
(
"nv"
,
"i-navajo"
);
singleEquivMap
.
put
(
"nyc"
,
"gti"
);
singleEquivMap
.
put
(
"opa"
,
"ibi"
);
singleEquivMap
.
put
(
"oyb"
,
"thx"
);
singleEquivMap
.
put
(
"pcr"
,
"adx"
);
singleEquivMap
.
put
(
"phr"
,
"pmu"
);
singleEquivMap
.
put
(
"pmu"
,
"phr"
);
singleEquivMap
.
put
(
"ppr"
,
"lcq"
);
singleEquivMap
.
put
(
"psr"
,
"sgn-pt"
);
singleEquivMap
.
put
(
"pub"
,
"puz"
);
singleEquivMap
.
put
(
"puz"
,
"pub"
);
singleEquivMap
.
put
(
"pwn"
,
"i-pwn"
);
singleEquivMap
.
put
(
"raq"
,
"lii"
);
singleEquivMap
.
put
(
"ras"
,
"tie"
);
singleEquivMap
.
put
(
"rmx"
,
"lmm"
);
singleEquivMap
.
put
(
"ro"
,
"mo"
);
singleEquivMap
.
put
(
"sca"
,
"hle"
);
singleEquivMap
.
put
(
"sfb"
,
"sgn-be-fr"
);
...
...
@@ -152,24 +179,35 @@ final class LocaleEquivalentMaps {
singleEquivMap
.
put
(
"sgn-us"
,
"ase"
);
singleEquivMap
.
put
(
"sgn-za"
,
"sfs"
);
singleEquivMap
.
put
(
"ssp"
,
"sgn-es"
);
singleEquivMap
.
put
(
"suj"
,
"xsj"
);
singleEquivMap
.
put
(
"swl"
,
"sgn-se"
);
singleEquivMap
.
put
(
"taj"
,
"tsf"
);
singleEquivMap
.
put
(
"tao"
,
"i-tao"
);
singleEquivMap
.
put
(
"tay"
,
"i-tay"
);
singleEquivMap
.
put
(
"thx"
,
"oyb"
);
singleEquivMap
.
put
(
"tie"
,
"ras"
);
singleEquivMap
.
put
(
"tkk"
,
"twm"
);
singleEquivMap
.
put
(
"tlh"
,
"i-klingon"
);
singleEquivMap
.
put
(
"tlw"
,
"weo"
);
singleEquivMap
.
put
(
"tsf"
,
"taj"
);
singleEquivMap
.
put
(
"tsu"
,
"i-tsu"
);
singleEquivMap
.
put
(
"tvd"
,
"kxe"
);
singleEquivMap
.
put
(
"twm"
,
"tkk"
);
singleEquivMap
.
put
(
"uok"
,
"ema"
);
singleEquivMap
.
put
(
"vgt"
,
"sgn-be-nl"
);
singleEquivMap
.
put
(
"weo"
,
"tlw"
);
singleEquivMap
.
put
(
"wuu"
,
"zh-wuu"
);
singleEquivMap
.
put
(
"xch"
,
"cmk"
);
singleEquivMap
.
put
(
"xia"
,
"acn"
);
singleEquivMap
.
put
(
"xsj"
,
"suj"
);
singleEquivMap
.
put
(
"yam"
,
"kwq"
);
singleEquivMap
.
put
(
"yi"
,
"ji"
);
singleEquivMap
.
put
(
"yma"
,
"lrr"
);
singleEquivMap
.
put
(
"ymt"
,
"mtm"
);
singleEquivMap
.
put
(
"yos"
,
"zom"
);
singleEquivMap
.
put
(
"yue"
,
"zh-yue"
);
singleEquivMap
.
put
(
"yug"
,
"yuu"
);
singleEquivMap
.
put
(
"yuu"
,
"yug"
);
singleEquivMap
.
put
(
"zh-cmn-hans"
,
"cmn-hans"
);
singleEquivMap
.
put
(
"zh-cmn-hant"
,
"cmn-hant"
);
singleEquivMap
.
put
(
"zh-gan"
,
"gan"
);
...
...
@@ -182,14 +220,18 @@ final class LocaleEquivalentMaps {
multiEquivsMap
.
put
(
"ccq"
,
new
String
[]
{
"rki"
,
"ybd"
});
multiEquivsMap
.
put
(
"cmn"
,
new
String
[]
{
"zh-guoyu"
,
"zh-cmn"
});
multiEquivsMap
.
put
(
"drw"
,
new
String
[]
{
"prs"
,
"tnf"
});
multiEquivsMap
.
put
(
"gfx"
,
new
String
[]
{
"vaj"
,
"mwj"
,
"oun"
});
multiEquivsMap
.
put
(
"hak"
,
new
String
[]
{
"i-hak"
,
"zh-hakka"
});
multiEquivsMap
.
put
(
"i-hak"
,
new
String
[]
{
"hak"
,
"zh-hakka"
});
multiEquivsMap
.
put
(
"mry"
,
new
String
[]
{
"mst"
,
"myt"
});
multiEquivsMap
.
put
(
"mst"
,
new
String
[]
{
"mry"
,
"myt"
});
multiEquivsMap
.
put
(
"mwj"
,
new
String
[]
{
"vaj"
,
"gfx"
,
"oun"
});
multiEquivsMap
.
put
(
"myt"
,
new
String
[]
{
"mry"
,
"mst"
});
multiEquivsMap
.
put
(
"oun"
,
new
String
[]
{
"vaj"
,
"gfx"
,
"mwj"
});
multiEquivsMap
.
put
(
"prs"
,
new
String
[]
{
"drw"
,
"tnf"
});
multiEquivsMap
.
put
(
"rki"
,
new
String
[]
{
"ccq"
,
"ybd"
});
multiEquivsMap
.
put
(
"tnf"
,
new
String
[]
{
"prs"
,
"drw"
});
multiEquivsMap
.
put
(
"vaj"
,
new
String
[]
{
"gfx"
,
"mwj"
,
"oun"
});
multiEquivsMap
.
put
(
"ybd"
,
new
String
[]
{
"rki"
,
"ccq"
});
multiEquivsMap
.
put
(
"zh-cmn"
,
new
String
[]
{
"cmn"
,
"zh-guoyu"
});
multiEquivsMap
.
put
(
"zh-guoyu"
,
new
String
[]
{
"cmn"
,
"zh-cmn"
});
...
...
test/java/util/Locale/Bug8040211.java
0 → 100644
浏览文件 @
55983072
/*
* Copyright (c) 2016, 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.
*/
/*
* @test
* @bug 8040211
* @summary Checks the IANA language subtag registry data updation
* (LSR Revision: 2016-02-10) with Locale and Locale.LanguageRange
* class methods.
* @run main Bug8040211
*/
import
java.util.ArrayList
;
import
java.util.Iterator
;
import
java.util.Locale
;
import
java.util.List
;
import
java.util.Locale.LanguageRange
;
import
java.util.Locale.FilteringMode
;
import
static
java
.
util
.
Locale
.
FilteringMode
.
EXTENDED_FILTERING
;
public
class
Bug8040211
{
static
boolean
err
=
false
;
public
static
void
main
(
String
[]
args
)
{
testLanguageRange
();
testLocale
();
if
(
err
)
{
throw
new
RuntimeException
(
"Failed."
);
}
}
private
static
void
testLanguageRange
()
{
System
.
out
.
println
(
"Test LanguageRange class parse method..."
);
test_parse
();
}
private
static
void
testLocale
()
{
System
.
out
.
println
(
"Test Locale class methods..."
);
test_filter
();
test_filterTags
();
test_lookup
();
test_lookupTag
();
}
private
static
void
test_parse
()
{
boolean
error
=
false
;
String
str
=
"Accept-Language: aam, adp, aue, ema, en-gb-oed,"
+
" gti, koj, kwq, kxe, lii, lmm, mtm, ngv, oyb, phr, pub,"
+
" suj, taj;q=0.9, yug;q=0.5, gfx;q=0.4"
;
ArrayList
<
LanguageRange
>
expected
=
new
ArrayList
<>();
expected
.
add
(
new
LanguageRange
(
"aam"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"aas"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"adp"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"dz"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"aue"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"ktz"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"ema"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"uok"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"en-gb-oed"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"en-gb-oxendict"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"gti"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"nyc"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"koj"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"kwv"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"kwq"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"yam"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"kxe"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"tvd"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"lii"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"raq"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"lmm"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"rmx"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"mtm"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"ymt"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"ngv"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"nnx"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"oyb"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"thx"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"phr"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"pmu"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"pub"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"puz"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"suj"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"xsj"
,
1.0
));
expected
.
add
(
new
LanguageRange
(
"taj"
,
0.9
));
expected
.
add
(
new
LanguageRange
(
"tsf"
,
0.9
));
expected
.
add
(
new
LanguageRange
(
"yug"
,
0.5
));
expected
.
add
(
new
LanguageRange
(
"yuu"
,
0.5
));
expected
.
add
(
new
LanguageRange
(
"gfx"
,
0.4
));
expected
.
add
(
new
LanguageRange
(
"oun"
,
0.4
));
expected
.
add
(
new
LanguageRange
(
"mwj"
,
0.4
));
expected
.
add
(
new
LanguageRange
(
"vaj"
,
0.4
));
List
<
LanguageRange
>
got
=
LanguageRange
.
parse
(
str
);
if
(!
areEqual
(
expected
,
got
))
{
error
=
true
;
System
.
err
.
println
(
" language parse() test failed."
);
}
if
(
error
)
{
err
=
true
;
System
.
err
.
println
(
" test_parse() failed."
);
}
else
{
System
.
out
.
println
(
" test_parse() passed."
);
}
}
private
static
boolean
areEqual
(
List
<
LanguageRange
>
expected
,
List
<
LanguageRange
>
got
)
{
boolean
error
=
false
;
int
expectedSize
=
expected
.
size
();
int
actualSize
=
got
.
size
();
if
(
expectedSize
!=
actualSize
)
{
error
=
true
;
System
.
err
.
println
(
" Expected size="
+
expectedSize
);
for
(
LanguageRange
lr
:
expected
)
{
System
.
err
.
println
(
" range="
+
lr
.
getRange
()
+
", weight="
+
lr
.
getWeight
());
}
System
.
out
.
println
(
" Actual size="
+
actualSize
);
for
(
LanguageRange
lr
:
got
)
{
System
.
err
.
println
(
" range="
+
lr
.
getRange
()
+
", weight="
+
lr
.
getWeight
());
}
}
else
{
for
(
int
i
=
0
;
i
<
expectedSize
;
i
++)
{
LanguageRange
lr1
=
expected
.
get
(
i
);
LanguageRange
lr2
=
got
.
get
(
i
);
if
(!
lr1
.
getRange
().
equals
(
lr2
.
getRange
())
||
lr1
.
getWeight
()
!=
lr2
.
getWeight
())
{
error
=
true
;
System
.
err
.
println
(
" "
+
i
+
": Expected: range="
+
lr1
.
getRange
()
+
", weight="
+
lr1
.
getWeight
());
System
.
err
.
println
(
" "
+
i
+
": Actual: range="
+
lr2
.
getRange
()
+
", weight="
+
lr2
.
getWeight
());
}
}
}
return
!
error
;
}
private
static
void
test_filter
()
{
boolean
error
=
false
;
String
ranges
=
"mtm-RU, en-gb-oed"
;
String
tags
=
"de-DE, en, mtm-RU, ymt-RU, en-gb-oxendict, ja-JP"
;
FilteringMode
mode
=
EXTENDED_FILTERING
;
List
<
LanguageRange
>
priorityList
=
LanguageRange
.
parse
(
ranges
);
List
<
Locale
>
tagList
=
generateLocales
(
tags
);
String
actualLocales
=
showLocales
(
Locale
.
filter
(
priorityList
,
tagList
,
mode
));
String
expectedLocales
=
"mtm-RU, ymt-RU, en-GB-oxendict"
;
if
(!
expectedLocales
.
equals
(
actualLocales
))
{
error
=
true
;
showErrorMessage
(
"#1 filter("
+
mode
+
")"
,
ranges
,
tags
,
expectedLocales
,
actualLocales
);
}
ranges
=
"phr-*-IN, ja-JP"
;
tags
=
"en, pmu-Guru-IN, ja-Latn-JP, iw"
;
mode
=
EXTENDED_FILTERING
;
priorityList
=
LanguageRange
.
parse
(
ranges
);
tagList
=
generateLocales
(
tags
);
actualLocales
=
showLocales
(
Locale
.
filter
(
priorityList
,
tagList
,
mode
));
expectedLocales
=
"pmu-Guru-IN, ja-Latn-JP"
;
if
(!
expectedLocales
.
equals
(
actualLocales
))
{
error
=
true
;
showErrorMessage
(
"#2 filter("
+
mode
+
")"
,
ranges
,
tags
,
expectedLocales
,
actualLocales
);
}
if
(
error
)
{
err
=
true
;
System
.
out
.
println
(
" test_filter() failed."
);
}
else
{
System
.
out
.
println
(
" test_filter() passed."
);
}
}
private
static
void
test_filterTags
()
{
boolean
error
=
false
;
String
ranges
=
"gti;q=0.2, gfx"
;
String
tags
=
"de-DE, gti, he, nyc, mwj, vaj"
;
List
<
LanguageRange
>
priorityList
=
LanguageRange
.
parse
(
ranges
);
List
<
String
>
tagList
=
generateLanguageTags
(
tags
);
String
actualTags
=
showLanguageTags
(
Locale
.
filterTags
(
priorityList
,
tagList
));
String
expectedTags
=
"mwj, vaj, gti, nyc"
;
if
(!
expectedTags
.
equals
(
actualTags
))
{
error
=
true
;
showErrorMessage
(
"filterTags()"
,
ranges
,
tags
,
expectedTags
,
actualTags
);
}
if
(
error
)
{
err
=
true
;
System
.
out
.
println
(
" test_filterTags() failed."
);
}
else
{
System
.
out
.
println
(
" test_filterTags() passed."
);
}
}
private
static
void
test_lookup
()
{
boolean
error
=
false
;
String
ranges
=
"en;q=0.2, yam, rmx;q=0.9"
;
String
tags
=
"de-DE, en, kwq, lmm"
;
List
<
LanguageRange
>
priorityList
=
LanguageRange
.
parse
(
ranges
);
List
<
Locale
>
localeList
=
generateLocales
(
tags
);
String
actualLocale
=
Locale
.
lookup
(
priorityList
,
localeList
).
toLanguageTag
();
String
expectedLocale
=
"kwq"
;
if
(!
expectedLocale
.
equals
(
actualLocale
))
{
error
=
true
;
showErrorMessage
(
"lookup()"
,
ranges
,
tags
,
expectedLocale
,
actualLocale
);
}
if
(
error
)
{
err
=
true
;
System
.
out
.
println
(
" test_lookup() failed."
);
}
else
{
System
.
out
.
println
(
" test_lookup() passed."
);
}
}
private
static
void
test_lookupTag
()
{
boolean
error
=
false
;
String
ranges
=
"en, tsf;q=0.2"
;
String
tags
=
"es, ja-JP, taj"
;
List
<
LanguageRange
>
priorityList
=
LanguageRange
.
parse
(
ranges
);
List
<
String
>
tagList
=
generateLanguageTags
(
tags
);
String
actualTag
=
Locale
.
lookupTag
(
priorityList
,
tagList
);
String
expectedTag
=
"taj"
;
if
(!
expectedTag
.
equals
(
actualTag
))
{
error
=
true
;
showErrorMessage
(
"lookupTag()"
,
ranges
,
tags
,
expectedTag
,
actualTag
);
}
if
(
error
)
{
err
=
true
;
System
.
out
.
println
(
" test_lookupTag() failed."
);
}
else
{
System
.
out
.
println
(
" test_lookupTag() passed."
);
}
}
private
static
List
<
Locale
>
generateLocales
(
String
tags
)
{
if
(
tags
==
null
)
{
return
null
;
}
List
<
Locale
>
localeList
=
new
ArrayList
<>();
if
(
tags
.
equals
(
""
))
{
return
localeList
;
}
String
[]
t
=
tags
.
split
(
", "
);
for
(
String
tag
:
t
)
{
localeList
.
add
(
Locale
.
forLanguageTag
(
tag
));
}
return
localeList
;
}
private
static
List
<
String
>
generateLanguageTags
(
String
tags
)
{
List
<
String
>
tagList
=
new
ArrayList
<>();
String
[]
t
=
tags
.
split
(
", "
);
for
(
String
tag
:
t
)
{
tagList
.
add
(
tag
);
}
return
tagList
;
}
private
static
String
showLanguageTags
(
List
<
String
>
tags
)
{
StringBuilder
sb
=
new
StringBuilder
();
Iterator
<
String
>
itr
=
tags
.
iterator
();
if
(
itr
.
hasNext
())
{
sb
.
append
(
itr
.
next
());
}
while
(
itr
.
hasNext
())
{
sb
.
append
(
", "
);
sb
.
append
(
itr
.
next
());
}
return
sb
.
toString
().
trim
();
}
private
static
String
showLocales
(
List
<
Locale
>
locales
)
{
StringBuilder
sb
=
new
StringBuilder
();
java
.
util
.
Iterator
<
Locale
>
itr
=
locales
.
iterator
();
if
(
itr
.
hasNext
())
{
sb
.
append
(
itr
.
next
().
toLanguageTag
());
}
while
(
itr
.
hasNext
())
{
sb
.
append
(
", "
);
sb
.
append
(
itr
.
next
().
toLanguageTag
());
}
return
sb
.
toString
().
trim
();
}
private
static
void
showErrorMessage
(
String
methodName
,
String
priorityList
,
String
tags
,
String
expectedTags
,
String
actualTags
)
{
System
.
out
.
println
(
"\nIncorrect "
+
methodName
+
" result."
);
System
.
out
.
println
(
" Priority list : "
+
priorityList
);
System
.
out
.
println
(
" Language tags : "
+
tags
);
System
.
out
.
println
(
" Expected value : "
+
expectedTags
);
System
.
out
.
println
(
" Actual value : "
+
actualTags
);
}
}
test/java/util/Locale/tools/EquivMapsGenerator.java
浏览文件 @
55983072
/*
* Copyright (c) 2012, 201
3
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 201
6
, 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
...
...
@@ -21,7 +21,6 @@
* questions.
*/
import
java.io.*
;
import
java.nio.charset.*
;
import
java.nio.file.*
;
import
java.util.*
;
...
...
@@ -156,13 +155,10 @@ public class EquivMapsGenerator {
if
(
subtags
.
length
==
2
)
{
sortedLanguageMap1
.
put
(
subtags
[
0
],
subtags
[
1
]);
sortedLanguageMap1
.
put
(
subtags
[
1
],
subtags
[
0
]);
}
else
if
(
subtags
.
length
==
3
)
{
sortedLanguageMap2
.
put
(
subtags
[
0
],
new
String
[]{
subtags
[
1
],
subtags
[
2
]});
sortedLanguageMap2
.
put
(
subtags
[
1
],
new
String
[]{
subtags
[
0
],
subtags
[
2
]});
sortedLanguageMap2
.
put
(
subtags
[
2
],
new
String
[]{
subtags
[
0
],
subtags
[
1
]});
}
else
if
(
subtags
.
length
>
2
)
{
for
(
int
i
=
0
;
i
<
subtags
.
length
;
i
++)
{
sortedLanguageMap2
.
put
(
subtags
[
i
],
createLangArray
(
i
,
subtags
));
}
}
else
{
throw
new
RuntimeException
(
"New case, need implementation."
+
" A language subtag \""
+
preferred
...
...
@@ -191,8 +187,9 @@ public class EquivMapsGenerator {
+
sortedLanguageMap2
.
size
());
for
(
String
key
:
sortedLanguageMap2
.
keySet
())
{
String
[]
s
=
sortedLanguageMap2
.
get
(
key
);
System
.
out
.
println
(
" "
+
key
+
": \""
+
s
[
0
]
+
"\", \""
+
s
[
1
]
+
"\""
);
if
(
s
.
length
>=
2
)
{
System
.
out
.
println
(
" "
+
key
+
": "
+
generateValuesString
(
s
)
+
""
);
}
}
System
.
out
.
println
(
"\n Sorted map for region and variant subtags. Size="
...
...
@@ -205,6 +202,30 @@ public class EquivMapsGenerator {
System
.
out
.
println
();
}
/* create the array of subtags excluding the subtag at index location */
private
static
String
[]
createLangArray
(
int
index
,
String
[]
subtags
)
{
List
<
String
>
list
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
subtags
.
length
;
i
++)
{
if
(
i
!=
index
)
{
list
.
add
(
subtags
[
i
]);
}
}
return
list
.
toArray
(
new
String
[
list
.
size
()]);
}
private
static
String
generateValuesString
(
String
[]
values
)
{
String
outputStr
=
""
;
for
(
int
i
=
0
;
i
<
values
.
length
;
i
++)
{
if
(
i
!=
values
.
length
-
1
)
{
outputStr
=
outputStr
+
"\""
+
values
[
i
]
+
"\", "
;
}
else
{
outputStr
=
outputStr
+
"\""
+
values
[
i
]
+
"\""
;
}
}
return
outputStr
;
}
private
final
static
String
headerText
=
"final class LocaleEquivalentMaps {\n\n"
+
" static final Map<String, String> singleEquivMap;\n"
...
...
@@ -232,9 +253,11 @@ public class EquivMapsGenerator {
System
.
out
.
println
();
for
(
String
key
:
sortedLanguageMap2
.
keySet
())
{
String
[]
values
=
sortedLanguageMap2
.
get
(
key
);
System
.
out
.
println
(
" multiEquivsMap.put(\""
+
key
+
"\", new String[] {\""
+
values
[
0
]
+
"\", \""
+
values
[
1
]
+
"\"});"
);
if
(
values
.
length
>=
2
)
{
System
.
out
.
println
(
" multiEquivsMap.put(\""
+
key
+
"\", new String[] {"
+
generateValuesString
(
values
)
+
"});"
);
}
}
System
.
out
.
println
();
for
(
String
key
:
sortedRegionVariantMap
.
keySet
())
{
...
...
test/java/util/Locale/tools/language-subtag-registry.txt
浏览文件 @
55983072
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录