Files
gramps/src/gen/db/test/db_test.py
Paul Franklin 1a4f9cdca7 added GPLv2 and SVN Id line
svn: r18345
2011-10-18 18:14:07 +00:00

283 lines
8.3 KiB
Python

#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2000-2007 Donald N. Allingham
#
# 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# gen/db/test/db_test.py
# $Id$
from gen.db import (DbReadBase, DbWriteBase,
DbBsddbRead, DbBsddb)
from gen.proxy.proxybase import ProxyDbBase
from gen.proxy import LivingProxyDb
class DbTest(object):
READ_METHODS = [
"all_handles",
"close",
"create_id",
"db_has_bm_changes",
"find_backlink_handles",
"find_initial_person",
"find_next_event_gramps_id",
"find_next_family_gramps_id",
"find_next_note_gramps_id",
"find_next_object_gramps_id",
"find_next_person_gramps_id",
"find_next_place_gramps_id",
"find_next_repository_gramps_id",
"find_next_source_gramps_id",
"get_bookmarks",
"get_child_reference_types",
"get_default_handle",
"get_default_person",
"get_event_bookmarks",
"get_event_cursor",
"get_event_from_gramps_id",
"get_event_from_handle",
"get_event_handles",
"get_event_roles",
"get_family_attribute_types",
"get_family_bookmarks",
"get_family_cursor",
"get_family_event_types",
"get_family_from_gramps_id",
"get_family_from_handle",
"get_family_handles",
"get_family_relation_types",
"get_from_handle",
"get_gramps_ids",
"get_media_attribute_types",
"get_media_bookmarks",
"get_media_cursor",
"get_media_object_handles",
"get_mediapath",
"get_name_group_keys",
"get_name_group_mapping",
"get_name_types",
"get_note_bookmarks",
"get_note_cursor",
"get_note_from_gramps_id",
"get_note_from_handle",
"get_note_handles",
"get_note_types",
"get_number_of_events",
"get_number_of_families",
"get_number_of_media_objects",
"get_number_of_notes",
"get_number_of_people",
"get_number_of_places",
"get_number_of_repositories",
"get_number_of_sources",
"get_number_of_tags",
"get_object_from_gramps_id",
"get_object_from_handle",
"get_person_attribute_types",
"get_person_cursor",
"get_person_event_types",
"get_person_from_gramps_id",
"get_person_from_handle",
"get_person_handles",
"get_place_bookmarks",
"get_place_cursor",
"get_place_from_gramps_id",
"get_place_from_handle",
"get_place_handles",
"get_raw_event_data",
"get_raw_family_data",
"get_raw_note_data",
"get_raw_object_data",
"get_raw_person_data",
"get_raw_place_data",
"get_raw_repository_data",
"get_raw_source_data",
"get_raw_tag_data",
"get_reference_map_cursor",
"get_reference_map_primary_cursor",
"get_reference_map_referenced_cursor",
"get_repo_bookmarks",
"get_repository_cursor",
"get_repository_from_gramps_id",
"get_repository_from_handle",
"get_repository_handles",
"get_repository_types",
"get_researcher",
"get_save_path",
"get_source_bookmarks",
"get_source_cursor",
"get_source_from_gramps_id",
"get_source_from_handle",
"get_source_handles",
"get_source_media_types",
"get_tag_cursor",
"get_tag_from_name",
"get_tag_from_handle",
"get_tag_handles",
"get_surname_list",
"get_url_types",
"gramps_upgrade",
"has_event_handle",
"has_family_handle",
"has_gramps_id",
"has_name_group_key",
"has_note_handle",
"has_object_handle",
"has_person_handle",
"has_place_handle",
"has_repository_handle",
"has_source_handle",
"has_tag_handle",
"is_open",
"iter_event_handles",
"iter_events",
"iter_families",
"iter_family_handles",
"iter_media_object_handles",
"iter_media_objects",
"iter_note_handles",
"iter_notes",
"iter_people",
"iter_person_handles",
"iter_place_handles",
"iter_places",
"iter_repositories",
"iter_repository_handles",
"iter_source_handles",
"iter_sources",
"iter_tag_handles",
"iter_tags",
"load",
"report_bm_change",
"request_rebuild",
# Prefix:
"set_event_id_prefix",
"set_family_id_prefix",
"set_note_id_prefix",
"set_object_id_prefix",
"set_person_id_prefix",
"set_place_id_prefix",
"set_prefixes",
"set_repository_id_prefix",
"set_source_id_prefix",
# Other set methods:
"set_mediapath",
"set_redo_callback",
"set_researcher",
"set_save_path",
"set_undo_callback",
"version_supported",
]
WRITE_METHODS = [
"add_event",
"add_family",
"add_family_event",
"add_note",
"add_object",
"add_person",
"add_person_event",
"add_place",
"add_repository",
"add_source",
"add_tag",
"add_to_surname_list",
"build_surname_list",
"commit_base",
"commit_event",
"commit_family",
"commit_family_event",
"commit_media_object",
"commit_note",
"commit_person",
"commit_personal_event",
"commit_place",
"commit_repository",
"commit_source",
"commit_tag",
"delete_primary_from_reference_map",
"need_upgrade",
"rebuild_secondary",
"reindex_reference_map",
"remove_event",
"remove_family",
"remove_from_surname_list",
"remove_note",
"remove_object",
"remove_person",
"remove_place",
"remove_repository",
"remove_source",
"remove_tag",
"set_auto_remove",
"set_default_person_handle",
"set_name_group_mapping",
"sort_surname_list",
"transaction_begin",
"transaction_commit",
"update_reference_map",
"write_version",
]
def __init__(self, db):
self.db = db
def _verify_readonly(self):
print "Verifying readonly", self.db.__class__.__name__
for method in self.READ_METHODS:
assert hasattr(self.db, method), \
("readonly should have a '%s' method" % method)
for method in self.WRITE_METHODS:
assert not hasattr(self.db, method), \
("readonly should NOT have a '%s' method" % method)
print "passed!"
def _verify_readwrite(self):
print "Verifying readwrite", self.db.__class__.__name__
for method in self.READ_METHODS:
assert hasattr(self.db, method), \
("readwrite should have a '%s' method" % method)
for method in self.WRITE_METHODS:
assert hasattr(self.db, method), \
("readwrite should have a '%s' method" % method)
print "passed!"
db1 = DbTest(DbReadBase())
db1._verify_readonly()
db2 = DbTest(DbWriteBase())
db2._verify_readwrite()
from gen.db import DbBsddbRead
db3 = DbTest(DbBsddbRead())
db3._verify_readonly()
from gen.db import DbBsddb
db4 = DbTest(DbBsddb())
db4._verify_readwrite()
from gen.proxy.proxybase import ProxyDbBase
gdb = DbBsddb()
db5 = DbTest(ProxyDbBase(gdb))
db5._verify_readonly()
from gen.proxy import LivingProxyDb
gdb = DbBsddb()
db6 = DbTest(LivingProxyDb(gdb, LivingProxyDb.MODE_EXCLUDE_ALL))
db6._verify_readonly()