gplugin/gplugin
Clone
Summary
Browse
Changes
Graph
closing this branch as there is no demand for this
feature/ruby-loader
17 months ago, Gary Kramlich
d44bad5e041e
closing this branch as there is no demand for this
/*
* Copyright (C) 2011-2014 Gary Kramlich <grim@reaperworld.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
#include
<gplugin.h>
#include
<gplugin-native.h>
#include
<glib.h>
#define test_string(var, value) G_STMT_START { \
g_assert_cmpstr((var), ==, (value)); \
g_assert_cmpstr((var), ==, gplugin_plugin_info_get_##var(info)); \
g_free((var)); \
} G_STMT_END
#define test_uint(var, value) G_STMT_START { \
g_assert_cmpuint((var), ==, (value)); \
g_assert_cmpuint((var), ==, gplugin_plugin_info_get_##var(info)); \
} G_STMT_END
#define test_bool(var, value) G_STMT_START { \
g_assert((var) == (value)); \
g_assert((var) == gplugin_plugin_info_get_##var(info)); \
} G_STMT_END
typedef
gchar
**
(
*
TestStringVFunc
)(
GPluginPluginInfo
*
info
);
static
void
test_stringv
(
gchar
**
got
,
const
gchar
*
const
*
const
expected
,
TestStringVFunc
func
,
GPluginPluginInfo
*
info
)
{
gint
i
=
0
;
gchar
**
tmp
=
NULL
;
for
(
i
=
0
;
got
[
i
];
i
++
)
g_assert_cmpstr
(
got
[
i
],
==
,
expected
[
i
]);
tmp
=
func
(
info
);
for
(
i
=
0
;
got
[
i
];
i
++
)
g_assert_cmpstr
(
got
[
i
],
==
,
tmp
[
i
]);
g_strfreev
(
tmp
);
}
/******************************************************************************
* Tests
*****************************************************************************/
static
void
test_gplugin_plugin_info_construction
(
void
)
{
GPluginPluginInfo
*
info
=
NULL
;
gchar
*
id
=
NULL
,
*
name
=
NULL
,
*
version
=
NULL
;
gchar
*
license_id
=
NULL
,
*
license_text
=
NULL
,
*
license_url
=
NULL
;
gchar
*
icon
=
NULL
,
*
summary
=
NULL
,
*
description
=
NULL
,
*
category
=
NULL
;
gchar
*
help
=
NULL
,
*
website
=
NULL
;
gchar
**
authors
=
NULL
,
**
dependencies
=
NULL
;
guint
abi_version
=
0
;
gboolean
internal
=
FALSE
,
load_on_query
=
FALSE
;
const
gchar
*
const
r_authors
[]
=
{
"author"
,
NULL
};
const
gchar
*
const
r_dependencies
[]
=
{
"dependency"
,
NULL
};
info
=
g_object_new
(
GPLUGIN_TYPE_PLUGIN_INFO
,
"id"
,
"gplugin-test/plugin-info-test"
,
"abi_version"
,
GPLUGIN_NATIVE_PLUGIN_ABI_VERSION
,
"internal"
,
TRUE
,
"load-on-query"
,
TRUE
,
"name"
,
"name"
,
"version"
,
"version"
,
"license-id"
,
"license-id"
,
"license-text"
,
"license-text"
,
"license-url"
,
"license-url"
,
"icon"
,
"icon"
,
"summary"
,
"summary"
,
"description"
,
"description"
,
"category"
,
"category"
,
"authors"
,
r_authors
,
"help"
,
"help"
,
"website"
,
"website"
,
"dependencies"
,
r_dependencies
,
NULL
);
g_assert
(
GPLUGIN_IS_PLUGIN_INFO
(
info
));
g_object_get
(
G_OBJECT
(
info
),
"id"
,
&
id
,
"abi_version"
,
&
abi_version
,
"internal"
,
&
internal
,
"load-on-query"
,
&
load_on_query
,
"name"
,
&
name
,
"version"
,
&
version
,
"license-id"
,
&
license_id
,
"license-text"
,
&
license_text
,
"license-url"
,
&
license_url
,
"icon"
,
&
icon
,
"summary"
,
&
summary
,
"description"
,
&
description
,
"category"
,
&
category
,
"authors"
,
&
authors
,
"help"
,
&
help
,
"website"
,
&
website
,
"dependencies"
,
&
dependencies
,
NULL
);
test_string
(
id
,
"gplugin-test/plugin-info-test"
);
test_uint
(
abi_version
,
GPLUGIN_NATIVE_PLUGIN_ABI_VERSION
);
test_bool
(
internal
,
TRUE
);
test_bool
(
load_on_query
,
TRUE
);
test_string
(
name
,
"name"
);
test_string
(
version
,
"version"
);
test_string
(
license_id
,
"license-id"
);
test_string
(
license_text
,
"license-text"
);
test_string
(
license_url
,
"license-url"
);
test_string
(
icon
,
"icon"
);
test_string
(
summary
,
"summary"
);
test_string
(
description
,
"description"
);
test_string
(
category
,
"category"
);
test_stringv
(
authors
,
r_authors
,
(
TestStringVFunc
)
gplugin_plugin_info_get_authors
,
info
);
test_string
(
help
,
"help"
);
test_string
(
website
,
"website"
);
test_stringv
(
dependencies
,
r_dependencies
,
(
TestStringVFunc
)
gplugin_plugin_info_get_dependencies
,
info
);
}
static
void
test_gplugin_plugin_info_new_empty
(
void
)
{
GPluginPluginInfo
*
info
=
NULL
;
gchar
*
id
=
NULL
;
guint32
abi_version
=
0
;
info
=
gplugin_plugin_info_new
(
"empty"
,
1
,
NULL
);
g_assert
(
GPLUGIN_IS_PLUGIN_INFO
(
info
));
g_object_get
(
G_OBJECT
(
info
),
"id"
,
&
id
,
"abi-version"
,
&
abi_version
,
NULL
);
test_string
(
id
,
"empty"
);
test_uint
(
abi_version
,
1
);
g_object_unref
(
G_OBJECT
(
info
));
}
static
void
test_gplugin_plugin_info_new_full
(
void
)
{
GPluginPluginInfo
*
info
=
NULL
;
gchar
*
id
=
NULL
,
*
name
=
NULL
,
*
version
=
NULL
;
gchar
*
license_id
=
NULL
,
*
license_text
=
NULL
,
*
license_url
=
NULL
;
gchar
*
icon
=
NULL
,
*
summary
=
NULL
,
*
description
=
NULL
,
*
category
=
NULL
;
gchar
*
website
=
NULL
,
*
help
=
NULL
;
gchar
**
authors
=
NULL
,
**
dependencies
=
NULL
;
guint
abi_version
=
0
;
gboolean
internal
=
FALSE
,
load_on_query
=
FALSE
;
const
gchar
*
const
r_authors
[]
=
{
"author"
,
NULL
};
const
gchar
*
const
r_dependencies
[]
=
{
"dependency"
,
NULL
};
info
=
gplugin_plugin_info_new
(
"gplugin-test/plugin-info-test"
,
GPLUGIN_NATIVE_PLUGIN_ABI_VERSION
,
"internal"
,
TRUE
,
"load-on-query"
,
TRUE
,
"name"
,
"name"
,
"version"
,
"version"
,
"license-id"
,
"license-id"
,
"license-text"
,
"license-text"
,
"license-url"
,
"license-url"
,
"icon"
,
"icon"
,
"summary"
,
"summary"
,
"description"
,
"description"
,
"category"
,
"category"
,
"authors"
,
r_authors
,
"help"
,
"help"
,
"website"
,
"website"
,
"dependencies"
,
r_dependencies
,
NULL
);
g_assert
(
GPLUGIN_IS_PLUGIN_INFO
(
info
));
g_object_get
(
G_OBJECT
(
info
),
"id"
,
&
id
,
"abi_version"
,
&
abi_version
,
"internal"
,
&
internal
,
"load-on-query"
,
&
load_on_query
,
"name"
,
&
name
,
"version"
,
&
version
,
"license-id"
,
&
license_id
,
"license-text"
,
&
license_text
,
"license-url"
,
&
license_url
,
"icon"
,
&
icon
,
"summary"
,
&
summary
,
"description"
,
&
description
,
"category"
,
&
category
,
"authors"
,
&
authors
,
"help"
,
&
help
,
"website"
,
&
website
,
"dependencies"
,
&
dependencies
,
NULL
);
test_string
(
id
,
"gplugin-test/plugin-info-test"
);
test_uint
(
abi_version
,
GPLUGIN_NATIVE_PLUGIN_ABI_VERSION
);
test_bool
(
internal
,
TRUE
);
test_bool
(
load_on_query
,
TRUE
);
test_string
(
name
,
"name"
);
test_string
(
version
,
"version"
);
test_string
(
license_id
,
"license-id"
);
test_string
(
license_text
,
"license-text"
);
test_string
(
license_url
,
"license-url"
);
test_string
(
icon
,
"icon"
);
test_string
(
summary
,
"summary"
);
test_string
(
description
,
"description"
);
test_string
(
category
,
"category"
);
test_stringv
(
authors
,
r_authors
,
(
TestStringVFunc
)
gplugin_plugin_info_get_authors
,
info
);
test_string
(
help
,
"help"
);
test_string
(
website
,
"website"
);
test_stringv
(
dependencies
,
r_dependencies
,
(
TestStringVFunc
)
gplugin_plugin_info_get_dependencies
,
info
);
}
static
void
test_gplugin_plugin_info_authors_single
(
void
)
{
GPluginPluginInfo
*
info
=
NULL
;
const
gchar
*
const
authors
[]
=
{
"author"
,
NULL
};
const
gchar
*
const
*
g_authors
=
NULL
;
gint
i
;
info
=
gplugin_plugin_info_new
(
"test/single-author"
,
GPLUGIN_NATIVE_PLUGIN_ABI_VERSION
,
"authors"
,
authors
,
NULL
);
g_authors
=
gplugin_plugin_info_get_authors
(
info
);
for
(
i
=
0
;
authors
[
i
];
i
++
)
g_assert_cmpstr
(
authors
[
i
],
==
,
g_authors
[
i
]);
g_object_unref
(
G_OBJECT
(
info
));
}
static
void
test_gplugin_plugin_info_authors_multiple
(
void
)
{
GPluginPluginInfo
*
info
=
NULL
;
const
gchar
*
const
authors
[]
=
{
"author1"
,
"author2"
,
NULL
};
const
gchar
*
const
*
g_authors
=
NULL
;
gint
i
;
info
=
gplugin_plugin_info_new
(
"test/single-author"
,
GPLUGIN_NATIVE_PLUGIN_ABI_VERSION
,
"authors"
,
authors
,
NULL
);
g_authors
=
gplugin_plugin_info_get_authors
(
info
);
for
(
i
=
0
;
authors
[
i
];
i
++
)
g_assert_cmpstr
(
authors
[
i
],
==
,
g_authors
[
i
]);
g_object_unref
(
G_OBJECT
(
info
));
}
static
void
test_gplugin_plugin_info_dependencies_single
(
void
)
{
GPluginPluginInfo
*
info
=
NULL
;
gchar
*
dependencies
[]
=
{
"dependency1"
,
NULL
};
const
gchar
*
const
*
g_dependencies
=
NULL
;
gint
i
;
info
=
gplugin_plugin_info_new
(
"test/single-dependency"
,
GPLUGIN_NATIVE_PLUGIN_ABI_VERSION
,
"dependencies"
,
dependencies
,
NULL
);
g_dependencies
=
gplugin_plugin_info_get_dependencies
(
info
);
for
(
i
=
0
;
dependencies
[
i
];
i
++
)
g_assert_cmpstr
(
dependencies
[
i
],
==
,
g_dependencies
[
i
]);
g_object_unref
(
G_OBJECT
(
info
));
}
static
void
test_gplugin_plugin_info_dependencies_multiple
(
void
)
{
GPluginPluginInfo
*
info
=
NULL
;
gchar
*
dependencies
[]
=
{
"dependencie1"
,
"dependencie2"
,
NULL
};
const
gchar
*
const
*
g_dependencies
=
NULL
;
gint
i
;
info
=
gplugin_plugin_info_new
(
"test/single-dependencie"
,
GPLUGIN_NATIVE_PLUGIN_ABI_VERSION
,
"dependencies"
,
dependencies
,
NULL
);
g_dependencies
=
gplugin_plugin_info_get_dependencies
(
info
);
for
(
i
=
0
;
dependencies
[
i
];
i
++
)
g_assert_cmpstr
(
dependencies
[
i
],
==
,
g_dependencies
[
i
]);
g_object_unref
(
G_OBJECT
(
info
));
}
/******************************************************************************
* version_func tests
*****************************************************************************/
static
void
test_gplugin_plugin_info_version_func
(
GPluginVersionCompareFunc
func
)
{
GPluginPluginInfo
*
info
=
NULL
;
GPluginVersionCompareFunc
got
=
NULL
;
info
=
gplugin_plugin_info_new
(
"test/version-func"
,
GPLUGIN_NATIVE_PLUGIN_ABI_VERSION
,
"version-func"
,
func
,
NULL
);
got
=
gplugin_plugin_info_get_version_func
(
info
);
g_assert
(
func
==
got
);
}
static
gint
test_gplugin_version_compare
(
GPLUGIN_UNUSED
const
gchar
*
v1
,
GPLUGIN_UNUSED
const
gchar
*
v2
)
{
return
0
;
}
static
void
test_gplugin_plugin_info_version_func_null
(
void
)
{
test_gplugin_plugin_info_version_func
(
NULL
);
}
static
void
test_gplugin_plugin_info_version_func_default
(
void
)
{
test_gplugin_plugin_info_version_func
(
(
GPluginVersionCompareFunc
)
gplugin_version_compare
);
}
static
void
test_gplugin_plugin_info_version_func_custom
(
void
)
{
test_gplugin_plugin_info_version_func
(
(
GPluginVersionCompareFunc
)
test_gplugin_version_compare
);
}
/******************************************************************************
* Main
*****************************************************************************/
gint
main
(
gint
argc
,
gchar
**
argv
)
{
g_test_init
(
&
argc
,
&
argv
,
NULL
);
gplugin_init
();
g_test_add_func
(
"/plugin-info/construction"
,
test_gplugin_plugin_info_construction
);
g_test_add_func
(
"/plugin-info/new/empty"
,
test_gplugin_plugin_info_new_empty
);
g_test_add_func
(
"/plugin-info/new/full"
,
test_gplugin_plugin_info_new_full
);
g_test_add_func
(
"/plugin-info/authors/single"
,
test_gplugin_plugin_info_authors_single
);
g_test_add_func
(
"/plugin-info/authors/multiple"
,
test_gplugin_plugin_info_authors_multiple
);
g_test_add_func
(
"/plugin-info/dependencies/single"
,
test_gplugin_plugin_info_dependencies_single
);
g_test_add_func
(
"/plugin-info/dependencies/multiple"
,
test_gplugin_plugin_info_dependencies_multiple
);
g_test_add_func
(
"/plugin-info/version-func/null"
,
test_gplugin_plugin_info_version_func_null
);
g_test_add_func
(
"/plugin-info/version-func/default"
,
test_gplugin_plugin_info_version_func_default
);
g_test_add_func
(
"/plugin-info/version-func/custom"
,
test_gplugin_plugin_info_version_func_custom
);
return
g_test_run
();
}