glib/tsrc/BC/tests/refcount/objects2.c
changeset 0 e4d67989cc36
child 72 403e7f6ed6c5
equal deleted inserted replaced
-1:000000000000 0:e4d67989cc36
       
     1 /* Portion Copyright © 2008-09 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. */
       
     2 #include <unistd.h>
       
     3 #include <glib.h>
       
     4 #include <glib-object.h>
       
     5 
       
     6 #ifdef SYMBIAN
       
     7 #include <glib_global.h>
       
     8 #include "mrt2_glib2_test.h"
       
     9 #endif /*SYMBIAN*/
       
    10 
       
    11 
       
    12 
       
    13 #define G_TYPE_TEST               (g_test_get_type ())
       
    14 #define G_TEST(test)              (G_TYPE_CHECK_INSTANCE_CAST ((test), G_TYPE_TEST, GTest))
       
    15 #define G_IS_TEST(test)           (G_TYPE_CHECK_INSTANCE_TYPE ((test), G_TYPE_TEST))
       
    16 #define G_TEST_CLASS(tclass)      (G_TYPE_CHECK_CLASS_CAST ((tclass), G_TYPE_TEST, GTestClass))
       
    17 #define G_IS_TEST_CLASS(tclass)   (G_TYPE_CHECK_CLASS_TYPE ((tclass), G_TYPE_TEST))
       
    18 #define G_TEST_GET_CLASS(test)    (G_TYPE_INSTANCE_GET_CLASS ((test), G_TYPE_TEST, GTestClass))
       
    19 
       
    20 typedef struct _GTest GTest;
       
    21 typedef struct _GTestClass GTestClass;
       
    22 
       
    23 struct _GTest
       
    24 {
       
    25   GObject object;
       
    26 };
       
    27 
       
    28 struct _GTestClass
       
    29 {
       
    30   GObjectClass parent_class;
       
    31 };
       
    32 
       
    33 static GType g_test_get_type (void);
       
    34 
       
    35 static void g_test_class_init (GTestClass * klass);
       
    36 static void g_test_init (GTest * test);
       
    37 static void g_test_dispose (GObject * object);
       
    38 
       
    39 static GObjectClass *parent_class = NULL;
       
    40 
       
    41 static GType
       
    42 g_test_get_type (void)
       
    43 {
       
    44   static GType test_type = 0;
       
    45 
       
    46   if (!test_type) {
       
    47     static const GTypeInfo test_info = {
       
    48       sizeof (GTestClass),
       
    49       NULL,
       
    50       NULL,
       
    51       (GClassInitFunc) g_test_class_init,
       
    52       NULL,
       
    53       NULL,
       
    54       sizeof (GTest),
       
    55       0,
       
    56       (GInstanceInitFunc) g_test_init,
       
    57       NULL
       
    58     };
       
    59 
       
    60     test_type = g_type_register_static (G_TYPE_OBJECT, "GTest",
       
    61         &test_info, 0);
       
    62   }
       
    63   return test_type;
       
    64 }
       
    65 
       
    66 static void
       
    67 g_test_class_init (GTestClass * klass)
       
    68 {
       
    69   GObjectClass *gobject_class;
       
    70 
       
    71   gobject_class = (GObjectClass *) klass;
       
    72 
       
    73   parent_class = g_type_class_ref (G_TYPE_OBJECT);
       
    74 
       
    75   gobject_class->dispose = g_test_dispose;
       
    76 }
       
    77 
       
    78 static void
       
    79 g_test_init (GTest * test)
       
    80 {
       
    81   //g_print ("init %p\n", test);
       
    82 }
       
    83 
       
    84 static void
       
    85 g_test_dispose (GObject * object)
       
    86 {
       
    87   GTest *test;
       
    88 
       
    89   test = G_TEST (object);
       
    90 
       
    91   //g_print ("dispose %p!\n", object);
       
    92 
       
    93   G_OBJECT_CLASS (parent_class)->dispose (object);
       
    94 }
       
    95 
       
    96 static void
       
    97 g_test_do_refcount (GTest * test)
       
    98 {
       
    99   static guint i = 1;
       
   100   if (i++ % 100 == 0);
       
   101     //g_print (".");
       
   102   g_object_ref (test); 
       
   103   g_object_unref (test); 
       
   104 }
       
   105 
       
   106 int
       
   107 main (int argc, char **argv)
       
   108 {
       
   109   gint i;
       
   110   GTest *test;
       
   111 
       
   112   #ifdef SYMBIAN
       
   113   
       
   114   g_log_set_handler (NULL,  G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION | G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING | G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_INFO | G_LOG_LEVEL_DEBUG, &mrtLogHandler, NULL);
       
   115   g_set_print_handler(mrtPrintHandler);
       
   116   #endif /*SYMBIAN*/
       
   117 	  
       
   118 
       
   119   g_thread_init (NULL);
       
   120   //g_print ("START: %s\n", argv[0]);
       
   121   g_log_set_always_fatal (G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL | g_log_set_always_fatal (G_LOG_FATAL_MASK));
       
   122   g_type_init ();
       
   123 
       
   124   test = g_object_new (G_TYPE_TEST, NULL);
       
   125   
       
   126   g_assert(test != NULL);
       
   127 
       
   128   for (i=0; i<1000; i++) {
       
   129     g_test_do_refcount (test);
       
   130   }
       
   131 
       
   132   //g_print ("\n");
       
   133   
       
   134 #ifdef SYMBIAN
       
   135   testResultXml("objects2");
       
   136 #endif /* EMULATOR */
       
   137   return 0;
       
   138 }