ProteoWizard
cvtest.cpp
Go to the documentation of this file.
1//
2// $Id$
3//
4//
5// Original author: Darren Kessner <darren@proteowizard.org>
6//
7// Copyright 2007 Spielberg Family Center for Applied Proteomics
8// Cedars-Sinai Medical Center, Los Angeles, California 90048
9//
10// Licensed under the Apache License, Version 2.0 (the "License");
11// you may not use this file except in compliance with the License.
12// You may obtain a copy of the License at
13//
14// http://www.apache.org/licenses/LICENSE-2.0
15//
16// Unless required by applicable law or agreed to in writing, software
17// distributed under the License is distributed on an "AS IS" BASIS,
18// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19// See the License for the specific language governing permissions and
20// limitations under the License.
21//
22
23
25#include "cv.hpp"
27#include "boost/thread/thread.hpp"
28#include "boost/thread/barrier.hpp"
29#include <cstring>
30
31
32using namespace pwiz::cv;
33using namespace pwiz::util;
34
35
36ostream* os_ = 0;
37
38
39void test()
40{
41 if (os_)
42 {
43 *os_ << "name: " << cvTermInfo(MS_sample_number).name << endl
44 << "def: " << cvTermInfo(MS_sample_number).def << "\n\n";
45
46 *os_ << "name: " << cvTermInfo(MS_scan_polarity).name << endl
47 << "def: " << cvTermInfo(MS_scan_polarity).def << endl;
48 }
49
50 // some simple tests
51 unit_assert(cvTermInfo(MS_sample_number).name == "sample number");
52 unit_assert(cvTermInfo(MS_contact_email).name == "contact email");
53 unit_assert(cvTermInfo(MS_contact_email).def == "Email address of the contact person or organization.");
54
55 unit_assert(cvTermInfo(MS_zlib_compression).parentsIsA.size() == 1 &&
57
58 unit_assert(cvTermInfo(MS_instrument_model).parentsPartOf.size() == 1 &&
59 cvTermInfo(MS_instrument_model).parentsPartOf[0] == MS_instrument);
60
62
63 unit_assert(cvTermInfo(MS_regular_expressions_for_a_GUID).def == "([A-Fa-f0-9]\\{8\\}-([A-Fa-f0-9]\\{4\\}-)\\{3\\}[A-Fa-f0-9]\\{12\\}).");
64}
65
66
82
83
85{
86 const CVTermInfo& info = cvTermInfo(MS_accuracy);
87 unit_assert(info.otherRelations.size() == 2);
88 unit_assert(info.otherRelations.begin()->first == "has_units");
89 unit_assert(info.otherRelations.begin()->second == MS_m_z);
90 unit_assert(info.otherRelations.rbegin()->first == "has_units");
91 unit_assert(info.otherRelations.rbegin()->second == UO_parts_per_million);
92
93 const CVTermInfo& info2 = cvTermInfo(MS_Trypsin);
94 unit_assert(info2.otherRelations.size() == 1);
95 unit_assert(info2.otherRelations.begin()->first == "has_regexp");
96 unit_assert(info2.otherRelations.begin()->second == MS______KR_____P_);
97}
98
99
101{
102 const CVTermInfo& info = cvTermInfo(MS_B);
103 unit_assert(info.name == "magnetic field strength");
104 unit_assert(info.exactSynonyms.size() == 1);
105 unit_assert(info.exactSynonyms[0] == "B");
106 unit_assert(cvTermInfo(MS_QIT).exactSynonyms.size() == 3);
107
108 unit_assert(cvTermInfo(MS_chemical_ionization).shortName() == "CI");
109 unit_assert(cvTermInfo(MS_FT_ICR).shortName() == "FT_ICR");
111 unit_assert(cvTermInfo(CVID_Unknown).shortName() == "Unknown");
112}
113
114
116{
117 unit_assert(cvTermInfo("MS:1000025").cvid == MS_B);
118 unit_assert(cvTermInfo("MS:1000042").cvid == MS_peak_intensity);
119 unit_assert(cvTermInfo("UO:0000231").cvid == UO_information_unit);
120 unit_assert(cvTermInfo("XX:0000231").cvid == CVID_Unknown);
121 unit_assert(cvTermInfo("FOO:").cvid == CVID_Unknown);
122 unit_assert(cvTermInfo(":FOO").cvid == CVID_Unknown);
123 unit_assert(cvTermInfo("MS").cvid == CVID_Unknown);
124}
125
126
128{
130
131 unit_assert_operator_equal(1, phospho.propertyValues.count("delta_composition"));
132 unit_assert_operator_equal("H O(3) P", phospho.propertyValues.find("delta_composition")->second);
133
134 unit_assert_operator_equal(2, phospho.propertyValues.count("spec_1_site"));
135 unit_assert_operator_equal("T", phospho.propertyValues.equal_range("spec_1_site").first->second);
136 unit_assert_operator_equal("S", (--phospho.propertyValues.equal_range("spec_1_site").second)->second);
137
138 unit_assert_operator_equal(1, phospho.propertyValues.count("spec_2_site"));
139 unit_assert_operator_equal("Y", phospho.propertyValues.find("spec_2_site")->second);
140}
141
142
143void testThreadSafetyWorker(boost::barrier* testBarrier)
144{
145 testBarrier->wait(); // wait until all threads have started
146
147 try
148 {
149 test();
150 testIsA();
152 testSynonyms();
155 }
156 catch (exception& e)
157 {
158 cerr << "Exception in worker thread: " << e.what() << endl;
159 }
160 catch (...)
161 {
162 cerr << "Unhandled exception in worker thread." << endl;
163 }
164}
165
166void testThreadSafety(const int& testThreadCount)
167{
168 boost::barrier testBarrier(testThreadCount);
169 boost::thread_group testThreadGroup;
170 for (int i=0; i < testThreadCount; ++i)
171 testThreadGroup.add_thread(new boost::thread(&testThreadSafetyWorker, &testBarrier));
172 testThreadGroup.join_all();
173}
174
175
176int main(int argc, char* argv[])
177{
178 TEST_PROLOG(argc, argv)
179
180 if (argc>1 && !strcmp(argv[1],"-v")) os_ = &cout;
181
182 try
183 {
184 //testThreadSafety(1); // does not test thread-safety of singleton initialization
189 }
190 catch (exception& e)
191 {
192 TEST_FAILED(e.what())
193 }
194 catch (...)
195 {
196 TEST_FAILED("Caught unknown exception.")
197 }
198
200}
201
void testThreadSafety()
MS_scan_polarity
scan polarity: Relative orientation of the electromagnetic field during the selection and detection o...
Definition cv.hpp:1992
MS_Trypsin
Trypsin: Enzyme trypsin.
Definition cv.hpp:4179
UO_unit
unit: A unit of measurement is a standardized quantity of a physical quality.
Definition cv.hpp:13803
MS_accuracy
accuracy: Accuracy is the degree of conformity of a measured mass to its actual value.
Definition cv.hpp:303
UNIMOD_Phospho
Phospho: Phosphorylation.
Definition cv.hpp:9417
MS_FT_ICR
FT_ICR (fourier transform ion cyclotron resonance mass spectrometer): A mass spectrometer based on th...
Definition cv.hpp:537
MS______KR_____P_
(?<=[KR])(?!P): Regular expression for Trypsin.
Definition cv.hpp:3987
MS_None____OBSOLETE
None ??: None.
Definition cv.hpp:630
MS_B
B (magnetic field strength): A property of space that produces a force on a charged particle equal to...
Definition cv.hpp:339
MS_instrument
instrument: Description of the instrument or the mass spectrometer.
Definition cv.hpp:1983
MS_fourier_transform_ion_cyclotron_resonance_mass_spectrometer
fourier transform ion cyclotron resonance mass spectrometer: A mass spectrometer based on the princip...
Definition cv.hpp:534
MS_instrument_model
instrument model: Instrument model name not including the vendor's name.
Definition cv.hpp:357
MS_mass_analyzer_type
mass analyzer type: Mass analyzer separates the ions according to their mass-to-charge ratio.
Definition cv.hpp:1911
CVID_Unknown
Definition cv.hpp:114
MS_radial_ejection_linear_ion_trap
radial ejection linear ion trap: A linear ion trap mass spectrometer where ions are ejected along the...
Definition cv.hpp:558
MS_m_z
m/z: Three-character symbol m/z is used to denote the quantity formed by dividing the mass of an ion ...
Definition cv.hpp:384
MS_zlib_compression
zlib compression: Zlib.
Definition cv.hpp:2331
UO_mass_unit
mass unit: A unit which is a standard measure of the amount of matter/energy of a physical object.
Definition cv.hpp:13809
MS_binary_data_compression_type
binary data compression type: Compression Type.
Definition cv.hpp:2325
MS_contact_email
contact email: Email address of the contact person or organization.
Definition cv.hpp:2418
UO_dalton
dalton: An independently to the base SI units defined mass unit which is equal to one twelfth of the ...
Definition cv.hpp:14460
MS_regular_expressions_for_a_GUID
).
Definition cv.hpp:7140
MS_QIT
QIT (quadrupole ion trap): Quadrupole Ion Trap mass analyzer captures the ions in a three dimensional...
Definition cv.hpp:552
MS_ion_trap
ion trap: A device for spatially confining ions using electric and magnetic fields alone or in combin...
Definition cv.hpp:1278
UO_parts_per_million
parts per million: A dimensionless concentration notation which denotes the amount of a given substan...
Definition cv.hpp:14304
MS_sample_number
sample number: A reference number relevant to the sample under study.
Definition cv.hpp:264
MS_linear_ion_trap
linear ion trap: A two dimensional Paul ion trap in which ions are confined in the axial dimension by...
Definition cv.hpp:1434
UO_information_unit
information unit: A unit which is a standard measure of the amount of information.
Definition cv.hpp:14490
MS_chemical_ionization
chemical ionization: The formation of a new ion by the reaction of a neutral species with an ion....
Definition cv.hpp:495
UO_energy_unit
energy unit: A unit which is a standard measure of the work done by a certain force (gravitational,...
Definition cv.hpp:14136
MS_peak_intensity
peak intensity: Intensity of ions as measured by the height or area of a peak in a mass spectrum.
Definition cv.hpp:402
void testPropertyValues()
Definition cvtest.cpp:127
int main(int argc, char *argv[])
Definition cvtest.cpp:176
void testIDTranslation()
Definition cvtest.cpp:115
void testSynonyms()
Definition cvtest.cpp:100
void testThreadSafetyWorker(boost::barrier *testBarrier)
Definition cvtest.cpp:143
void testOtherRelations()
Definition cvtest.cpp:84
void testIsA()
Definition cvtest.cpp:67
ostream * os_
Definition cvtest.cpp:36
void test()
Definition cvtest.cpp:39
PWIZ_API_DECL const CVTermInfo & cvTermInfo(CVID cvid)
returns CV term info for the specified CVID
PWIZ_API_DECL bool cvIsA(CVID child, CVID parent)
returns true iff child IsA parent in the CV
structure for holding CV term info
Definition cv.hpp:14944
std::string name
Definition cv.hpp:14947
std::multimap< std::string, CVID > otherRelations
Definition cv.hpp:14954
std::vector< std::string > exactSynonyms
Definition cv.hpp:14955
std::string def
Definition cv.hpp:14948
std::multimap< std::string, std::string > propertyValues
Definition cv.hpp:14956
#define unit_assert(x)
Definition unit.hpp:85
#define TEST_EPILOG
Definition unit.hpp:183
#define TEST_FAILED(x)
Definition unit.hpp:177
#define unit_assert_operator_equal(expected, actual)
Definition unit.hpp:92
#define TEST_PROLOG(argc, argv)
Definition unit.hpp:175