os/ossrv/glib/tsrc/BC/tests/refcount/objects2.c
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     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 }