libgitk_dialog.c

Go to the documentation of this file.
00001 
00015 #define GITK_TESTS_DIALOG_C
00016 
00017 #include "libgitk.h"
00018 
00019 
00023 static void test_setup(void) {
00024   gitk_log("-- beg -----------------------");
00025 }
00026 
00030 static void test_teardown(void) {
00031   gitk_log("-- end -----------------------\n\n");
00032 }
00033 
00034 
00037 static gchar *dialog1_desc=\
00038 "<?xml version=\"1.0\" ?>"\
00039 "<!DOCTYPE giml SYSTEM \"http://gitk.sourceforge.net/giml.dtd\">"\
00040 "<giml xmlns=\""GITK_NS_URL"\""\
00041 " xmlns:dc=\"http://purl.org/dc/elements/1.1/\""\
00042 " xmlns:i18n=\""I18N_NS_URL"\""\
00043 " >"\
00044 "  <dialog>"\
00045 "    <meta>"\
00046 "      <dc:title><i18n:text>dialog 1</i18n:text></dc:title>"\
00047 "    </meta>"\
00048 "    <widgetgroup><widget/></widgetgroup>"\
00049 "  </dialog>"\
00050 "</giml>";
00051 
00054 static gchar *dialog2_desc=\
00055 "<?xml version=\"1.0\" ?>"\
00056 "<!DOCTYPE giml SYSTEM \"http://gitk.sourceforge.net/giml.dtd\">"\
00057 "<giml xmlns=\""GITK_NS_URL"\""\
00058 " xmlns:dc=\"http://purl.org/dc/elements/1.1/\""\
00059 " xmlns:i18n=\""I18N_NS_URL"\""\
00060 " >"\
00061 "  <dialog>"\
00062 "    <meta>"\
00063 "      <dc:title><i18n:text>dialog 2</i18n:text></dc:title>"\
00064 "    </meta>"\
00065 "    <widgetgroup><widget/></widgetgroup>"\
00066 "  </dialog>"\
00067 "</giml>";
00068 
00071 static gchar *dialog3_desc=\
00072 "<?xml version=\"1.0\" ?>"\
00073 "<!DOCTYPE giml SYSTEM \"http://gitk.sourceforge.net/giml.dtd\">"\
00074 "<giml xmlns=\""GITK_NS_URL"\""\
00075 " xmlns:dc=\"http://purl.org/dc/elements/1.1/\""\
00076 " xmlns:i18n=\""I18N_NS_URL"\""\
00077 " >"\
00078 "  <dialog>"\
00079 "    <meta>"\
00080 "      <dc:title><i18n:text>dialog 3</i18n:text></dc:title>"\
00081 "    </meta>"\
00082 "    <widgetgroup><widget/></widgetgroup>"\
00083 "  </dialog>"\
00084 "</giml>";
00085 
00089 START_TEST(test_gitk_dialog_new_from_string_1) {
00090   GitkDialogPtr dialog1;
00091 
00092   gitk_init(&test_argc,&test_argvptr,PACKAGE,LOCALEDIR);
00093   if((dialog1=gitk_dialog_new_from_string(dialog1_desc))) {
00094     gitk_dialog_free(dialog1);
00095   }
00096   else {
00097     snprintf(errormsg,ERROR_STR_LENGTH,"error parsing dialog => %d : %s",gitk_get_error_code(),gitk_get_error_str());
00098     fail(errormsg);
00099   }
00100   gitk_done();
00101 }
00102 END_TEST
00103 
00107 START_TEST(test_gitk_dialog_show_1) {
00108   GitkDialogPtr dialog1=NULL,dialog2=NULL,dialog3=NULL;
00109 
00110   gitk_init(&test_argc,&test_argvptr,PACKAGE,LOCALEDIR);
00111   if((dialog1=gitk_dialog_new_from_string(dialog1_desc)) &&
00112     (dialog2=gitk_dialog_new_from_string(dialog2_desc)) &&
00113     (dialog3=gitk_dialog_new_from_string(dialog3_desc))) {
00114     mark_point();
00115   
00116     fail_unless(gitk_context_get_highest_used_priority()==0,"initial priority should be 0");
00117     gitk_dialog_show(dialog1,FALSE);
00118     mark_point();
00119     fail_unless(gitk_context_get_highest_used_priority()==0,"initial priority should still be 0");
00120     gitk_dialog_show(dialog2,FALSE);
00121     mark_point();
00122     fail_unless(gitk_context_get_highest_used_priority()==0,"initial priority should still be 0");
00123     gitk_dialog_show(dialog3,TRUE);
00124     mark_point();
00125     fail_unless(gitk_context_get_highest_used_priority()==1,"initial priority should now be 1");
00126     mark_point();
00127   
00128     gitk_dialog_hide(dialog3);
00129     mark_point();
00130     fail_unless(gitk_context_get_highest_used_priority()==0,"initial priority should again be 0");
00131     gitk_dialog_hide(dialog2);
00132     gitk_dialog_hide(dialog1);
00133   }
00134   else {
00135     snprintf(errormsg,ERROR_STR_LENGTH,"error parsing dialog => %d : %s",gitk_get_error_code(),gitk_get_error_str());
00136     fail(errormsg);
00137   }
00138   if(dialog1) gitk_dialog_free(dialog1);
00139   if(dialog2) gitk_dialog_free(dialog2);
00140   if(dialog3) gitk_dialog_free(dialog3);
00141   gitk_done();
00142 }
00143 END_TEST
00144 
00148 START_TEST(test_gitk_dialog_show_2) {
00149   GitkDialogPtr dialog1=NULL,dialog2=NULL,dialog3=NULL;
00150 
00151   gitk_init(&test_argc,&test_argvptr,PACKAGE,LOCALEDIR);
00152   if((dialog1=gitk_dialog_new_from_string(dialog1_desc)) &&
00153     (dialog2=gitk_dialog_new_from_string(dialog2_desc)) &&
00154     (dialog3=gitk_dialog_new_from_string(dialog3_desc))) {
00155     mark_point();
00156   
00157     fail_unless(gitk_context_activate()==NULL,"no context should be activatable");
00158     gitk_dialog_show(dialog1,FALSE);
00159     mark_point();
00160     fail_unless(gitk_context_activate()==dialog1,"activated wrong context");
00161     gitk_dialog_show(dialog2,FALSE);
00162     mark_point();
00163     fail_unless(gitk_context_activate()==NULL,"no context should be activatable");
00164     gitk_dialog_show(dialog3,TRUE);
00165     mark_point();
00166     fail_unless(gitk_context_activate()==dialog3,"activated wrong context");
00167     mark_point();
00168   
00169     gitk_dialog_hide(dialog3);
00170     gitk_dialog_hide(dialog2);
00171     mark_point();
00172     fail_unless(gitk_context_activate()==dialog1,"activated wrong context");
00173     gitk_dialog_hide(dialog1);
00174   }
00175   else {
00176     snprintf(errormsg,ERROR_STR_LENGTH,"error parsing dialog => %d : %s",gitk_get_error_code(),gitk_get_error_str());
00177     fail(errormsg);
00178   }
00179   if(dialog1) gitk_dialog_free(dialog1);
00180   if(dialog2) gitk_dialog_free(dialog2);
00181   if(dialog3) gitk_dialog_free(dialog3);
00182   gitk_done();
00183 }
00184 END_TEST
00185 
00186 
00190 TCase *libgitk_dialog_tcase(void) {
00191   TCase *tc = tcase_create("Dialog");
00192 
00193   tcase_add_test(tc,test_gitk_dialog_new_from_string_1);
00194   tcase_add_test(tc,test_gitk_dialog_show_1);
00195   tcase_add_test(tc,test_gitk_dialog_show_2);
00196   tcase_add_unchecked_fixture(tc, test_setup, test_teardown);
00197   return(tc);
00198 }

Generated on Thu Oct 28 10:59:16 2004 for gitk by doxygen 1.3.6