ProteoWizard
cvtest.cpp
Go to the documentation of this file.
1 //
2 // $Id: cvtest.cpp 4129 2012-11-20 00:05:37Z chambm $
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 
32 using namespace pwiz::cv;
33 using namespace pwiz::util;
34 
35 
36 ostream* os_ = 0;
37 
38 
39 void 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_polarity).name << endl
47  << "def: " << cvTermInfo(MS_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 &&
60 
62 }
63 
64 
65 void testIsA()
66 {
79 }
80 
81 
83 {
84  const CVTermInfo& info = cvTermInfo(MS_accuracy);
85  unit_assert(info.otherRelations.size() == 2);
86  unit_assert(info.otherRelations.begin()->first == "has_units");
87  unit_assert(info.otherRelations.begin()->second == MS_m_z);
88  unit_assert(info.otherRelations.rbegin()->first == "has_units");
89  unit_assert(info.otherRelations.rbegin()->second == UO_parts_per_million);
90 
91  const CVTermInfo& info2 = cvTermInfo(MS_Trypsin);
92  unit_assert(info2.otherRelations.size() == 1);
93  unit_assert(info2.otherRelations.begin()->first == "has_regexp");
94  unit_assert(info2.otherRelations.begin()->second == MS______KR_____P_);
95 }
96 
97 
99 {
100  const CVTermInfo& info = cvTermInfo(MS_B);
101  unit_assert(info.name == "magnetic field strength");
102  unit_assert(info.exactSynonyms.size() == 1);
103  unit_assert(info.exactSynonyms[0] == "B");
104  unit_assert(cvTermInfo(MS_QIT).exactSynonyms.size() == 3);
105 
106  unit_assert(cvTermInfo(MS_chemical_ionization).shortName() == "CI");
107  unit_assert(cvTermInfo(MS_FT_ICR).shortName() == "FT_ICR");
109  unit_assert(cvTermInfo(CVID_Unknown).shortName() == "Unknown");
110 }
111 
112 
114 {
115  unit_assert(cvTermInfo("MS:1000025").cvid == MS_B);
116  unit_assert(cvTermInfo("MS:1000042").cvid == MS_peak_intensity);
117  unit_assert(cvTermInfo("UO:0000231").cvid == UO_information_unit);
118  unit_assert(cvTermInfo("XX:0000231").cvid == CVID_Unknown);
119  unit_assert(cvTermInfo("FOO:").cvid == CVID_Unknown);
120  unit_assert(cvTermInfo(":FOO").cvid == CVID_Unknown);
121  unit_assert(cvTermInfo("MS").cvid == CVID_Unknown);
122 }
123 
124 
126 {
128 
129  unit_assert_operator_equal(1, phospho.propertyValues.count("delta_composition"));
130  unit_assert_operator_equal("H O(3) P", phospho.propertyValues.find("delta_composition")->second);
131 
132  unit_assert_operator_equal(2, phospho.propertyValues.count("spec_1_site"));
133  unit_assert_operator_equal("T", phospho.propertyValues.equal_range("spec_1_site").first->second);
134  unit_assert_operator_equal("S", (--phospho.propertyValues.equal_range("spec_1_site").second)->second);
135 
136  unit_assert_operator_equal(1, phospho.propertyValues.count("spec_2_site"));
137  unit_assert_operator_equal("Y", phospho.propertyValues.find("spec_2_site")->second);
138 }
139 
140 
141 void testThreadSafetyWorker(boost::barrier* testBarrier)
142 {
143  testBarrier->wait(); // wait until all threads have started
144 
145  try
146  {
147  test();
148  testIsA();
150  testSynonyms();
153  }
154  catch (exception& e)
155  {
156  cerr << "Exception in worker thread: " << e.what() << endl;
157  }
158  catch (...)
159  {
160  cerr << "Unhandled exception in worker thread." << endl;
161  }
162 }
163 
164 void testThreadSafety(const int& testThreadCount)
165 {
166  boost::barrier testBarrier(testThreadCount);
167  boost::thread_group testThreadGroup;
168  for (int i=0; i < testThreadCount; ++i)
169  testThreadGroup.add_thread(new boost::thread(&testThreadSafetyWorker, &testBarrier));
170  testThreadGroup.join_all();
171 }
172 
173 
174 int main(int argc, char* argv[])
175 {
176  TEST_PROLOG(argc, argv)
177 
178  if (argc>1 && !strcmp(argv[1],"-v")) os_ = &cout;
179 
180  try
181  {
182  //testThreadSafety(1); // does not test thread-safety of singleton initialization
183  testThreadSafety(2);
184  testThreadSafety(4);
185  testThreadSafety(8);
186  testThreadSafety(16);
187  }
188  catch (exception& e)
189  {
190  TEST_FAILED(e.what())
191  }
192  catch (...)
193  {
194  TEST_FAILED("Caught unknown exception.")
195  }
196 
198 }
199 
ostream * os_
Definition: cvtest.cpp:36
MS_instrument
instrument: Description of the instrument or the mass spectrometer.
Definition: cv.hpp:1823
MS_polarity
polarity: Terms to describe the polarity setting of the instrument.
Definition: cv.hpp:206
PWIZ_API_DECL const CVTermInfo & cvTermInfo(CVID cvid)
returns CV term info for the specified CVID
void testOtherRelations()
Definition: cvtest.cpp:82
PWIZ_API_DECL const CV & cv(const std::string &prefix)
returns a CV object for the specified namespace (prefix); currently supported namespaces are: MS UO ...
std::multimap< std::string, std::string > propertyValues
Definition: cv.hpp:10197
MS_FT_ICR
FT_ICR (fourier transform ion cyclotron resonance mass spectrometer): A mass spectrometer based on th...
Definition: cv.hpp:368
MS_binary_data_compression_type
binary data compression type: Compression Type.
Definition: cv.hpp:2165
MS______KR_____P_
(?<=[KR])(?!P):
Definition: cv.hpp:3827
MS_Trypsin
Trypsin:
Definition: cv.hpp:4019
std::string def
Definition: cv.hpp:10189
#define TEST_EPILOG
Definition: unit.hpp:166
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:365
UO_information_unit
information unit: A unit which is a standard measure of the amount of information.
Definition: cv.hpp:9986
UO_parts_per_million
parts per million: A dimensionless concentration notation which denotes the amount of a given substan...
Definition: cv.hpp:9800
MS_B
B (magnetic field strength): A property of space that produces a force on a charged particle equal to...
Definition: cv.hpp:170
MS_accuracy
accuracy: Accuracy is the degree of conformity of a measured mass to its actual value.
Definition: cv.hpp:134
structure for holding CV term info
Definition: cv.hpp:10184
void testIsA()
Definition: cvtest.cpp:65
MS_contact_email
contact email: Email address of the contact person or organization.
Definition: cv.hpp:2258
id_list parentsIsA
Definition: cv.hpp:10193
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:233
int main(int argc, char *argv[])
Definition: cvtest.cpp:174
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:389
#define unit_assert_operator_equal(expected, actual)
Definition: unit.hpp:86
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:215
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:9305
std::vector< std::string > exactSynonyms
Definition: cv.hpp:10196
id_list parentsPartOf
Definition: cv.hpp:10194
void testSynonyms()
Definition: cvtest.cpp:98
std::string name
Definition: cv.hpp:10188
void testThreadSafety(const int &testThreadCount)
Definition: cvtest.cpp:164
UO_dalton
dalton: An independently to the base SI units defined mass unit which is equal to one twelfth of the ...
Definition: cv.hpp:9956
MS_instrument_model
instrument model: Instrument model name not including the vendor's name.
Definition: cv.hpp:188
UO_unit
unit: A unit of measurement is a standardized quantity of a physical quality.
Definition: cv.hpp:9299
MS_sample_number
sample number: A reference number relevant to the sample under study.
Definition: cv.hpp:95
void testPropertyValues()
Definition: cvtest.cpp:125
MS_mass_analyzer_type
mass analyzer type: Mass analyzer separates the ions according to their mass-to-charge ratio...
Definition: cv.hpp:1751
std::multimap< std::string, CVID > otherRelations
Definition: cv.hpp:10195
MS_zlib_compression
zlib compression: Zlib.
Definition: cv.hpp:2171
#define TEST_FAILED(x)
Definition: unit.hpp:160
UO_energy_unit
energy unit: A unit which is a standard measure of the work done by a certain force (gravitational...
Definition: cv.hpp:9632
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:1274
CVID_Unknown
Definition: cv.hpp:89
UNIMOD_Phospho
Phospho: Phosphorylation.
Definition: cv.hpp:6497
MS_QIT
QIT (quadrupole ion trap): Quadrupole Ion Trap mass analyzer captures the ions in a three dimensional...
Definition: cv.hpp:383
MS_ion_trap
ion trap: A device for spatially confining ions using electric and magnetic fields alone or in combin...
Definition: cv.hpp:1118
#define TEST_PROLOG(argc, argv)
Definition: unit.hpp:158
void testIDTranslation()
Definition: cvtest.cpp:113
void testThreadSafetyWorker(boost::barrier *testBarrier)
Definition: cvtest.cpp:141
void test()
Definition: cvtest.cpp:39
MS_None_____OBSOLETE
None ??: None.
Definition: cv.hpp:461
#define unit_assert(x)
Definition: unit.hpp:82
MS_chemical_ionization
chemical ionization: The formation of a new ion by the reaction of a neutral species with an ion...
Definition: cv.hpp:326
PWIZ_API_DECL bool cvIsA(CVID child, CVID parent)
returns true iff child IsA parent in the CV