1563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark/*
2563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Copyright (C) 2009 Jan Michael Alonzo
3563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *
4563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * This library is free software; you can redistribute it and/or
5563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * modify it under the terms of the GNU Library General Public
6563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * License as published by the Free Software Foundation; either
7563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * version 2 of the License, or (at your option) any later version.
8563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *
9563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * This library is distributed in the hope that it will be useful,
10563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * but WITHOUT ANY WARRANTY; without even the implied warranty of
11563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Library General Public License for more details.
13563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *
14563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * You should have received a copy of the GNU Library General Public License
15563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * along with this library; see the file COPYING.LIB.  If not, write to
16563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Boston, MA 02110-1301, USA.
18563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark */
19563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
20563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <glib.h>
21563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <gtk/gtk.h>
22563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <webkit/webkit.h>
23563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
24f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#if GTK_CHECK_VERSION(2, 14, 0)
25563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
26563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarktypedef struct {
27563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    WebKitWebHistoryItem* item;
28563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} WebHistoryItemFixture;
29563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
30563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkstatic void web_history_item_fixture_setup(WebHistoryItemFixture* fixture,
31563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark                                           gconstpointer data)
32563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{
33563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    fixture->item = webkit_web_history_item_new_with_data("http://example.com/", "Example1");
340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    g_assert_cmpint(G_OBJECT(fixture->item)->ref_count, == , 1);
35563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    g_assert(fixture->item != NULL);
36563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark}
37563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
38563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkstatic void web_history_item_fixture_teardown(WebHistoryItemFixture* fixture,
39563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark                                              gconstpointer data)
40563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{
41563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    g_assert(fixture->item != NULL);
42563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    g_assert_cmpint(G_OBJECT(fixture->item)->ref_count, ==, 1);
43563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark}
44563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
45563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkstatic void test_webkit_web_history_item_get_data(WebHistoryItemFixture* fixture,
46563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark                                                  gconstpointer data)
47563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{
48563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    g_assert_cmpstr(webkit_web_history_item_get_title(fixture->item), ==, "Example1");
49563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    g_assert_cmpstr(webkit_web_history_item_get_uri(fixture->item), ==, "http://example.com/");
50563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark}
51563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
52563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkstatic void test_webkit_web_history_item_alternate_title(WebHistoryItemFixture* fixture,
53563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark                                                         gconstpointer data)
54563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{
55563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    webkit_web_history_item_set_alternate_title(fixture->item, "Alternate title");
56563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    g_assert_cmpstr(webkit_web_history_item_get_alternate_title(fixture->item), ==, "Alternate title");
57563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark}
58563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
59563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkint main(int argc, char** argv)
60563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{
61563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    g_thread_init(NULL);
62563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    gtk_test_init(&argc, &argv, NULL);
63563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
64563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    g_test_bug_base("https://bugs.webkit.org/");
65563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    g_test_add("/webkit/webhistoryitem/get_data",
66563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark               WebHistoryItemFixture, 0, web_history_item_fixture_setup,
67563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark               test_webkit_web_history_item_get_data, web_history_item_fixture_teardown);
68563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    g_test_add("/webkit/webhistoryitem/alternate_title",
69563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark               WebHistoryItemFixture, 0, web_history_item_fixture_setup,
70563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark               test_webkit_web_history_item_alternate_title, web_history_item_fixture_teardown);
71563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    return g_test_run ();
72563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark}
73563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
74563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#else
75563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkint main(int argc, char** argv)
76563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{
77f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
78563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    return 0;
79563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark}
80563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
81563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#endif
82