1 /**
2 * \file TestSBMLDocumentPlugin.cpp
3 * \brief SBMLDocumentPlugin unit tests
4 * \author Frank T. Bergmann <fbergman@caltech.edu>
5 *
6 * <!--------------------------------------------------------------------------
7 * This file is part of libSBML. Please visit http://sbml.org for more
8 * information about SBML, and the latest version of libSBML.
9 *
10 * Copyright (C) 2020 jointly by the following organizations:
11 * 1. California Institute of Technology, Pasadena, CA, USA
12 * 2. University of Heidelberg, Heidelberg, Germany
13 * 3. University College London, London, UK
14 *
15 * Copyright (C) 2019 jointly by the following organizations:
16 * 1. California Institute of Technology, Pasadena, CA, USA
17 * 2. University of Heidelberg, Heidelberg, Germany
18 *
19 * Copyright (C) 2013-2018 jointly by the following organizations:
20 * 1. California Institute of Technology, Pasadena, CA, USA
21 * 2. EMBL European Bioinformatics Institute (EMBL-EBI), Hinxton, UK
22 * 3. University of Heidelberg, Heidelberg, Germany
23 *
24 * Copyright (C) 2009-2013 jointly by the following organizations:
25 * 1. California Institute of Technology, Pasadena, CA, USA
26 * 2. EMBL European Bioinformatics Institute (EMBL-EBI), Hinxton, UK
27 *
28 * Copyright (C) 2006-2008 by the California Institute of Technology,
29 * Pasadena, CA, USA
30 *
31 * Copyright (C) 2002-2005 jointly by the following organizations:
32 * 1. California Institute of Technology, Pasadena, CA, USA
33 * 2. Japan Science and Technology Agency, Japan
34 *
35 * This library is free software; you can redistribute it and/or modify it
36 * under the terms of the GNU Lesser General Public License as published by
37 * the Free Software Foundation. A copy of the license agreement is provided
38 * in the file named "LICENSE.txt" included with this software distribution
39 * and also available online as http://sbml.org/software/libsbml/license.html
40 * ---------------------------------------------------------------------- -->*/
41
42 #if defined(__cplusplus)
43 #include <iostream>
44 #endif
45
46 #include <check.h>
47
48 #include <sbml/common/common.h>
49 #include <sbml/common/extern.h>
50
51 #include <sbml/extension/SBMLExtension.h>
52 #include <sbml/extension/SBMLExtensionRegistry.h>
53 #include <sbml/extension/SBasePluginCreator.h>
54 #include <sbml/extension/SBMLDocumentPlugin.h>
55 #include <sbml/extension/SBaseExtensionPoint.h>
56
57 #include <sbml/SBMLTypes.h>
58
59 #include "TestPackage.h"
60
61
62 using namespace std;
63 LIBSBML_CPP_NAMESPACE_USE
64
65 BEGIN_C_DECLS
66
START_TEST(test_SBMLDocumentPlugin_create)67 START_TEST (test_SBMLDocumentPlugin_create)
68 {
69 TestPkgNamespaces ns(3, 1, 1);
70 string uri = TestExtension::getXmlnsL3V1V1();
71 string prefix = "prefix";
72 std::vector<std::string> packageURIs;
73 packageURIs.push_back(uri);
74
75 // create a creator for TestModelPlugins
76 SBaseExtensionPoint sbmldocExtPoint("core",SBML_DOCUMENT);
77 SBasePluginCreator<SBMLDocumentPlugin, TestExtension> sbmldocPluginCreator(sbmldocExtPoint,packageURIs);
78
79 fail_unless(sbmldocPluginCreator.getNumOfSupportedPackageURI() == 1);
80 fail_unless(strcmp(sbmldocPluginCreator.getSupportedPackageURI(0).c_str(), uri.c_str()) == 0);
81 fail_unless(strcmp(sbmldocPluginCreator.getSupportedPackageURI(10000).c_str(), "") == 0);
82 fail_unless(sbmldocPluginCreator.getTargetExtensionPoint().getPackageName() == sbmldocExtPoint.getPackageName());
83 fail_unless(sbmldocPluginCreator.getTargetExtensionPoint().getTypeCode() == sbmldocExtPoint.getTypeCode());
84 fail_unless(sbmldocPluginCreator.getTargetPackageName() == sbmldocExtPoint.getPackageName());
85 fail_unless(sbmldocPluginCreator.getTargetSBMLTypeCode() == sbmldocExtPoint.getTypeCode());
86 fail_unless(sbmldocPluginCreator.isSupported(uri));
87
88 SBMLDocumentPlugin *plugin = sbmldocPluginCreator.createPlugin(uri, prefix, ns.getNamespaces());
89
90 fail_unless(plugin != NULL);
91 fail_unless(plugin->isSetRequired() == false);
92 fail_unless(plugin->getRequired() == true);
93 plugin->setRequired(false);
94 fail_unless(plugin->isSetRequired() == true);
95 fail_unless(plugin->getRequired() == false);
96
97 delete plugin;
98
99
100 }
101 END_TEST
102
START_TEST(test_SBMLDocumentPlugin_c_api)103 START_TEST (test_SBMLDocumentPlugin_c_api)
104 {
105 TestPkgNamespaces ns(3, 1, 1);
106 string uri = TestExtension::getXmlnsL3V1V1();
107 string prefix = "prefix";
108 std::vector<std::string> packageURIs;
109 packageURIs.push_back(uri);
110
111 // create a creator for TestModelPlugins
112 SBaseExtensionPoint sbmldocExtPoint("core",SBML_DOCUMENT);
113 SBasePluginCreator<SBMLDocumentPlugin, TestExtension> sbmldocPluginCreator(sbmldocExtPoint,packageURIs);
114
115 fail_unless(sbmldocPluginCreator.getNumOfSupportedPackageURI() == 1);
116 fail_unless(strcmp(sbmldocPluginCreator.getSupportedPackageURI(0).c_str(), uri.c_str()) == 0);
117 fail_unless(strcmp(sbmldocPluginCreator.getSupportedPackageURI(10000).c_str(), "") == 0);
118 fail_unless(sbmldocPluginCreator.getTargetExtensionPoint().getPackageName() == sbmldocExtPoint.getPackageName());
119 fail_unless(sbmldocPluginCreator.getTargetExtensionPoint().getTypeCode() == sbmldocExtPoint.getTypeCode());
120 fail_unless(sbmldocPluginCreator.getTargetPackageName() == sbmldocExtPoint.getPackageName());
121 fail_unless(sbmldocPluginCreator.getTargetSBMLTypeCode() == sbmldocExtPoint.getTypeCode());
122 fail_unless(sbmldocPluginCreator.isSupported(uri));
123
124 SBMLDocumentPlugin_t* plugin = SBMLDocumentPlugin_create(uri.c_str(), prefix.c_str(), &ns);
125 fail_unless(plugin != NULL);
126 fail_unless(SBMLDocumentPlugin_isSetRequired(plugin) == (int)false);
127 fail_unless(SBMLDocumentPlugin_getRequired(plugin) == (int)true);
128 SBMLDocumentPlugin_setRequired(plugin, (int)true);
129 fail_unless(SBMLDocumentPlugin_isSetRequired(plugin) == (int)true);
130 fail_unless(SBMLDocumentPlugin_getRequired(plugin) == (int)true);
131 SBMLDocumentPlugin_setRequired(plugin, (int)false);
132 fail_unless(SBMLDocumentPlugin_isSetRequired(plugin) == (int)true);
133 fail_unless(SBMLDocumentPlugin_getRequired(plugin) == (int)false);
134 SBMLDocumentPlugin_unsetRequired(plugin);
135 fail_unless(SBMLDocumentPlugin_isSetRequired(plugin) == (int)false);
136
137 fail_unless(SBMLDocumentPlugin_free(plugin) == LIBSBML_OPERATION_SUCCESS);
138
139 fail_unless(SBMLDocumentPlugin_create(NULL, NULL, NULL) == NULL);
140 fail_unless(SBMLDocumentPlugin_getRequired(NULL) == LIBSBML_INVALID_OBJECT);
141 fail_unless(SBMLDocumentPlugin_setRequired(NULL, 0) == LIBSBML_INVALID_OBJECT);
142
143 }
144 END_TEST
145
146
147 Suite *
create_suite_SBMLDocumentPlugin(void)148 create_suite_SBMLDocumentPlugin (void)
149 {
150 Suite *suite = suite_create("SBMLDocumentPlugin");
151 TCase *tcase = tcase_create("SBMLDocumentPlugin");
152
153 tcase_add_test( tcase, test_SBMLDocumentPlugin_create );
154 tcase_add_test( tcase, test_SBMLDocumentPlugin_c_api );
155
156 suite_add_tcase(suite, tcase);
157
158 return suite;
159 }
160
161 END_C_DECLS
162
163