[gtksourceview] Add a unit test for buffer_get_context_classes_at_iter
- From: Paolo Borelli <pborelli src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview] Add a unit test for buffer_get_context_classes_at_iter
- Date: Sun, 24 Nov 2013 18:53:06 +0000 (UTC)
commit 985249b523f91dab965858cfef6f7ee1a550dcba
Author: Paolo Borelli <pborelli gnome org>
Date: Sun Nov 24 19:51:38 2013 +0100
Add a unit test for buffer_get_context_classes_at_iter
tests/test-buffer.c | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 74 insertions(+), 1 deletions(-)
---
diff --git a/tests/test-buffer.c b/tests/test-buffer.c
index 8084ec6..a0b7c6c 100644
--- a/tests/test-buffer.c
+++ b/tests/test-buffer.c
@@ -4,6 +4,28 @@
#include <gtk/gtk.h>
#include <gtksourceview/gtksource.h>
+static const char *c_snippet =
+ "#include <foo.h>\n"
+ "\n"
+ "/* this is a comment */\n"
+ "int main() {\n"
+ "}\n";
+
+static void
+init_default_manager (void)
+{
+ GtkSourceLanguageManager *lm;
+ gchar **lang_dirs;
+
+ lm = gtk_source_language_manager_get_default ();
+
+ lang_dirs = g_new0 (gchar *, 2);
+ lang_dirs[0] = g_build_filename (TOP_SRCDIR, "data", "language-specs", NULL);
+
+ gtk_source_language_manager_set_search_path (lm, lang_dirs);
+ g_strfreev (lang_dirs);
+}
+
static void
test_get_buffer (void)
{
@@ -30,6 +52,52 @@ test_get_buffer (void)
}
static void
+test_get_context_classes (void)
+{
+ GtkSourceLanguageManager *lm;
+ GtkSourceBuffer *buffer;
+ GtkSourceLanguage *lang;
+ GtkTextIter start, end, i;
+ char **classes;
+
+ /* test plain text */
+ buffer = gtk_source_buffer_new (NULL);
+ gtk_text_buffer_set_text (GTK_TEXT_BUFFER (buffer), "some text", -1);
+ gtk_text_buffer_get_bounds (GTK_TEXT_BUFFER (buffer), &start, &end);
+ gtk_source_buffer_ensure_highlight (buffer, &start, &end);
+
+ gtk_text_buffer_get_start_iter (GTK_TEXT_BUFFER (buffer), &i);
+ classes = gtk_source_buffer_get_context_classes_at_iter (buffer, &i);
+ g_assert_cmpuint (g_strv_length (classes), ==, 0);
+ g_strfreev (classes);
+
+ g_object_unref (buffer);
+
+ /* test C */
+ lm = gtk_source_language_manager_get_default ();
+ lang = gtk_source_language_manager_get_language (lm, "c");
+ g_assert (GTK_SOURCE_IS_LANGUAGE (lang));
+ buffer = gtk_source_buffer_new_with_language (lang);
+ gtk_text_buffer_set_text (GTK_TEXT_BUFFER (buffer), c_snippet, -1);
+ gtk_text_buffer_get_bounds (GTK_TEXT_BUFFER (buffer), &start, &end);
+ gtk_source_buffer_ensure_highlight (buffer, &start, &end);
+
+ gtk_text_buffer_get_start_iter (GTK_TEXT_BUFFER (buffer), &i);
+ classes = gtk_source_buffer_get_context_classes_at_iter (buffer, &i);
+ g_assert_cmpuint (g_strv_length (classes), ==, 1);
+ g_assert_cmpstr (classes[0], ==, "no-spell-check");
+ g_strfreev (classes);
+
+ gtk_text_buffer_get_iter_at_line_offset (GTK_TEXT_BUFFER (buffer), &i, 2, 5);
+ classes = gtk_source_buffer_get_context_classes_at_iter (buffer, &i);
+ g_assert_cmpuint (g_strv_length (classes), ==, 1);
+ g_assert_cmpstr (classes[0], ==, "comment");
+ g_strfreev (classes);
+
+ g_object_unref (buffer);
+}
+
+static void
do_test_change_case (GtkSourceBuffer *buffer,
GtkSourceChangeCaseType case_type,
const char *text,
@@ -50,7 +118,7 @@ do_test_change_case (GtkSourceBuffer *buffer,
static void
test_change_case (void)
{
- GtkSourceBuffer* buffer;
+ GtkSourceBuffer *buffer;
buffer = gtk_source_buffer_new (NULL);
@@ -58,6 +126,8 @@ test_change_case (void)
do_test_change_case (buffer, GTK_SOURCE_CHANGE_CASE_UPPER, "some TEXT", "SOME TEXT");
do_test_change_case (buffer, GTK_SOURCE_CHANGE_CASE_TOGGLE, "some TEXT", "SOME text");
do_test_change_case (buffer, GTK_SOURCE_CHANGE_CASE_TITLE, "some TEXT", "Some Text");
+
+ g_object_unref (buffer);
}
int
@@ -65,7 +135,10 @@ main (int argc, char** argv)
{
gtk_test_init (&argc, &argv);
+ init_default_manager ();
+
g_test_add_func ("/Buffer/bug-634510", test_get_buffer);
+ g_test_add_func ("/Buffer/get-context-classes", test_get_context_classes);
g_test_add_func ("/Buffer/change-case", test_change_case);
return g_test_run();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]