001 package org.apache.tapestry.form.translator; 002 003 import org.apache.tapestry.form.FormComponentContributorTestCase; 004 import org.apache.tapestry.form.IFormComponent; 005 import org.apache.tapestry.form.ValidationMessages; 006 import org.apache.tapestry.valid.ValidationStrings; 007 import org.apache.tapestry.valid.ValidatorException; 008 import static org.easymock.EasyMock.*; 009 import org.testng.annotations.Test; 010 011 import java.math.BigDecimal; 012 import java.util.Locale; 013 014 /** 015 * Tests {@link BigDecimalTranslator}. 016 */ 017 @Test 018 public class TestBigDecimalTranslator extends FormComponentContributorTestCase { 019 020 public void test_Default_Format() 021 { 022 BigDecimalTranslator translator = new BigDecimalTranslator(); 023 024 testFormat(translator, new BigDecimal("14.1"), "14.1"); 025 } 026 027 public void test_Null_Format() 028 { 029 BigDecimalTranslator translator = new BigDecimalTranslator(); 030 031 testFormat(translator, null, ""); 032 } 033 034 public void test_Parse_Null() 035 throws Exception 036 { 037 IFormComponent field = newField(); 038 ValidationMessages messages = newMock(ValidationMessages.class); 039 BigDecimalTranslator translator = new BigDecimalTranslator(); 040 041 replay(); 042 043 assert translator.parse(field, messages, null) == null; 044 045 verify(); 046 } 047 048 @Test(expectedExceptions = ValidatorException.class) 049 public void test_Parse_Invalid() 050 throws Exception 051 { 052 IFormComponent field = newField("fred"); 053 ValidationMessages messages = newValidationMessages(Locale.getDefault()); 054 BigDecimalTranslator translator = new BigDecimalTranslator(); 055 056 expect(messages.formatValidationMessage((String)eq(null), eq(ValidationStrings.INVALID_NUMBER), aryEq(new String[] { "fred"}))).andReturn("msg"); 057 058 replay(); 059 060 translator.parse(field, messages, "a23"); 061 062 verify(); 063 } 064 065 public void test_Parse_Simple() 066 throws Exception 067 { 068 IFormComponent field = newField(); 069 ValidationMessages messages = newMock(ValidationMessages.class); 070 BigDecimalTranslator translator = new BigDecimalTranslator(); 071 072 replay(); 073 074 BigDecimal value = (BigDecimal) translator.parse(field, messages, "99999999.9999"); 075 076 verify(); 077 078 assertEquals(value, new BigDecimal("99999999.9999")); 079 } 080 081 private void testFormat(Translator translator, BigDecimal number, String expected) 082 { 083 IFormComponent field = newField(); 084 085 String result = translator.format(field, Locale.ENGLISH, number); 086 087 assertEquals(expected, result); 088 } 089 }