--- /dev/null
+# Copyright (C) 2018, 2019 The Meme Factory, Inc. http://www.karlpinc.com/
+
+# This file is part of PGWUI_Server.
+#
+# This program is free software: you can redistribute it and/or
+# modify it under the terms of the GNU Affero 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
+# Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public
+# License along with this program. If not, see
+# <http://www.gnu.org/licenses/>.
+#
+
+# Karl O. Pinc <kop@karlpinc.com>
+
+'''Exceptions for PGWUI_Common, shared by all PGWUI components
+'''
+
+
+class Error(Exception):
+ '''Base error class for module
+ '''
+ pass
+
+
+class UnknownSettingKeyError(Error):
+ def __init__(self, key):
+ super().__init__('Unknown PGWUI setting: {}'.format(key))
+
+
+class MissingSettingError(Error):
+ def __init__(self, key):
+ super().__init__('Missing PGWUI setting: {}'.format(key))
+
+
+class NotBooleanSettingError(Error):
+ def __init__(self, key, value):
+ super().__init__(
+ 'The "{}" PGWUI setting must be "True" or "False"'
+ .format(key))
--- /dev/null
+# Copyright (C) 2020 The Meme Factory, Inc. http://www.karlpinc.com/
+
+# This file is part of PGWUI_Common.
+#
+# This program is free software: you can redistribute it and/or
+# modify it under the terms of the GNU Affero 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
+# Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public
+# License along with this program. If not, see
+# <http://www.gnu.org/licenses/>.
+#
+
+# Karl O. Pinc <kop@karlpinc.com>
+
+import pgwui_common.exceptions as common_ex
+
+
+# Functional tests
+
+def test_unknownsettingkeyerror():
+ '''Takes an argument'''
+ assert isinstance(common_ex.UnknownSettingKeyError('key'),
+ common_ex.Error)
+
+
+def test_missingsettingerror():
+ '''Takes an argument'''
+ assert isinstance(common_ex.MissingSettingError('key'),
+ common_ex.Error)
+
+
+def test_notbooleansettingerror():
+ '''Takes two arguments'''
+ assert isinstance(common_ex.NotBooleanSettingError('key', 'val'),
+ common_ex.Error)