grim/guifications3
Clone
Summary
Browse
Changes
Graph
added the install prefix to gflib-genheader
cmake
2010-12-13, Gary Kramlich
999ee3e165df
added the install prefix to gflib-genheader
/*
* Guifications - The end-all, be-all notification framework
* Copyright (C) 2003-2009 Gary Kramlich <grim@reaperworld.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* This test starts with a log level of verbose, and works it's way up to
* critial messages only. Each pass a message is "logged" for each level.
* As we keep running through, a level is hidden, which of course is the
* desired affect. :)
*/
#include
<gflib/gf_lib.h>
/******************************************************************************
* Objects
*****************************************************************************/
typedef
struct
{
GfLogger
parent
;
gint
count
;
}
GfLoggerCounter
;
typedef
struct
{
GfLoggerClass
parent
;
}
GfLoggerCounterClass
;
typedef
struct
{
GfLoggerCounter
*
logger
;
}
GfLoggerLevelData
;
#define GF_TYPE_LOGGER_COUNTER (gf_logger_counter_get_type())
#define GF_LOGGER_COUNTER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GF_TYPE_LOGGER_COUNTER, GfLoggerCounter))
static
GType
gf_logger_counter_get_type
(
void
);
static
void
gf_logger_counter_write
(
GfLogger
*
logger
,
GfLogLevel
level
,
const
gchar
*
category
,
const
gchar
*
format
,
va_list
args
)
{
GfLoggerCounter
*
counter
=
GF_LOGGER_COUNTER
(
logger
);
counter
->
count
++
;
}
static
void
gf_logger_counter_class_init
(
GfLoggerCounterClass
*
klass
)
{
GfLoggerClass
*
logger_class
=
GF_LOGGER_CLASS
(
klass
);
logger_class
->
write
=
gf_logger_counter_write
;
}
static
void
gf_logger_counter_init
(
GfLoggerCounter
*
counter
)
{
counter
->
count
=
0
;
}
G_DEFINE_TYPE
(
GfLoggerCounter
,
gf_logger_counter
,
GF_TYPE_LOGGER
);
/******************************************************************************
* level tests
*****************************************************************************/
static
void
gf_logger_test_level_setup
(
GfLoggerLevelData
*
fix
,
gconstpointer
data
)
{
GfLogLevel
level
=
GF_LOG_LEVEL_UNKNOWN
;
fix
->
logger
=
g_object_new
(
GF_TYPE_LOGGER_COUNTER
,
NULL
);
g_assert
(
fix
->
logger
!=
NULL
);
gf_log_set_logger
(
GF_LOGGER
(
fix
->
logger
));
g_assert
(
gf_log_get_logger
()
==
GF_LOGGER
(
fix
->
logger
));
level
=
GPOINTER_TO_INT
(
data
);
gf_log_set_level
(
level
);
g_assert
(
gf_log_get_level
()
==
level
);
}
static
void
gf_logger_test_level_teardown
(
GfLoggerLevelData
*
fix
,
gconstpointer
data
)
{
g_object_unref
(
G_OBJECT
(
fix
->
logger
));
fix
->
logger
=
NULL
;
}
static
void
gf_logger_test_level
(
GfLoggerLevelData
*
fix
,
gconstpointer
data
)
{
GfLogLevel
level
=
GPOINTER_TO_INT
(
data
);
gint
i
=
0
,
count
=
0
;
for
(
i
=
GF_LOG_LEVEL_VERBOSE
;
i
<
GF_LOG_LEVELS
;
i
++
)
gf_logv
(
i
,
"test"
,
"test"
);
count
=
GF_LOG_LEVELS
-
level
;
g_assert
(
fix
->
logger
->
count
==
count
);
}
/******************************************************************************
* main
*****************************************************************************/
gint
main
(
gint
argc
,
gchar
**
argv
)
{
g_test_init
(
&
argc
,
&
argv
,
NULL
);
gf_lib_init
(
NULL
,
NULL
);
g_test_add
(
"/logger/level/verbose"
,
GfLoggerLevelData
,
GINT_TO_POINTER
(
GF_LOG_LEVEL_VERBOSE
),
gf_logger_test_level_setup
,
gf_logger_test_level
,
gf_logger_test_level_teardown
);
g_test_add
(
"/logger/level/info"
,
GfLoggerLevelData
,
GINT_TO_POINTER
(
GF_LOG_LEVEL_INFO
),
gf_logger_test_level_setup
,
gf_logger_test_level
,
gf_logger_test_level_teardown
);
g_test_add
(
"/logger/level/event"
,
GfLoggerLevelData
,
GINT_TO_POINTER
(
GF_LOG_LEVEL_EVENT
),
gf_logger_test_level_setup
,
gf_logger_test_level
,
gf_logger_test_level_teardown
);
g_test_add
(
"/logger/level/warning"
,
GfLoggerLevelData
,
GINT_TO_POINTER
(
GF_LOG_LEVEL_WARNING
),
gf_logger_test_level_setup
,
gf_logger_test_level
,
gf_logger_test_level_teardown
);
g_test_add
(
"/logger/level/critical"
,
GfLoggerLevelData
,
GINT_TO_POINTER
(
GF_LOG_LEVEL_CRITICAL
),
gf_logger_test_level_setup
,
gf_logger_test_level
,
gf_logger_test_level_teardown
);
return
g_test_run
();
}