public function testHandler()
 {
     Context::setUseCdn('Y');
     Context::setRequestUrl('http://test.com');
     $handler = new FrontEndFileHandler();
     // js(head)
     $handler->loadFile(array('./common/js/jquery.js'));
     $handler->loadFile(array('./common/js/js_app.js'));
     $handler->loadFile(array('./common/js/common.js'));
     $handler->loadFile(array('./common/js/xml_handler.js'));
     $handler->loadFile(array('./common/js/xml_js_filter.js'));
     $expected[] = array('file' => '/xe/common/js/jquery.js', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/js/js_app.js', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/js/common.js', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/js/xml_handler.js', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/js/xml_js_filter.js', 'targetie' => '');
     $this->assertEquals($handler->getJsFileList(), $expected);
     unset($handler);
     unset($expected);
     $handler = new FrontEndFileHandler();
     // js(body)
     $handler->loadFile(array('./common/js/jquery.js', 'body'));
     $handler->loadFile(array('./common/js/js_app.js', 'body'));
     $handler->loadFile(array('./common/js/common.js', 'body'));
     $handler->loadFile(array('./common/js/xml_handler.js', 'body'));
     $handler->loadFile(array('./common/js/xml_js_filter.js', 'body'));
     $expected[] = array('file' => '/xe/common/js/jquery.js', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/js/js_app.js', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/js/common.js', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/js/xml_handler.js', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/js/xml_js_filter.js', 'targetie' => '');
     $this->assertEquals($handler->getJsFileList('body'), $expected);
     unset($handler);
     unset($expected);
     $handler = new FrontEndFileHandler();
     // css
     $handler->loadFile(array('./common/css/xe.css'));
     $handler->loadFile(array('./common/css/common.css'));
     $expected[] = array('file' => '/xe/common/css/xe.css', 'media' => 'all', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/css/common.css', 'media' => 'all', 'targetie' => '');
     $this->assertEquals($handler->getCssFileList(), $expected);
     unset($handler);
     unset($expected);
     $handler = new FrontEndFileHandler();
     // order (duplicate)
     $handler->loadFile(array('./common/js/jquery.js', 'head', '', -100000));
     $handler->loadFile(array('./common/js/js_app.js', 'head', '', -100000));
     $handler->loadFile(array('./common/js/common.js', 'head', '', -100000));
     $handler->loadFile(array('./common/js/xml_handler.js', 'head', '', -100000));
     $handler->loadFile(array('./common/js/xml_js_filter.js', 'head', '', -100000));
     $handler->loadFile(array('./common/js/jquery.js', 'head', '', -100000));
     $handler->loadFile(array('./common/js/js_app.js', 'head', '', -100000));
     $handler->loadFile(array('./common/js/common.js', 'head', '', -100000));
     $handler->loadFile(array('./common/js/xml_handler.js', 'head', '', -100000));
     $handler->loadFile(array('./common/js/xml_js_filter.js', 'head', '', -100000));
     $expected[] = array('file' => '/xe/common/js/jquery.js', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/js/js_app.js', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/js/common.js', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/js/xml_handler.js', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/js/xml_js_filter.js', 'targetie' => '');
     $this->assertEquals($handler->getJsFileList(), $expected);
     // order (redefine)
     unset($handler);
     unset($expected);
     $handler = new FrontEndFileHandler();
     $handler->loadFile(array('./common/js/jquery.js', 'head', '', -100000));
     $handler->loadFile(array('./common/js/js_app.js', 'head', '', -100000));
     $handler->loadFile(array('./common/js/common.js', 'head', '', -100000));
     $handler->loadFile(array('./common/js/xml_handler.js', 'head', '', -100000));
     $handler->loadFile(array('./common/js/xml_js_filter.js', 'head', '', -100000));
     $handler->loadFile(array('./common/js/jquery.js', 'head', '', 1));
     $expected[] = array('file' => '/xe/common/js/js_app.js', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/js/common.js', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/js/xml_handler.js', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/js/xml_js_filter.js', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/js/jquery.js', 'targetie' => '');
     $this->assertEquals($handler->getJsFileList(), $expected);
     // unload
     unset($handler);
     unset($expected);
     $handler = new FrontEndFileHandler();
     $handler->loadFile(array('./common/js/jquery.js', 'head', '', -100000));
     $handler->loadFile(array('./common/js/js_app.js', 'head', '', -100000));
     $handler->loadFile(array('./common/js/common.js', 'head', '', -100000));
     $handler->loadFile(array('./common/js/xml_handler.js', 'head', '', -100000));
     $handler->loadFile(array('./common/js/xml_js_filter.js', 'head', '', -100000));
     $handler->unloadFile('./common/js/jquery.js', '', 'all');
     $expected[] = array('file' => '/xe/common/js/js_app.js', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/js/common.js', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/js/xml_handler.js', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/js/xml_js_filter.js', 'targetie' => '');
     $this->assertEquals($handler->getJsFileList(), $expected);
     // target IE(js)
     unset($handler);
     unset($expected);
     $handler = new FrontEndFileHandler();
     $handler->loadFile(array('./common/js/jquery.js', 'head', 'ie6'));
     $handler->loadFile(array('./common/js/jquery.js', 'head', 'ie7'));
     $handler->loadFile(array('./common/js/jquery.js', 'head', 'ie8'));
     $expected[] = array('file' => '/xe/common/js/jquery.js', 'targetie' => 'ie6');
     $expected[] = array('file' => '/xe/common/js/jquery.js', 'targetie' => 'ie7');
     $expected[] = array('file' => '/xe/common/js/jquery.js', 'targetie' => 'ie8');
     $this->assertEquals($handler->getJsFileList(), $expected);
     // target IE(css)
     unset($handler);
     unset($expected);
     $handler = new FrontEndFileHandler();
     $handler->loadFile(array('./common/css/common.css', null, 'ie6'));
     $handler->loadFile(array('./common/css/common.css', null, 'ie7'));
     $handler->loadFile(array('./common/css/common.css', null, 'ie8'));
     $expected[] = array('file' => '/xe/common/css/common.css', 'media' => 'all', 'targetie' => 'ie6');
     $expected[] = array('file' => '/xe/common/css/common.css', 'media' => 'all', 'targetie' => 'ie7');
     $expected[] = array('file' => '/xe/common/css/common.css', 'media' => 'all', 'targetie' => 'ie8');
     $this->assertEquals($handler->getCssFileList(), $expected);
     // media
     unset($handler);
     unset($expected);
     $handler = new FrontEndFileHandler();
     $handler->loadFile(array('./common/css/common.css', 'all'));
     $handler->loadFile(array('./common/css/common.css', 'screen'));
     $handler->loadFile(array('./common/css/common.css', 'handled'));
     $expected[] = array('file' => '/xe/common/css/common.css', 'media' => 'all', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/css/common.css', 'media' => 'screen', 'targetie' => '');
     $expected[] = array('file' => '/xe/common/css/common.css', 'media' => 'handled', 'targetie' => '');
     $this->assertEquals($handler->getCssFileList(), $expected);
     // CDN
     unset($handler);
     unset($expected);
     $handler = new FrontEndFileHandler();
     $handler->loadFile(array('./common/css/common.css'), true, 'http://static.xpressengine.com/core/', 'v');
     $expected[] = array('file' => 'http://static.xpressengine.com/core/v/common/css/common.css', 'media' => 'all', 'targetie' => '');
     $this->assertEquals($handler->getCssFileList(), $expected);
     // CDN(no cdn setting)
     unset($handler);
     unset($expected);
     Context::setUseCdn('N');
     $handler = new FrontEndFileHandler();
     $handler->loadFile(array('./common/css/common.css'), true, 'http://static.xpressengine.com/core/', 'v');
     $expected[] = array('file' => '/xe/common/css/common.css', 'media' => 'all', 'targetie' => '');
     $this->assertEquals($handler->getCssFileList(), $expected);
     // CDN(use ssl)
     unset($handler);
     unset($expected);
     Context::setUseCdn('Y');
     Context::setRequestUrl('https://test.com');
     $handler = new FrontEndFileHandler();
     $handler->loadFile(array('./common/css/common.css'), true, 'http://static.xpressengine.com/core/', 'v');
     $expected[] = array('file' => '/xe/common/css/common.css', 'media' => 'all', 'targetie' => '');
     $this->assertEquals($handler->getCssFileList(), $expected);
     // external file
     unset($handler);
     unset($expected);
     Context::setUseCdn('Y');
     Context::setRequestUrl('http://test.com');
     $handler = new FrontEndFileHandler();
     $handler->loadFile(array('http://external.com/css/style2.css'));
     $handler->loadFile(array('http://external.com/css/style.css'), true, 'http://static.xpressengine.com/core/', 'v');
     $expected[] = array('file' => 'http://external.com/css/style2.css', 'media' => 'all', 'targetie' => '');
     $expected[] = array('file' => 'http://external.com/css/style.css', 'media' => 'all', 'targetie' => '');
     $this->assertEquals($handler->getCssFileList(), $expected);
 }