package test.customLayoutList.testCase
{
    import component.list.CustomLayoutList;
    
    import flash.events.TimerEvent;
    import flash.utils.Timer;
    
    import mx.core.IDataRenderer;
    import mx.core.UIComponent;
    
    import test.base.CustomTestCase;
    import test.customLayoutList.view.CustomLayoutListView;
    import test.customLayoutList.view.DataItem;
    
    public class TestFiltering extends CustomTestCase
    {
        private var testView : CustomLayoutListView;
        
        public function TestFiltering()
        {
            super();
        }
        
        override protected function setUp() : void
        {
            testView = new CustomLayoutListView();
            testView.filterCheckboxVisible = true;
            testView.addEventListener("filterChange", waitingHandler(pendUntilComplete), false, 0, true);
            addChild(testView);
        }
        
        override protected function tearDown() : void
        {
            removeChild(testView);
            testView = null;
        }
        
        [Test]
        public function switchFilterOn() : void 
        {
            var timer : Timer = new Timer(CustomLayoutList.TWEEN_DURATION_SECONDS * 2000, 1);
            timer.addEventListener(TimerEvent.TIMER_COMPLETE, 
                asyncHandler(handleLayoutTimerComplete, CustomLayoutList.TWEEN_DURATION_SECONDS * 2000 + 10), false, 0, true);
            timer.start();
        }
        
        private function handleLayoutTimerComplete(e : TimerEvent, passthroughData : Object) : void 
        {
            for each (var item : UIComponent in testView.list.listItems)
            {
                if (item.parent != null)
                {
                    assertTrue(DataItem(IDataRenderer(item).data).isOdd);
                }
                else
                {
                    assertFalse(DataItem(IDataRenderer(item).data).isOdd);
                }
            }
        }
        
    }
}