/*
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "cobalt/dom/html_element_factory.h"

#include "base/message_loop.h"
#include "cobalt/dom/document.h"
#include "cobalt/dom/dom_stat_tracker.h"
#include "cobalt/dom/html_anchor_element.h"
#include "cobalt/dom/html_body_element.h"
#include "cobalt/dom/html_br_element.h"
#include "cobalt/dom/html_div_element.h"
#include "cobalt/dom/html_element.h"
#include "cobalt/dom/html_element_context.h"
#include "cobalt/dom/html_head_element.h"
#include "cobalt/dom/html_heading_element.h"
#include "cobalt/dom/html_html_element.h"
#include "cobalt/dom/html_image_element.h"
#include "cobalt/dom/html_link_element.h"
#include "cobalt/dom/html_meta_element.h"
#include "cobalt/dom/html_paragraph_element.h"
#include "cobalt/dom/html_script_element.h"
#include "cobalt/dom/html_span_element.h"
#include "cobalt/dom/html_style_element.h"
#include "cobalt/dom/html_title_element.h"
#include "cobalt/dom/html_unknown_element.h"
#include "cobalt/dom/html_video_element.h"
#include "cobalt/dom/testing/stub_css_parser.h"
#include "cobalt/dom/testing/stub_script_runner.h"
#include "cobalt/dom_parser/parser.h"
#include "cobalt/loader/fetcher_factory.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace cobalt {
namespace dom {

class HTMLElementFactoryTest : public ::testing::Test {
 protected:
  HTMLElementFactoryTest()
      : fetcher_factory_(NULL /* network_module */),
        dom_parser_(new dom_parser::Parser()),
        dom_stat_tracker_(new DomStatTracker("HTMLElementFactoryTest")),
        html_element_context_(
            &fetcher_factory_, &stub_css_parser_, dom_parser_.get(),
            NULL /* can_play_type_handler */,
            NULL /* web_media_player_factory */, &stub_script_runner_,
            NULL /* media_source_registry */, NULL /* resource_provider */,
            NULL /* image_cache */,
            NULL /* reduced_image_cache_capacity_manager */,
            NULL /* remote_typeface_cache */, dom_stat_tracker_.get(),
            "" /* language */),
        document_(new Document(&html_element_context_)) {}
  ~HTMLElementFactoryTest() OVERRIDE {}

  loader::FetcherFactory fetcher_factory_;
  scoped_ptr<Parser> dom_parser_;
  testing::StubCSSParser stub_css_parser_;
  testing::StubScriptRunner stub_script_runner_;
  scoped_ptr<DomStatTracker> dom_stat_tracker_;
  HTMLElementContext html_element_context_;
  scoped_refptr<Document> document_;
  HTMLElementFactory html_element_factory_;
  MessageLoop message_loop_;
};

TEST_F(HTMLElementFactoryTest, CreateHTMLElement) {
  scoped_refptr<HTMLElement> html_element;

  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("a"));
  EXPECT_TRUE(html_element->AsHTMLAnchorElement());
  EXPECT_EQ(html_element->GetInlineSourceLocation().file_path,
            "[object HTMLAnchorElement]");
  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("body"));
  EXPECT_TRUE(html_element->AsHTMLBodyElement());
  EXPECT_EQ(html_element->GetInlineSourceLocation().file_path,
            "[object HTMLBodyElement]");
  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("br"));
  EXPECT_TRUE(html_element->AsHTMLBRElement());
  EXPECT_EQ(html_element->GetInlineSourceLocation().file_path,
            "[object HTMLBRElement]");
  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("div"));
  EXPECT_TRUE(html_element->AsHTMLDivElement());
  EXPECT_EQ(html_element->GetInlineSourceLocation().file_path,
            "[object HTMLDivElement]");
  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("head"));
  EXPECT_TRUE(html_element->AsHTMLHeadElement());
  EXPECT_EQ(html_element->GetInlineSourceLocation().file_path,
            "[object HTMLHeadElement]");
  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("html"));
  EXPECT_TRUE(html_element->AsHTMLHtmlElement());
  EXPECT_EQ(html_element->GetInlineSourceLocation().file_path,
            "[object HTMLHtmlElement]");
  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("img"));
  EXPECT_TRUE(html_element->AsHTMLImageElement());
  EXPECT_EQ(html_element->GetInlineSourceLocation().file_path,
            "[object HTMLImageElement]");
  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("link"));
  EXPECT_TRUE(html_element->AsHTMLLinkElement());
  EXPECT_EQ(html_element->GetInlineSourceLocation().file_path,
            "[object HTMLLinkElement]");
  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("meta"));
  EXPECT_TRUE(html_element->AsHTMLMetaElement());
  EXPECT_EQ(html_element->GetInlineSourceLocation().file_path,
            "[object HTMLMetaElement]");
  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("p"));
  EXPECT_TRUE(html_element->AsHTMLParagraphElement());
  EXPECT_EQ(html_element->GetInlineSourceLocation().file_path,
            "[object HTMLParagraphElement]");
  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("script"));
  EXPECT_TRUE(html_element->AsHTMLScriptElement());
  EXPECT_EQ(html_element->GetInlineSourceLocation().file_path,
            "[object HTMLScriptElement]");
  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("span"));
  EXPECT_TRUE(html_element->AsHTMLSpanElement());
  EXPECT_EQ(html_element->GetInlineSourceLocation().file_path,
            "[object HTMLSpanElement]");
  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("style"));
  EXPECT_TRUE(html_element->AsHTMLStyleElement());
  EXPECT_EQ(html_element->GetInlineSourceLocation().file_path,
            "[object HTMLStyleElement]");
  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("title"));
  EXPECT_TRUE(html_element->AsHTMLTitleElement());
  EXPECT_EQ(html_element->GetInlineSourceLocation().file_path,
            "[object HTMLTitleElement]");
  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("video"));
  EXPECT_TRUE(html_element->AsHTMLVideoElement());
  EXPECT_EQ(html_element->GetInlineSourceLocation().file_path,
            "[object HTMLVideoElement]");

  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("h1"));
  EXPECT_TRUE(html_element->AsHTMLHeadingElement());
  EXPECT_EQ(html_element->GetInlineSourceLocation().file_path,
            "[object HTMLHeadingElement]");
  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("h2"));
  EXPECT_TRUE(html_element->AsHTMLHeadingElement());
  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("h3"));
  EXPECT_TRUE(html_element->AsHTMLHeadingElement());
  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("h4"));
  EXPECT_TRUE(html_element->AsHTMLHeadingElement());
  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("h5"));
  EXPECT_TRUE(html_element->AsHTMLHeadingElement());
  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("h6"));
  EXPECT_TRUE(html_element->AsHTMLHeadingElement());

  html_element =
      html_element_factory_.CreateHTMLElement(document_, base::Token("foo"));
  EXPECT_TRUE(html_element->AsHTMLUnknownElement());
  EXPECT_EQ(html_element->GetInlineSourceLocation().file_path,
            "[object HTMLUnknownElement]");
}

}  // namespace dom
}  // namespace cobalt
