[ 
https://issues.apache.org/jira/browse/VALIDATOR-433?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16260427#comment-16260427
 ] 

Bruno P. Kinoshita commented on VALIDATOR-433:
----------------------------------------------

So, accordingly, your test would have to be:

{code:java}
assertEquals("US negative", negative, validator.validate("(" + US_DOLLAR + 
"1,234.56)", Locale.US));
assertEquals("UK negative", negative, validator.validate("-" + UK_POUND + 
"1,234.56", Locale.UK));
assertEquals("China negative", negative, validator.validate("-" + CHINA_RMB + 
"1,234.56", Locale.CHINA));
assertEquals("Japan negative", negative2, validator.validate("-" + JAPAN_YEN + 
"1,234", Locale.JAPAN));
{code}

To pass, and it would be following what the Locale defines as the negative 
prefix and the negative suffix. You can either change the logic of your 
application to take into consideration how local handles these prefix/suffix 
pairs, or try using a more generic like ¤#,###.##;-¤#,###.##.

Hope that helps,
Bruno

> BigDecimalValidator does not validate "()" negative currency uniformly for 
> all locales
> --------------------------------------------------------------------------------------
>
>                 Key: VALIDATOR-433
>                 URL: https://issues.apache.org/jira/browse/VALIDATOR-433
>             Project: Commons Validator
>          Issue Type: Bug
>          Components: Routines
>    Affects Versions: 1.6
>         Environment: Windows 10, Tomcat 6, Java 8
>            Reporter: John DiPirro
>            Priority: Critical
>         Attachments: CurrencyValidatorTest.java, junitResults.jpg, 
> screenshot-1.png
>
>
> Hi, 
> The following tests fail: 
> final String JAPAN_YEN = (new 
> DecimalFormatSymbols(Locale.JAPAN)).getCurrencySymbol(); 
> final String CHINA_YEN = (new 
> DecimalFormatSymbols(Locale.CHINA)).getCurrencySymbol(); 
> BigDecimal negative = new BigDecimal("-1234.56"); 
> assertEquals("Japan negative", negative, validator.validate("(" + JAPAN_YEN + 
> "1,234.56)", Locale.CHINA)); 
> assertEquals("China negative", negative, validator.validate("(" + CHINA_YEN + 
> "1,234.56)", Locale.CHINA)); 
> Please not that this test do not fail for other locales (US AND UK, for 
> example). 
> Please advise on whether this is an issue, if there is a workaround, etc... 
> Regards, 
> John DiPirro



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to