[Unicode]   Common Locale Data Repository : Bug Tracking Home | Site Map | Search
 

Changeset 11549


Ignore:
Timestamp:
04/23/15 20:38:10 (4 years ago)
Author:
emmons
Message:

cldrbug 7279: Add test for holes in coverage, and fix a bunch of the coverage related stuff it found.

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/common/supplemental/coverageLevels.xml

    r11527 r11549  
    4444                <coverageVariable key="%collationType80ForTopLangs" value="(buddhist|chinese|hebrew|islamic|islamic-civil|japanese)"/> 
    4545                <coverageVariable key="%collationType80TopLangs" value="(ar|de|en|es|fr|it|ja|ko|nl|pl|pt|ru|th|tr|zh)"/> 
    46                 <coverageVariable key="%collationType100" value="(big5han|dictionary|eor|gb2312han|phonebook|phonetic|pinyin|reformed|searchjl|stroke|traditional|unihan|zhuyin)"/> 
     46                <coverageVariable key="%collationType100" value="(big5han|compat|dictionary|emoji|eor|gb2312han|phonebook|phonetic|pinyin|reformed|searchjl|stroke|traditional|unihan|zhuyin)"/> 
    4747                <coverageVariable key="%collationAlternateValues" value="(non-ignorable|shifted)"/> 
    4848                <coverageVariable key="%collationCases" value="(upper|lower)"/> 
     
    5050                <coverageVariable key="%collationYesNoOptions" value="(colBackwards|colCaseFirst|colCaseLevel|colHiraganaQuaternary|colNormalization|colNumeric)"/> 
    5151                <coverageVariable key="%compactDecimalTypes" value="(10{3,14})"/> 
    52                 <coverageVariable key="%contextTypes" value="(format|stand-alone)"/> 
     52        <coverageVariable key="%compoundUnitTypes" value="per"/> 
     53        <coverageVariable key="%contextTypes" value="(format|stand-alone)"/> 
    5354                <coverageVariable key="%currency30" value="(XXX)"/> 
    5455                <coverageVariable key="%currency40" value="(BRL|CNY|EUR|GBP|INR|JPY|RUB|USD)"/> 
     
    5859                <coverageVariable key="%currency100" value="(AFA|ADP|ALK|AO[KNR]|AR[ALMP]|ATS|AZM|BA[DN]|BE[CFL]|BG[LM]|BGO|BO[LPV]|BR[BCENRZ]|BUK|BYB|CH[EW]|CL[EF]|CNX|COU|CS[DK]|CYP|DDM|DEM|EC[SV]|EEK|ES[ABP]|FIM|FRF|GEK|GHC|GNS|GQE|GRD|GW[EP]|HRD|IEP|IL[PR]|ISJ|ITL|KR[HO]|LSL|LT[LT]|LU[CFL]|LV[LR]|MAF|MCF|MDC|MGF|MKN|MLF|MT[LP]|MVP|MX[PV]|MZ[EM]|NIC|NLG|PE[IS]|PLZ|PTE|RHD|ROL|RUR|SD[DP]|SIT|SKK|SRG|SUR|SVC|TJR|TMM|TPE|TRL|UAK|UGS|US[NS]|UY[IP]|VEB|VNN|XA[GU]|XB[ABCD]|XDR|XEU|XF[OU]|XP[DT]|XRE|XSU|XTS|XUA|YDD|YU[DMNR]|ZAL|ZMK|ZR[NZ]|ZW[DLR])"/> 
    5960                <coverageVariable key="%cyclicNameTypes" value="([1-9]?[0-9])"/> 
    60                 <coverageVariable key="%dateFormatItems" value="((d|Ed|EEEEd)|((Gy|y|yyyy)?(M|Md|MEd|MEEEEd|MMM|MMMd|MMMEd|MMMEEEEd|MMMM|MMMMd|MMMMEd|MMMMEEEEd))|((Gy|y|yyyy)(QQQ|QQQQ)?))"/> 
    61                 <coverageVariable key="%dateFormatItemsAll" value="(G{0,5}y{0,4}Q{0,4}(M|L){0,5}(E|c){0,5}d{0,2}(H|h){0,2}m{0,2}s{0,2}(v|z|Z){0,4})"/> 
     61                <coverageVariable key="%dateFormatItems" value="((E|d|Ed|EEEEd)|((Gy|y|yyyy|U)?(M|Md|MEd|MEEEEd|MMM|MMMd|MMMEd|MMMEEEEd|MMMM|MMMMd|MMMMEd|MMMMEEEEd))|((Gy|y|yyyy)(QQQ|QQQQ)?))"/> 
     62                <coverageVariable key="%dateFormatItemsAll" value="(G{0,5}(y|U){0,4}Q{0,4}(M|L){0,5}(E|c){0,5}d{0,2}(H|h){0,2}m{0,2}s{0,2}(v|z|Z){0,4})"/> 
    6263                <coverageVariable key="%dateTimeFormatLengths" value="(full|long|medium|short)"/> 
    6364                <coverageVariable key="%fullMedium" value="(full|medium)"/> 
     
    7172                <coverageVariable key="%ellipsisTypes" value="(word-)?(initial|medial|final)"/> 
    7273                <coverageVariable key="%exemplarTypes" value="(auxiliary|index|punctuation)"/> 
     74        <coverageVariable key="%hcTypes80" value="h(11|12|23|24)"/> 
    7375                <coverageVariable key="%intervalFormatDateItems" value="(d|y|y?(M(MM)?)(E?d)?|y?MMMM)"/> 
    7476                <coverageVariable key="%intervalFormatTimeItems" value="((h|H)m?v?)"/> 
     
    7678                <coverageVariable key="%islamicCalendarTerritories" value="(AE|AF|BH|DJ|DZ|EG|EH|ER|IL|IQ|IR|JO|KM|KW|LB|LY|MA|MR|OM|PS|QA|SA|SD|SY|TN|YE)"/> 
    7779                <coverageVariable key="%japaneseEras" value="([0-9]{1,3})"/> 
    78                 <coverageVariable key="%keys80" value="(calendar|collation|currency|lb|numbers)"/> 
    79                 <coverageVariable key="%keys100" value="(col(Alternate|Backwards|CaseFirst|CaseLevel|HiraganaQuaternary|Normalization|Numeric|Reorder|Strength)|timezone|va|variableTop|x)"/> 
     80                <coverageVariable key="%keys80" value="(calendar|collation|currency|fw|hc|lb|ms|numbers)"/> 
     81                <coverageVariable key="%keys100" value="(col(Alternate|Backwards|CaseFirst|CaseLevel|HiraganaQuaternary|Normalization|Numeric|Reorder|Strength)|kv|timezone|va|variableTop|x)"/> 
    8082                <coverageVariable key="%language30" value="und"/> 
    8183                <coverageVariable key="%language40" value="(de(_(AT|CH))?|en(_(AU|CA|GB|US))?|es(_(ES|419|MX))?|fr(_(CA|CH))?|it|ja|pt(_(BR|PT))?|ru|zh(_(Hans|Hant))?)"/> 
     
    8688                <coverageVariable key="%language60_NG" value="(ff|ha|ibb|ig|kr|yo)"/> 
    8789                <coverageVariable key="%language60_TD" value="(shu|dzg|kbl|mde|mua|sba)"/> 
    88                 <coverageVariable key="%language80" value="(a[bfkmsz]|a(gq|rn|sa)|b[aegmors]|b(em|ez|gn|rx)|c[aeosvy]|c(gg|hr|kb)|d[az]|d(av|je|sb|ua|yo)|e[elotu]|ebu|f[aijoy]|fil|g[alnuv]|g(ag|sw|uz)|haw?|h[ertuy]|hsb|i[gisu]|jv|j(go|mc)|k[aiklmnsuwy]|k(ab|am|de|ea|hq|ln|oi|ok|pv|s[bf])|l[abgnotuv]|l(ag|be|kt|u[oy])|m[gkilnrsty]|m(as|dh|er|fe|g[ho]|oh|ua)|n[bden]|n(aq|mg|qo|us|yn)|o[mr]|p[as]|quc?|r[mnw]|ro(_MD)?|r(of|wk)|s[adegiklnoqruvw]|s(aq|bp|e[hs]|hi|m[ajns]|wc)|t[aegikot]|t(eo|sg|wq|zm)|u[gkrz]|uli|vi|v(ai|un)|wo|xh|xog|yo|zu|z(dj|gh|xx))"/> 
     90                <coverageVariable key="%language80" value="(a[bfkmsz]|a(gq|rn|sa)|b[aegmors]|b(em|ez|gn|rx)|c[aeosvy]|c(gg|hr|kb)|d[az]|d(av|je|sb|ua|yo)|e[elotu]|ebu|f[aijoy]|fil|g[alnuv]|g(ag|sw|uz)|haw?|h[ertuy]|hsb|i[gisu]|jv|j(go|mc)|k[aiklmnsuwy]|k(ab|am|de|ea|hq|ln|oi|ok|pv|s[bf])|l[abgnotuv]|l(ag|be|kt|u[oy])|m[gkilnrsty]|m(as|dh|er|fe|g[ho]|oh|ua)|n[bden]|n(aq|mg|qo|us|yn)|o[mr]|p[as]|quc?|r[mnw]|ro(_MD)?|r(of|wk)|s[adegiklnoqruvw]|s(aq|bp|e[hs]|hi|m[ajns]|wc)|t[aegikot]|t(eo|sg|wq|zm)|u[gkrz]|uli|vi|v(ai|un)|wbp|wo|xh|xog|yo|zu|z(dj|gh|xx))"/> 
    8991                <coverageVariable key="%language100_a_m" value="(aa|ac[eh]|ad[ay]|aeb?|af[ah]|ain|ak[kz]|al[egnt]|an[gp]?|apa|ar[copqtwyz]|as[et]|ath|aus|avk?|awa|ay|ba[dilnstx]|azb|bar|bb[cj]|be[jrw]|bf[dq]|bho?|bkm|bi[kn]?|bjn|bla|bnt|bpy|bqi|br[ah]|bss|btk|bu[amg]|bxr|by[nv]|ca[diruy]|cch|ce[bl]|ch[bgkmnopy]?|cmc|cop|cp[efps]|cr[hp]?|csb|cus?|da[kry]|de[ln]|dgr|din|doi|dra|dtp|dum|dv|dyu|dzg|efi|eg[ly]|eka|elx|enm|esu|ewo|ext|fa[nt]|ff|fi[tu]|fon|fr[cmoprs]|fur|ga[agny]|gb[az]|gd|ge[mz]|gil|glk|gmh|go[hmnrt]|gr[bc]|gu[cr]|gwi|ha[ik]|hi[flmt]|hmn|ho|hsn|hup|hz|ia|ib[ab]|ie|ijo|ik|ilo|in[ceh]|io|ir[ao]|izh|jam|jbo|jpr|jrb|jut|ka[acjrw]|kb[dl]|kc[bg]|ken|kfo|kgp?|kh[aiow]|kiu|kkj|kj|kmb|ko[is]|kpe|kr[cijlou]?|ksh|ku[mt]|kv|la[dhm]|lez|lfn|li[jv]?|lmo|lo[lz]|ltg|lu[ains]|lz[hz]|ma[dfgiknp]|md[efr]|men|mga|mh|mi[cns]|mkh|mn[cio]|mos|mrj|mu[lns]|mw[lrv]|my[env]|mzn)"/> 
    9092                <coverageVariable key="%language100_n_z" value="(na[hinp]?|nds|new|ng|ni[acu]|njo|nnh|no[gnv]?|nr|nso|nub|nv|nwc|ny[mo]?|nzi|o[cj]|osa?|ot[ao]|pa[aglmpu]|pcd|pd[ct]|peo|pfl|ph[in]|pi|pms|pnt|pon|pr[ago]|qug|ra[jpr]|rgn|rif|ro[am]|root|rtm|ru[egp]|sa[dhilmstz]|sba|sc[no]?|sdc|se[eilm]|sg[ans]|sh[nu]?|si[dot]|sl[aiy]|sm|snk|so[gn]|sr[nr]|ss[ay]?|stq?|su[ksx]|swb|sy[cr]|szl|tai|tcy|te[mrt]|ti[gv]|tk[lr]|tl[hiy]?|tmh|tn|tog|tpi|tr[uv]|ts[di]?|ttt|tu[mpt]|tvl|tw|tyv?|udm|uga|umb|ve[cp]?|vls|vmf||vot?|vro|wa[eklrs]?|wen|wuu|xal|xmf|ya[opv]|ybb|yi|ypk|yrl|yue|zap?|zbl|ze[an]|znd|zun|zza)"/> 
     
    112114                <coverageVariable key="%miscPatternTypes" value="(atLeast|range)"/> 
    113115                <coverageVariable key="%monthTypes" value="(1[0-3]?|[2-9])"/> 
     116        <coverageVariable key="%msTypes80" value="(metric|u[ks]system)"/> 
    114117                <coverageVariable key="%numberingSystem80" value="(arab(ext)?|armn(low)?|beng|deva|ethi|fullwide|geor|grek(low)?|gujr|guru|hanidec|han[st](fin)?|hebr|jpan(fin)?|khmr|knda|laoo|mlym|mymr|orya|roman(low)?|taml(dec)?|telu|thai|tibt)"/> 
    115118                <coverageVariable key="%numberingSystem100" value="(finance|native|traditional|bali|brah|cakm|cham|hanidays|java|kali|lana(tham)?|lepc|limb|mong|mtei|mymrshan|nkoo|olck|osma|saur|shrd|sora|sund|takr|talu|vaii)"/> 
     
    142145                <coverageVariable key="%unitLengths" value="(long|short|narrow)"/> 
    143146                <coverageVariable key="%unitNonNarrowLengths" value="(long|short)"/> 
    144                 <coverageVariable key="%unitsCommonMetric" value="(length-(centi|milli|kilo)?meter|mass-(kilo)?gram|temperature-celsius|speed-kilometer-per-hour|volume-liter)"/> 
     147                <coverageVariable key="%unitsCommonMetric" value="(consumption-liter-per-100kilometers|length-(centi|milli|kilo)?meter|mass-(kilo)?gram|temperature-celsius|speed-kilometer-per-hour|volume-liter)"/> 
    145148                <coverageVariable key="%unitsCommonUS" value="(length-(inch|foot|yard|mile)|mass-(ounce|pound)|temperature-fahrenheit|speed-mile-per-hour)"/> 
    146149                <coverageVariable key="%unitsEnglish" value="(length-fathom|length-furlong|mass-stone|volume-bushel)"/> 
     
    434437                <coverageLevel inLanguage="%collationType80TopLangs" value="modern" match="localeDisplayNames/types/type[@type='%collationType80ForTopLangs'][@key='collation']"/> 
    435438                <coverageLevel value="modern" match="localeDisplayNames/types/type[@type='%numberingSystem80'][@key='numbers']"/> 
    436                 <coverageLevel value="modern" match="localeDisplayNames/types/type[@type='%lbTypes80'][@key='lb']"/> 
     439        <coverageLevel value="modern" match="localeDisplayNames/types/type[@type='%lbTypes80'][@key='lb']"/> 
     440        <coverageLevel value="modern" match="localeDisplayNames/types/type[@type='%hcTypes80'][@key='hc']"/> 
     441        <coverageLevel value="modern" match="localeDisplayNames/types/type[@type='%msTypes80'][@key='ms']"/> 
    437442                <coverageLevel value="modern" match="dates/calendars/calendar[@type='gregorian']/days/dayContext[@type='%contextTypes']/dayWidth[@type='short']/day[@type='%dayTypes']"/> 
    438443                <coverageLevel value="modern" match="dates/calendars/calendar[@type='gregorian']/dateTimeFormats/availableFormats/dateFormatItem[@id='%dateFormatItemsAll']"/> 
     
    496501                <coverageLevel value="modern" match="characters/ellipsis[@type='%ellipsisTypes']"/> 
    497502                <coverageLevel value="modern" match="characters/moreInformation"/> 
    498                 <coverageLevel value="modern" match="numbers/decimalFormats[@numberSystem='latn']/decimalFormatLength[@type='%shortLong']/decimalFormat[@type='standard']/pattern[@type='%compactDecimalTypes'][@count='${Target-Plurals}']"/> 
     503        <coverageLevel value="modern" match="numbers/decimalFormats[@numberSystem='latn']/decimalFormatLength[@type='%shortLong']/decimalFormat[@type='standard']/pattern[@type='%compactDecimalTypes'][@count='${Target-Plurals}']"/> 
     504        <coverageLevel value="modern" match="numbers/currencyFormats[@numberSystem='latn']/currencyFormatLength[@type='short']/currencyFormat[@type='standard']/pattern[@type='%compactDecimalTypes'][@count='${Target-Plurals}']"/> 
    499505                <coverageLevel value="modern" match="units/unitLength[@type='%unitNonNarrowLengths']/unit[@type='%unitsNonEnglish']/unitPattern[@count='${Target-Plurals}']"/> 
    500506                <coverageLevel value="modern" match="units/unitLength[@type='%unitNonNarrowLengths']/unit[@type='%unitsNonEnglish']/displayName"/> 
    501                 <coverageLevel value="modern" match="units/unitLength[@type='%unitNonNarrowLengths']/unit[@type='%unitsNonEnglish']/perUnitPattern"/> 
     507        <coverageLevel value="modern" match="units/unitLength[@type='%unitNonNarrowLengths']/unit[@type='%unitsNonEnglish']/perUnitPattern"/> 
     508        <coverageLevel value="modern" match="units/unitLength[@type='%unitLengths']/compoundUnit[@type='%compoundUnitTypes']/compoundUnitPattern"/> 
    502509                <coverageLevel inLanguage="en" value="modern" match="units/unitLength[@type='%unitLengths']/unit[@type='%unitsEnglish']/unitPattern[@count='${Target-Plurals}']"/> 
    503510                <coverageLevel inLanguage="en" value="modern" match="units/unitLength[@type='%unitLengths']/unit[@type='%unitsEnglish']/displayName"/> 
     
    513520                <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='gregorian']/eras/eraNarrow/era[@type='(0|1)']"/> 
    514521                <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='gregorian']/eras/eraNarrow/era[@type='(0|1)'][@alt='variant']"/> 
    515                 <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='(buddhist|ethiopic-amete-alem|hebrew|indian|islamic|persian)']/eras/eraAbbr/era[@type='0']"/> 
    516                 <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='(buddhist|ethiopic-amete-alem|hebrew|indian|islamic|persian)']/eras/eraNames/era[@type='0']"/> 
    517                 <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='(coptic|ethiopic|roc)']/eras/eraAbbr/era[@type='(0|1)']"/> 
    518                 <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='(coptic|ethiopic|roc)']/eras/eraNames/era[@type='(0|1)']"/> 
    519                 <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='japanese']/eras/eraAbbr/era[@type='%japaneseEras']"/> 
     522        <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='(buddhist|ethiopic-amete-alem|hebrew|indian|islamic|persian)']/eras/eraAbbr/era[@type='0']"/> 
     523        <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='(buddhist|ethiopic-amete-alem|hebrew|indian|islamic|persian)']/eras/eraNames/era[@type='0']"/> 
     524        <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='(buddhist|ethiopic-amete-alem|hebrew|indian|islamic|persian)']/eras/eraNarrow/era[@type='0']"/> 
     525        <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='(coptic|ethiopic|roc)']/eras/eraAbbr/era[@type='(0|1)']"/> 
     526        <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='(coptic|ethiopic|roc)']/eras/eraNames/era[@type='(0|1)']"/> 
     527        <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='(coptic|ethiopic|roc)']/eras/eraNarrow/era[@type='(0|1)']"/> 
     528        <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='japanese']/eras/eraAbbr/era[@type='%japaneseEras']"/> 
     529        <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='japanese']/eras/eraNames/era[@type='%japaneseEras']"/> 
     530        <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='japanese']/eras/eraNarrow/era[@type='%japaneseEras']"/> 
    520531                <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='(buddhist|chinese|dangi|hebrew|islamic|japanese|roc)']/dateFormats/dateFormatLength[@type='%dateTimeFormatLengths']/dateFormat%stdPattern"/> 
    521532                <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='japanese']/dateTimeFormats/dateTimeFormatLength[@type='%dateTimeFormatLengths']/dateTimeFormat%stdPattern"/> 
     
    524535                <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='%calendarType100ForDateFormats']/dateTimeFormats/dateTimeFormatLength[@type='%dateTimeFormatLengths']/dateTimeFormat%stdPattern"/> 
    525536                <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='%calendarType100ForDateFormats']/dateTimeFormats/availableFormats/dateFormatItem[@id='%dateFormatItems']"/> 
    526                 <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='%calendarType100ForDateFormats']/dateTimeFormats/intervalFormats/intervalFormatItem[@id='%intervalFormatDateItems']/greatestDifference[@id='%intervalFormatGDiff']"/> 
     537        <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='%calendarType100ForDateFormats']/dateTimeFormats/intervalFormats/intervalFormatItem[@id='%intervalFormatDateItems']/greatestDifference[@id='%intervalFormatGDiff']"/> 
     538        <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='%calendarType100ForDateFormats']/dateTimeFormats/intervalFormats/intervalFormatFallback"/> 
    527539                <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='%calendarTypeUniqueNonGregoMonths']/months/monthContext[@type='%contextTypes']/monthWidth[@type='%allWidths']/month[@type='%monthTypes']"/> 
    528540                <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='hebrew']/months/monthContext[@type='%contextTypes']/monthWidth[@type='%allWidths']/month[@type='7'][@yeartype='leap']"/> 
    529                 <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='(chinese|dangi)']/monthPatterns/monthPatternContext[@type='format']/monthPatternWidth[@type='wide']/monthPattern[@type='leap']"/> 
     541                <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='(chinese|dangi)']/monthPatterns/monthPatternContext[@type='format']/monthPatternWidth[@type='%allWidths']/monthPattern[@type='leap']"/> 
    530542                <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='(chinese|dangi)']/monthPatterns/monthPatternContext[@type='numeric']/monthPatternWidth[@type='all']/monthPattern[@type='leap']"/> 
    531                 <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='(chinese|dangi)']/monthPatterns/monthPatternContext[@type='stand-alone']/monthPatternWidth[@type='narrow']/monthPattern[@type='leap']"/> 
     543                <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='(chinese|dangi)']/monthPatterns/monthPatternContext[@type='stand-alone']/monthPatternWidth[@type='%allWidths']/monthPattern[@type='leap']"/> 
    532544                <coverageLevel value="comprehensive" match="dates/calendars/calendar[@type='(chinese|dangi)']/cyclicNameSets/cyclicNameSet[@type='(dayParts|years|zodiacs|solarTerms)']/cyclicNameContext[@type='format']/cyclicNameWidth[@type='abbreviated']/cyclicName[@type='%cyclicNameTypes']"/> 
    533545                <coverageLevel value="comprehensive" match="localeDisplayNames/languages/language[@type='%language100_a_m']"/> 
     
    549561                <coverageLevel value="comprehensive" match="localeDisplayNames/types/type[@type='posix'][@key='va']"/> 
    550562                <coverageLevel value="comprehensive" match="localeDisplayNames/transformNames/transformName[@type='%transformNameTypes']"/> 
     563        <coverageLevel value="comprehensive" match="numbers/symbols[@numberSystem='latn']/list"/> 
    551564                <coverageLevel value="comprehensive" match="numbers/currencies/currency[@type='%currency30']/symbol"/> 
    552565                <coverageLevel value="comprehensive" match="numbers/currencies/currency[@type='%currency100']/symbol"/> 
     
    554567                <coverageLevel value="comprehensive" match="numbers/currencies/currency[@type='%currency100']/displayName"/> 
    555568                <coverageLevel value="comprehensive" match="numbers/currencies/currency[@type='%currency100']/displayName[@count='${Target-Plurals}']"/> 
     569        <coverageLevel value="comprehensive" match="dates/fields/field[@type='%relativeTimeTypes']/relative[@type='(-1|0|1)']"/>         
    556570                <coverageLevel value="comprehensive" match="dates/timeZoneNames/metazone[@type='%metazone100']/long/generic"/> 
    557571                <coverageLevel value="comprehensive" match="dates/timeZoneNames/metazone[@type='%metazone100']/long/standard"/> 
  • trunk/common/supplemental/supplementalMetadata.xml

    r11516 r11549  
    7474                udm ug uga uk umb und ur uz 
    7575                vai ve vec vep vi vls vmf vo vot vro vun 
    76                 wa wae wal war was wo wuu 
     76                wa wae wal war was wbp wo wuu 
    7777                xal xh xmf xog 
    7878                yao yap yav ybb yi yo yrl yue 
  • trunk/tools/cldr-unittest/src/org/unicode/cldr/unittest/TestCoverageLevel.java

    r11527 r11549  
    2121import org.unicode.cldr.util.ChainedMap.M4; 
    2222import org.unicode.cldr.util.Counter2; 
     23import org.unicode.cldr.util.DtdType; 
    2324import org.unicode.cldr.util.LanguageTagParser; 
    2425import org.unicode.cldr.util.Level; 
     26import org.unicode.cldr.util.LogicalGrouping; 
    2527import org.unicode.cldr.util.PathHeader; 
    2628import org.unicode.cldr.util.StandardCodes; 
     
    472474    } 
    473475 
     476    public void TestCoverageCompleteness() { 
     477        final Set<String> inactiveMetazones = new HashSet<String>(Arrays.asList("Bering", "Dominican", "Shevchenko", "Alaska_Hawaii", "Yerevan", 
     478            "Africa_FarWestern", "British", "Sverdlovsk", "Karachi", "Malaya", "Oral", "Frunze", "Dutch_Guiana", "Irish", "Uralsk", "Tashkent", "Kwajalein", 
     479            "Yukon", "Ashkhabad", "Kizilorda", "Kuybyshev", "Baku", "Dushanbe", "Goose_Bay", "Liberia", "Samarkand", "Tbilisi", "Borneo", "Greenland_Central", 
     480            "Dacca", "Aktyubinsk", "Turkey", "Urumqi")); 
     481        final Set<String> calendarsWithoutUniqueMonthNames = new HashSet<String>(Arrays.asList("buddhist", "ethiopic-amete-alem", "generic", "islamic-civil", "islamic-rgsa", "islamic-tbla", "islamic-umalqura", "japanese", "roc")); 
     482        final Set<String> calendarType100ForDateFormats = new HashSet<String>(Arrays.asList("buddhist", "chinese", "coptic", "dangi", "ethiopic", "gregorian", "generic", "hebrew", "indian", "islamic", "japanese", "persian", "roc")); 
     483        SupplementalDataInfo sdi = testInfo.getSupplementalDataInfo(); 
     484        CLDRFile english = testInfo.getEnglish(); 
     485        XPathParts xpp = new XPathParts(); 
     486        for (String path : english.fullIterable()) { 
     487            xpp.set(path); 
     488            if (path.endsWith("/alias") || path.matches("//ldml/(identity|contextTransforms|layout)/.*")) { 
     489                continue; 
     490            } 
     491            if (sdi.isDeprecated(DtdType.ldml, path)) { 
     492                continue; 
     493            } 
     494            if (path.startsWith("//ldml/numbers")) { 
     495                // Paths in numbering systems outside "latn" are specifically excluded. 
     496                String numberingSystem = xpp.findFirstAttributeValue("numberSystem"); 
     497                if (!"latn".equals(numberingSystem)) { 
     498                    continue; 
     499                } 
     500                if (path.contains("/currencySpacing/")) { 
     501                    continue; 
     502                } 
     503            } 
     504            else if (path.startsWith("//ldml/dates/timeZoneNames/zone")) { 
     505                String zoneType = xpp.findAttributeValue("zone", "type"); 
     506                if (zoneType.startsWith("Etc/GMT") && path.endsWith("exemplarCity")) { 
     507                    continue; 
     508                } 
     509                // We don't survey for short timezone names 
     510                if (path.contains("/short/")) { 
     511                    continue; 
     512                } 
     513            } else if (path.startsWith("//ldml/dates/timeZoneNames/metazone")) { 
     514                // We don't survey for short metazone names 
     515                if (path.contains("/short/")) { 
     516                    continue; 
     517                } 
     518                String mzName = xpp.findAttributeValue("metazone", "type"); 
     519                // Skip inactive metazones. 
     520                if (inactiveMetazones.contains(mzName)) { 
     521                    continue; 
     522                } 
     523                // Skip paths for daylight or generic mz strings where 
     524                // the mz doesn't use DST. 
     525                if ((path.endsWith("daylight") || path.endsWith("generic")) && 
     526                    !LogicalGrouping.metazonesDSTSet.contains(mzName)) { 
     527                    continue; 
     528                } 
     529            } else if (path.startsWith("//ldml/dates/fields") && 
     530                "variant".equals(xpp.findAttributeValue("displayName", "alt"))) { 
     531                    continue; 
     532            } else if (path.startsWith("//ldml/localeDisplayNames/scripts")) { 
     533                // Skip user defined script codes and alt=short 
     534                String scriptType = xpp.findAttributeValue("script", "type"); 
     535                if (scriptType.startsWith("Q") || "short".equals(xpp.findAttributeValue("script", "alt"))) { 
     536                    continue; 
     537                } 
     538            } else if (path.startsWith("//ldml/localeDisplayNames/types") && 
     539                "short".equals(xpp.findAttributeValue("type", "alt"))) { 
     540                    continue; 
     541            } else if (path.startsWith("//ldml/dates/calendars")) { 
     542                String calType = xpp.findAttributeValue("calendar", "type"); 
     543                // Skip paths for months in calendars that don't have unique month names. 
     544                if (calendarsWithoutUniqueMonthNames.contains(calType) && path.contains("/months/")) { 
     545                    continue; 
     546                } 
     547                // Skip cyclicNameSet stuff in Chinese and Dangi calendars 
     548                if (path.contains("/cyclicNameSets/")) { 
     549                    continue; 
     550                } 
     551                // Skip paths for dateFormats and dateTimeFormats in calendars that don't have unique ones 
     552                if (!calendarType100ForDateFormats.contains(calType) &&  
     553                    (path.contains("/dateTimeFormats/") || 
     554                     path.contains("/dateFormats/"))) { 
     555                    continue; 
     556                } 
     557 
     558                // Skip paths for things that aren't unique outside Gregorian calendar 
     559                if (calType != "gregorian" && 
     560                    (path.contains("/dayPeriods/") || 
     561                        path.contains("/days/") || 
     562                        path.contains("/timeFormats/") || 
     563                        path.contains("/quarters/") || 
     564                        path.contains("appendItems"))) { 
     565                    continue; 
     566                } 
     567                // Skip paths for time format availableFormats outside Gregorian or generic calendar 
     568                if (calType != "gregorian" && calType != "generic" && 
     569                    path.contains("/dateFormatItem")) { 
     570                    String id = xpp.findAttributeValue("dateFormatItem", "id"); 
     571                    if (id.matches(".*[Hhm].*")) { 
     572                        continue;                         
     573                    } 
     574                } 
     575                // Skip all eras for calendars that don't have their own 
     576                if ( calType.matches("generic|islamic-(rgsa|civil|tbla|umalqura)") && 
     577                    path.contains("/eras/")) { 
     578                        continue;                         
     579                } 
     580                // Skip paths for time format intervalFormats outside Gregorian or generic calendar 
     581                if (calType != "gregorian" && calType != "generic" && 
     582                    path.contains("/intervalFormatItem")) { 
     583                    String id = xpp.findAttributeValue("intervalFormatItem", "id"); 
     584                    if (id.matches(".*[Hhm].*")) { 
     585                        continue;                         
     586                    } 
     587                } 
     588            } 
     589            Level lvl = sdi.getCoverageLevel(path, "en"); 
     590            if (lvl == Level.OPTIONAL || lvl == Level.UNDETERMINED) { 
     591                errln("Missing coverage value for path => " + path); 
     592            } 
     593        } 
     594    } 
     595 
    474596    /** 
    475597     * Check that English paths are, except for known cases, at least modern coverage. 
  • trunk/tools/java/org/unicode/cldr/util/PathHeader.java

    r11524 r11549  
    11561156                } 
    11571157            }); 
     1158            functionMap.put("categoryFromKey", new Transform<String, String>() { 
     1159                Map<String, String> fixNames = Builder.with(new HashMap<String, String>()) 
     1160                    .put("lb", "Line Break") 
     1161                    .put("hc", "Hour Cycle") 
     1162                    .put("ms", "Measurement System") 
     1163                    .freeze(); 
     1164                public String transform(String source) { 
     1165                    String fixedName = fixNames.get(source); 
     1166                    return fixedName != null ? fixedName : source; 
     1167                } 
     1168            }); 
    11581169            functionMap.put("languageSection", new Transform<String, String>() { 
    11591170                char[] languageRangeStartPoints = { 'A', 'E', 'K', 'O', 'T' }; 
  • trunk/tools/java/org/unicode/cldr/util/XMLSource.java

    r11522 r11549  
    11941194            "collation", 
    11951195            "currency", 
     1196            "hc", 
    11961197            "lb", 
     1198            "ms", 
    11971199            "numbers" 
    11981200        }; 
     
    12101212            { "cham", "numbers" }, 
    12111213            { "chinese", "calendar" }, 
     1214            { "compat", "collation" }, 
    12121215            { "coptic", "calendar" }, 
    12131216            { "dangi", "calendar" }, 
     
    12151218            { "dictionary", "collation" }, 
    12161219            { "ducet", "collation" }, 
     1220            { "emoji", "collation" }, 
    12171221            { "eor", "collation" }, 
    12181222            { "ethi", "numbers" }, 
     
    12271231            { "gujr", "numbers" }, 
    12281232            { "guru", "numbers" }, 
     1233            { "h11", "hc" }, 
     1234            { "h12", "hc" }, 
     1235            { "h23", "hc" }, 
     1236            { "h24", "hc" }, 
    12291237            { "hanidec", "numbers" }, 
    12301238            { "hans", "numbers" }, 
     
    12551263            { "limb", "numbers" }, 
    12561264            { "loose", "lb" }, 
     1265            { "metric", "ms" }, 
    12571266            { "mlym", "numbers" }, 
    12581267            { "mong", "numbers" }, 
     
    12901299            { "traditional", "collation" }, 
    12911300            { "unihan", "collation" }, 
     1301            { "uksystem", "ms" }, 
     1302            { "ussystem", "ms" }, 
    12921303            { "vaii", "numbers" }, 
    12931304            { "zhuyin", "collation" } }; 
Note: See TracChangeset for help on using the changeset viewer.