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

Changeset 9511


Ignore:
Timestamp:
11/13/13 23:47:58 (4 years ago)
Author:
pedberg
Message:

cldrbug 6760: Test skeleton-pattern hour cycle match for intervalFmts too; fix h-H mismatch in nb intervalFmts

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/common/main/nb.xml

    r9476 r9511  
    18521852                                                </intervalFormatItem> 
    18531853                                                <intervalFormatItem id="h"> 
    1854                                                         <greatestDifference id="a">H–H</greatestDifference> 
    1855                                                         <greatestDifference id="h">H–H</greatestDifference> 
     1854                                                        <greatestDifference id="a">h a – h a</greatestDifference> 
     1855                                                        <greatestDifference id="h">h–h a</greatestDifference> 
    18561856                                                </intervalFormatItem> 
    18571857                                                <intervalFormatItem id="H"> 
     
    18591859                                                </intervalFormatItem> 
    18601860                                                <intervalFormatItem id="hm"> 
    1861                                                         <greatestDifference id="a">H.mm–H.mm</greatestDifference> 
    1862                                                         <greatestDifference id="h">H.mm–H.mm</greatestDifference> 
    1863                                                         <greatestDifference id="m">H.mm–H.mm</greatestDifference> 
     1861                                                        <greatestDifference id="a">h.mm a – h.mm a</greatestDifference> 
     1862                                                        <greatestDifference id="h">h.mm–h.mm a</greatestDifference> 
     1863                                                        <greatestDifference id="m">h.mm–h.mm a</greatestDifference> 
    18641864                                                </intervalFormatItem> 
    18651865                                                <intervalFormatItem id="Hm"> 
     
    18681868                                                </intervalFormatItem> 
    18691869                                                <intervalFormatItem id="hmv"> 
    1870                                                         <greatestDifference id="a">H.mm–H.mm v</greatestDifference> 
    1871                                                         <greatestDifference id="h">H.mm–H.mm v</greatestDifference> 
    1872                                                         <greatestDifference id="m">H.mm–H.mm v</greatestDifference> 
     1870                                                        <greatestDifference id="a">h.mm a – h.mm a v</greatestDifference> 
     1871                                                        <greatestDifference id="h">h.mm–h.mm a v</greatestDifference> 
     1872                                                        <greatestDifference id="m">h.mm–h.mm a v</greatestDifference> 
    18731873                                                </intervalFormatItem> 
    18741874                                                <intervalFormatItem id="Hmv"> 
     
    18771877                                                </intervalFormatItem> 
    18781878                                                <intervalFormatItem id="hv"> 
    1879                                                         <greatestDifference id="a">H–H v</greatestDifference> 
    1880                                                         <greatestDifference id="h">H–H v</greatestDifference> 
     1879                                                        <greatestDifference id="a">h a – h a v</greatestDifference> 
     1880                                                        <greatestDifference id="h">h–h a v</greatestDifference> 
    18811881                                                </intervalFormatItem> 
    18821882                                                <intervalFormatItem id="Hv"> 
  • trunk/tools/java/org/unicode/cldr/test/FlexibleDateFromCLDR.java

    r9342 r9511  
    165165        } 
    166166 
    167         if (path.indexOf("pattern") < 0 && path.indexOf("dateFormatItem") < 0) return; 
     167        if (path.indexOf("pattern") < 0 && path.indexOf("dateFormatItem") < 0 && path.indexOf("intervalFormatItem") < 0) return; 
    168168        // set the am/pm preference 
    169169        if (path.indexOf("timeFormatLength[@type=\"short\"]") >= 0) { 
     
    178178        } 
    179179        if (path.indexOf("dateTimeFormatLength") > 0) return; // exclude {1} {0} 
    180         // add to generator 
    181         try { 
    182             gen.addPattern(value, false, patternInfo); 
    183             switch (patternInfo.status) { 
    184             case PatternInfo.CONFLICT: 
    185                 failureMap.put(path, "Conflicting Patterns: \"" + value + "\"\t&\t\"" + patternInfo.conflictingPattern 
    186                     + "\""); 
    187                 break; 
    188             } 
    189         } catch (RuntimeException e) { 
    190             failureMap.put(path, e.getMessage()); 
     180        if (path.indexOf("intervalFormatItem") < 0) { 
     181            // add to generator 
     182            try { 
     183                gen.addPattern(value, false, patternInfo); 
     184                switch (patternInfo.status) { 
     185                case PatternInfo.CONFLICT: 
     186                    failureMap.put(path, "Conflicting Patterns: \"" + value + "\"\t&\t\"" + patternInfo.conflictingPattern 
     187                        + "\""); 
     188                    break; 
     189                } 
     190            } catch (RuntimeException e) { 
     191                failureMap.put(path, e.getMessage()); 
     192            } 
    191193        } 
    192194        String failure = checkValueAgainstSkeleton(path, value); 
     
    195197        } 
    196198    } 
     199     
     200    private String stripLiterals(String pattern) { 
     201        int i = 0, patlen = pattern.length(); 
     202        StringBuilder stripped = new StringBuilder(patlen); 
     203        boolean inLiteral = false; 
     204        while (i < patlen) { 
     205            char c = pattern.charAt(i++); 
     206            if (c == '\'') { 
     207                inLiteral = !inLiteral; 
     208            } else if (!inLiteral) { 
     209                stripped.append(c); 
     210            } 
     211        } 
     212        return stripped.toString(); 
     213    } 
    197214 
    198215    public String checkValueAgainstSkeleton(String path, String value) { 
    199216        String failure = null; 
     217        String skeleton = null; 
     218        String strippedPattern = null; 
    200219        if (path.contains("dateFormatItem")) { 
    201             String skeleton = (String) parts.set(path).findAttributeValue("dateFormatItem", "id"); // the skeleton 
    202             if (skeleton != null) { 
    203                 String strippedPattern = gen.getSkeleton(value); // the pattern stripped of literals 
    204                 if (skeleton.indexOf('H') >= 0 || skeleton.indexOf('k') >= 0) { // if skeleton uses 24-hour time 
    205                     if (strippedPattern.indexOf('h') >= 0 || strippedPattern.indexOf('K') >= 0) { // but pattern uses 12... 
    206                         failure = "Skeleton uses 24-hour cycle (H,k) but pattern uses 12-hour (h,K)"; 
    207                     } 
    208                 } else if (skeleton.indexOf('h') >= 0 || skeleton.indexOf('K') >= 0) { // if skeleton uses 12-hour time 
    209                     if (strippedPattern.indexOf('H') >= 0 || strippedPattern.indexOf('k') >= 0) { // but pattern uses 24... 
    210                         failure = "Skeleton uses 12-hour cycle (h,K) but pattern uses 24-hour (H,k)"; 
    211                     } 
     220            skeleton = (String) parts.set(path).findAttributeValue("dateFormatItem", "id"); // the skeleton 
     221            strippedPattern = gen.getSkeleton(value); // the pattern stripped of literals 
     222        } else if (path.contains("intervalFormatItem")) { 
     223            skeleton = (String) parts.set(path).findAttributeValue("intervalFormatItem", "id"); // the skeleton 
     224            strippedPattern = stripLiterals(value); // can't use gen on intervalFormat pattern (throws exception) 
     225        } 
     226        if (skeleton != null && strippedPattern != null) { 
     227            if (skeleton.indexOf('H') >= 0 || skeleton.indexOf('k') >= 0) { // if skeleton uses 24-hour time 
     228                if (strippedPattern.indexOf('h') >= 0 || strippedPattern.indexOf('K') >= 0) { // but pattern uses 12... 
     229                    failure = "Skeleton uses 24-hour cycle (H,k) but pattern uses 12-hour (h,K)"; 
     230                } 
     231            } else if (skeleton.indexOf('h') >= 0 || skeleton.indexOf('K') >= 0) { // if skeleton uses 12-hour time 
     232                if (strippedPattern.indexOf('H') >= 0 || strippedPattern.indexOf('k') >= 0) { // but pattern uses 24... 
     233                    failure = "Skeleton uses 12-hour cycle (h,K) but pattern uses 24-hour (H,k)"; 
    212234                } 
    213235            } 
Note: See TracChangeset for help on using the changeset viewer.