commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bruno P. Kinoshita (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (VALIDATOR-433) BigDecimalValidator does not validate "()" negative currency uniformly for all locales
Date Tue, 21 Nov 2017 08:37:00 GMT

    [ 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)

Mime
View raw message