- GtkTreeModel* model = GTK_TREE_MODEL(graph_tree_model_new(&graph));
-
- {
- gint n_columns = gtk_tree_model_get_n_columns(model);
- ASSERT_MESSAGE(n_columns == 2, "test failed!");
- }
-
- {
- GType type = gtk_tree_model_get_column_type(model, 0);
- ASSERT_MESSAGE(type == G_TYPE_POINTER, "test failed!");
- }
-
- {
- GType type = gtk_tree_model_get_column_type(model, 1);
- ASSERT_MESSAGE(type == G_TYPE_POINTER, "test failed!");
- }
-
-
- {
- GtkTreeIter iter;
- gtk_tree_model_get_iter_first(model, &iter);
-
- graph_type::iterator i = graph_iterator_read_tree_iter(&iter);
- ASSERT_MESSAGE((*i).first.get().size() == 2 && (*i).first.get().top() == node1, "test failed!");
- }
-
- {
- GtkTreeIter iter;
- gtk_tree_model_get_iter_first(model, &iter);
-
- ASSERT_MESSAGE(gtk_tree_model_iter_has_child(model, &iter) == FALSE, "test failed!");
-
- ASSERT_MESSAGE(gtk_tree_model_iter_n_children(model, &iter) == 0, "test failed!");
-
- gtk_tree_model_iter_next(model, &iter);
-
- ASSERT_MESSAGE(gtk_tree_model_iter_has_child(model, &iter) != FALSE, "test failed!");
-
- ASSERT_MESSAGE(gtk_tree_model_iter_n_children(model, &iter) == 2, "test failed!");
-
- {
- GtkTreeIter child;
- gtk_tree_model_iter_nth_child(model, &child, &iter, 0);
-
- scene::Node* test;
- gtk_tree_model_get_value(model, &child, 0, (GValue*)&test);
- ASSERT_MESSAGE(test == node3, "test failed!");
-
- {
- GtkTreeIter parent;
- gtk_tree_model_iter_parent(model, &parent, &child);
-
- scene::Node* test;
- gtk_tree_model_get_value(model, &parent, 0, (GValue*)&test);
- ASSERT_MESSAGE(test == node2, "test failed!");
- }
- }
-
- {
- GtkTreeIter child;
- gtk_tree_model_iter_nth_child(model, &child, &iter, 1);
-
- scene::Node* test;
- gtk_tree_model_get_value(model, &child, 0, (GValue*)&test);
- ASSERT_MESSAGE(test == node4, "test failed!");
- }
- }
-
- {
- GtkTreeIter iter;
- std::size_t count = 0;
- for(gboolean good = gtk_tree_model_get_iter_first(model, &iter); good; good = gtk_tree_model_iter_next(model, &iter))
- {
- scene::Node* test;
- gtk_tree_model_get_value(model, &iter, 0, (GValue*)&test);
-
- ASSERT_MESSAGE((count == 0 && test == node1) || (count == 1 && test == node2), "test failed!");
- ++count;
- }
-
- ASSERT_MESSAGE(count == 2, "test failed!");
-
- }
-
- {
- GtkTreeIter iter;
- gtk_tree_model_get_iter_first(model, &iter);
-
- scene::Node* test;
- gtk_tree_model_get_value(model, &iter, 0, (GValue*)&test);
- ASSERT_MESSAGE(test == node1, "test failed!");
- }
-
- {
- GtkTreeIter iter;
- GtkTreePath* path = gtk_tree_path_new_from_string("0");
- gtk_tree_model_get_iter(model, &iter, path);
- gtk_tree_path_free(path);
-
- graph_type::iterator i = graph_iterator_read_tree_iter(&iter);
- ASSERT_MESSAGE((*i).first.get().size() == 2 && (*i).first.get().top() == node1, "test failed!");
- }
-
- {
- GtkTreeIter iter;
- GtkTreePath* path = gtk_tree_path_new_from_string("1");
- gtk_tree_model_get_iter(model, &iter, path);
- gtk_tree_path_free(path);
-
- graph_type::iterator i = graph_iterator_read_tree_iter(&iter);
- ASSERT_MESSAGE((*i).first.get().size() == 2 && (*i).first.get().top() == node2, "test failed!");
- }
-
- {
- GtkTreeIter iter;
- graph_type::iterator i = graph.begin();
- ++i;
- graph_iterator_write_tree_iter(i, &iter);
-
- GtkTreePath* path = gtk_tree_model_get_path(model, &iter);
-
- gint depth = gtk_tree_path_get_depth(path);
- gint* indices = gtk_tree_path_get_indices(path);
-
- ASSERT_MESSAGE(depth == 1 && indices[0] == 0, "test failed!");
-
- gtk_tree_path_free(path);
- }
-
- {
- GtkTreeIter iter;
- graph_type::iterator i = graph.begin();
- ++i;
- ++i;
- graph_iterator_write_tree_iter(i, &iter);
-
- GtkTreePath* path = gtk_tree_model_get_path(model, &iter);
-
- gint depth = gtk_tree_path_get_depth(path);
- gint* indices = gtk_tree_path_get_indices(path);
-
- ASSERT_MESSAGE(depth == 1 && indices[0] == 1, "test failed!");
-
- gtk_tree_path_free(path);
- }
- }
-};
-
-
-TestGraphTreeModel g_TestGraphTreeModel;
-
-#endif