Hi,

> Thanks.  Do you have time to add some more tests?
Mastella test no as I'm not 100% familiar with them yet. 

I tested locally with about 50 combinations of formats and dates. I run against 
4.9 and 4.10 and diffed the trace output to see what had changed.

Here the rough test code I used - it could be better but covers more ground 
that the existing tests :-) 

When I get some time I'll see if I can convert it into something mustella 
friendly.

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"; 
                           xmlns:s="library://ns.adobe.com/flex/spark" 
                           xmlns:mx="library://ns.adobe.com/flex/mx" 
initialize="init()">
        
        <fx:Script>
                <![CDATA[
                        import mx.controls.DateField;

                        public function testStringToDate(date:String, 
format:String):void
                        {
                                var result:Date;
                                
                                try {
                                        result = DateField.stringToDate(date, 
format);
                                }
                                catch (error:Error) {
                                        trace("OPPS RTE! " + error.message);
                                }
                                
                                if (result != null) {
                                        trace(date + " formatted with " + 
format + " = " + result.toString());
                                }
                                else {
                                        trace(date + " formatted with " + 
format + " = null");
                                }               
                        }
                        
                        public function testDateToString(date:Date, 
format:String):void
                        {
                                var result:String;
                                
                                try {
                                        result = DateField.dateToString(date, 
format);
                                }
                                catch (error:Error) {
                                        trace("OPPS RTE! " + error.message);
                                }
                                
                                if (result != null) {
                                        trace(date + " formatted with " + 
format + " = " + result);
                                }
                                else {
                                        trace(date + " formatted with " + 
format + " = null");
                                }               
                        }
                        
                        
                        protected function init():void
                        {
                                var result:Date;
                                
                                // MM/DD/YYYY
                                testStringToDate("01 01 2013", "MM/DD/YYYY");
                                testStringToDate("01/01/2013", "MM/DD/YYYY");
                                testStringToDate("1/1/2013", "MM/DD/YYYY");
                                testStringToDate("1/10/2013", "MM/DD/YYYY");
                                testStringToDate("1/10/2013", "MM/DD/YYYY");
                                testStringToDate("30/1/2013", "MM/DD/YYYY");
                                testStringToDate("7/17/69", "MM/DD/YYYY");
                                testStringToDate("30/1/13", "MM/DD/YYYY");      
                                testStringToDate("2013/1/1", "YYYY/M/DD")
                                testStringToDate("13 6 2013", "DD MMM YYYY")
                                
                                testStringToDate("1/10", "MM/DD/YYYY");
                                testStringToDate("2013", "MM/DD/YYYY");
                                testStringToDate("1/1/10/2013", "MM/DD/YYYY");
                                testStringToDate("13/10/2013", "MM/DD/YYYY");
                                testStringToDate("1/45/2013", "MM/DD/YYYY");
                                
                                testStringToDate("1-10-2013", "MM/DD/YYYY");
                                testStringToDate("1 10 2013", "MM/DD/YYYY");
                                testStringToDate("1/10-2013", "MM/DD/YYYY");
                                testStringToDate("1///10-2013", "MM/DD/YYYY");
                                testStringToDate("1/10/2013/", "MM/DD/YYYY");
                                testStringToDate("/1/10/2013", "MM/DD/YYYY");
                                testStringToDate("1////10//2013", "MM/DD/YYYY");
                                testStringToDate("1    10  2013", "MM/DD/YYYY");

                                // DD/MM/YYYY
                                testStringToDate("01/01/2013", "DD/MM/YYYY");
                                testStringToDate("1/1/2013", "DD/MM/YYYY");
                                testStringToDate("1/10/2013", "DD/MM/YYYY");
                                
                                testStringToDate("1/10", "DD/MM/YYYY");
                                testStringToDate("2013", "DD/MM/YYYY");
                                testStringToDate("1/1/10/2013", "DD/MM/YYYY");
                                
                                testStringToDate("1-10-2013", "DD/MM/YYYY");
                                testStringToDate("1 10 2013", "DD/MM/YYYY");
                        
                                // shorter formats
                                testStringToDate("1/1/2013", "M/D/YYYY");
                                testStringToDate("1/10/2013", "D/M/YY");
                                testStringToDate("1/10/2013", "D/MM/YY");
                                testStringToDate("1/10/2013", "M/D/YY");
                                testStringToDate("7/17/69", "M/D/YY");
                                testStringToDate("1/30/13", "M/D/YY");  
                                testStringToDate("1/1/2013", "DD MMM YYYY");
                        
                                // missing parts
                                testStringToDate("1/7/2013", "MM/DD");
                                testStringToDate("1/1/2013","MM/YYYY");
                                testStringToDate("1/7/2013", "M/D");    
                                
                                // No seperators (does this work?)
                                testStringToDate("1/7/2013", "MMDD");
                                testStringToDate("1/10/2013","MMDDYYYY");
                                testStringToDate("1/7/2013", "DDMMYY"); 
                        
                                // MM/DD/YYYY
                                // MM/DD/YYYY
                                testStringToDate("01 01 2013", "MM/DD/YYYY");
                                testStringToDate("01/01/2013", "MM/DD/YYYY");
                                testStringToDate("1/1/2013", "MM/DD/YYYY");
                                testStringToDate("1/10/2013", "MM/DD/YYYY");
                                testStringToDate("1/10/2013", "MM/DD/YYYY");
                                testStringToDate("30/1/2013", "MM/DD/YYYY");
                                testStringToDate("7/17/69", "MM/DD/YYYY");
                                testStringToDate("7/17/71", "MM/DD/YYYY");
                                testStringToDate("1/1/13", "MM/DD/YYYY");       
                
                                
                                testStringToDate("1/10", "MM/DD/YYYY");
                                testStringToDate("2013", "MM/DD/YYYY");
                                testStringToDate("1/1/10/2013", "MM/DD/YYYY");
                                testStringToDate("13/10/2013", "MM/DD/YYYY");
                                testStringToDate("1/45/2013", "MM/DD/YYYY");
                                
                                testStringToDate("1-10-2013", "MM/DD/YYYY");
                                testStringToDate("1 10 2013", "MM/DD/YYYY");
                                testStringToDate("1/10-2013", "MM/DD/YYYY");
                                testStringToDate("1///10-2013", "MM/DD/YYYY");
                                testStringToDate("1/10/2013/", "MM/DD/YYYY");
                                testStringToDate("/1/10/2013", "MM/DD/YYYY");
                                testStringToDate("1////10//2013", "MM/DD/YYYY");
                                testStringToDate("1    10  2013", "MM/DD/YYYY");
                                
                                // DD/MM/YYYY
                                var date1:Date = new Date(2013,0,1);
                                var date2:Date = new Date(2013,9,1);
                                var date3:Date = new Date(1969,6,17);
                                
                                testDateToString(date1, "DD/MM/YYYY");
                                testDateToString(date2, "DD/MM/YYYY");
                                
                                testDateToString(null, "DD/MM/YYYY");
                                testDateToString(new Date(), "DD/MM/YYYY");
                                testDateToString(new Date(Date.parse("")), 
"DD/MM/YYYY");
                                
                                // shorter formats
                                testDateToString(date1, "M/D/YYYY");
                                testDateToString(date2, "D/M/YY");
                                testDateToString(date2, "D/MM/YY");
                                testDateToString(date3, "M/D/YY");
                                testDateToString(date3, "D/M/YY");
                                testDateToString(date1, "M/D/YY");      
                                
                                // missing parts
                                testDateToString(date2, "MM/DD");
                                testDateToString(date2, "MM/YYYY");
                                testDateToString(date2, "M/D"); 
                                
                                // No seperators (does this work?)
                                testDateToString(date2, "MMDD");
                                testDateToString(date2, "MMDDYYYY");
                                testDateToString(date2, "DDMMYY");      
                        }
                ]]>
        </fx:Script>
        
        <mx:DateField width="300" />
</s:Application>

Thanks,
Justin

Reply via email to