grim/guifications3

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();
}