Mercurial > hg > svcore
comparison data/model/test/TestSparseModels.h @ 1643:7a23dfe65d66 single-point
Update NoteModel to use EventSeries. This is incomplete and won't provide enough to update svgui for it yet; must also refactor to avoid duplication of nasty APIs when updating the rest of the models
author | Chris Cannam |
---|---|
date | Wed, 13 Mar 2019 14:50:10 +0000 |
parents | 2e14a7876945 |
children | 513192aa9b03 |
comparison
equal
deleted
inserted
replaced
1642:d591836e47ef | 1643:7a23dfe65d66 |
---|---|
91 m.addPoint(p2); | 91 m.addPoint(p2); |
92 m.addPoint(p3); | 92 m.addPoint(p3); |
93 QCOMPARE(m.getPoints().size(), 3); | 93 QCOMPARE(m.getPoints().size(), 3); |
94 QCOMPARE(*m.getPoints().begin(), p1); | 94 QCOMPARE(*m.getPoints().begin(), p1); |
95 QCOMPARE(*m.getPoints().rbegin(), p3); | 95 QCOMPARE(*m.getPoints().rbegin(), p3); |
96 | 96 /*!!! |
97 auto pp = m.getPoints(20, 30); | 97 auto pp = m.getPoints(20, 30); |
98 QCOMPARE(pp.size(), 2); | 98 QCOMPARE(pp.size(), 2); |
99 QCOMPARE(*pp.begin(), p1); | 99 QCOMPARE(*pp.begin(), p1); |
100 QCOMPARE(*pp.rbegin(), p2); | 100 QCOMPARE(*pp.rbegin(), p2); |
101 | 101 |
102 pp = m.getPoints(40, 50); | 102 pp = m.getPoints(40, 50); |
103 QCOMPARE(pp.size(), 0); | 103 QCOMPARE(pp.size(), 0); |
104 | 104 |
105 pp = m.getPoints(50, 50); | 105 pp = m.getPoints(50, 50); |
106 QCOMPARE(pp.size(), 1); | 106 QCOMPARE(pp.size(), 1); |
107 QCOMPARE(*pp.begin(), p3); | 107 QCOMPARE(*pp.begin(), p3); |
108 */ | |
108 } | 109 } |
109 | 110 |
110 void s1d_xml() { | 111 void s1d_xml() { |
111 SparseOneDimensionalModel m(100, 10, false); | 112 SparseOneDimensionalModel m(100, 10, false); |
112 m.setObjectName("This \"&\" that"); | 113 m.setObjectName("This \"&\" that"); |
134 QCOMPARE(xml, expected); | 135 QCOMPARE(xml, expected); |
135 } | 136 } |
136 | 137 |
137 void note_extents() { | 138 void note_extents() { |
138 NoteModel m(100, 10, false); | 139 NoteModel m(100, 10, false); |
139 NoteModel::Point p1(20, 123.4f, 40, 0.8f, "note 1"); | 140 Event p1(20, 123.4f, 40, 0.8f, "note 1"); |
140 m.addPoint(p1); | 141 m.addPoint(p1); |
141 QCOMPARE(m.isEmpty(), false); | 142 QCOMPARE(m.isEmpty(), false); |
142 QCOMPARE(m.getPointCount(), 1); | 143 QCOMPARE(m.getPointCount(), 1); |
143 NoteModel::Point p2(50, 124.3f, 30, 0.9f, "note 2"); | 144 Event p2(50, 124.3f, 30, 0.9f, "note 2"); |
144 m.addPoint(p2); | 145 m.addPoint(p2); |
145 QCOMPARE(m.isEmpty(), false); | 146 QCOMPARE(m.isEmpty(), false); |
146 QCOMPARE(m.getPointCount(), 2); | 147 QCOMPARE(m.getPointCount(), 2); |
147 QCOMPARE(m.getPoints().size(), 2); | 148 QCOMPARE(m.getPoints().size(), 2); |
148 QCOMPARE(*m.getPoints().begin(), p1); | 149 QCOMPARE(*m.getPoints().begin(), p1); |
149 QCOMPARE(*m.getPoints().rbegin(), p2); | 150 QCOMPARE(*m.getPoints().rbegin(), p2); |
150 QCOMPARE(m.getStartFrame(), 20); | 151 QCOMPARE(m.getStartFrame(), 20); |
151 QCOMPARE(m.getEndFrame(), 80); | 152 QCOMPARE(m.getEndFrame(), 80); |
152 QCOMPARE(m.containsPoint(p1), true); | 153 QCOMPARE(m.containsPoint(p1), true); |
153 QCOMPARE(m.getValueMinimum(), 123.4); | 154 QCOMPARE(m.getValueMinimum(), 123.4f); |
154 QCOMPARE(m.getValueMaximum(), 124.3); | 155 QCOMPARE(m.getValueMaximum(), 124.3f); |
155 m.deletePoint(p1); | 156 m.deletePoint(p1); |
156 QCOMPARE(m.getPointCount(), 1); | 157 QCOMPARE(m.getPointCount(), 1); |
157 QCOMPARE(m.getPoints().size(), 1); | 158 QCOMPARE(m.getPoints().size(), 1); |
158 QCOMPARE(*m.getPoints().begin(), p2); | 159 QCOMPARE(*m.getPoints().begin(), p2); |
159 QCOMPARE(m.getStartFrame(), 50); | 160 QCOMPARE(m.getStartFrame(), 50); |
161 QCOMPARE(m.containsPoint(p1), false); | 162 QCOMPARE(m.containsPoint(p1), false); |
162 } | 163 } |
163 | 164 |
164 void note_sample() { | 165 void note_sample() { |
165 NoteModel m(100, 10, false); | 166 NoteModel m(100, 10, false); |
166 NoteModel::Point p1(20, 123.4f, 20, 0.8f, "note 1"); | 167 Event p1(20, 123.4f, 10, 0.8f, "note 1"); |
167 NoteModel::Point p2(20, 124.3f, 10, 0.9f, "note 2"); | 168 Event p2(20, 124.3f, 20, 0.9f, "note 2"); |
168 NoteModel::Point p3(50, 126.3f, 30, 0.9f, "note 3"); | 169 Event p3(50, 126.3f, 30, 0.9f, "note 3"); |
169 m.addPoint(p1); | 170 m.addPoint(p1); |
170 m.addPoint(p2); | 171 m.addPoint(p2); |
171 m.addPoint(p3); | 172 m.addPoint(p3); |
172 | 173 |
173 QCOMPARE(m.getPoints().size(), 3); | 174 QCOMPARE(m.getPoints().size(), 3); |
179 QCOMPARE(*pp.begin(), p1); | 180 QCOMPARE(*pp.begin(), p1); |
180 QCOMPARE(*pp.rbegin(), p2); | 181 QCOMPARE(*pp.rbegin(), p2); |
181 | 182 |
182 pp = m.getPoints(30, 50); | 183 pp = m.getPoints(30, 50); |
183 QCOMPARE(pp.size(), 1); | 184 QCOMPARE(pp.size(), 1); |
184 QCOMPARE(*pp.begin(), p1); | 185 QCOMPARE(*pp.begin(), p2); |
185 | 186 |
186 pp = m.getPoints(40, 50); | 187 pp = m.getPoints(40, 50); |
187 QCOMPARE(pp.size(), 0); | 188 QCOMPARE(pp.size(), 0); |
188 | 189 |
190 //!!! this is a poor api | |
189 pp = m.getPoints(50, 50); | 191 pp = m.getPoints(50, 50); |
190 QCOMPARE(pp.size(), 1); | 192 QCOMPARE(pp.size(), 0); |
191 QCOMPARE(*pp.begin(), p3); | 193 // QCOMPARE(*pp.begin(), p3); |
192 } | 194 } |
193 | 195 |
194 void note_xml() { | 196 void note_xml() { |
195 NoteModel m(100, 10, false); | 197 NoteModel m(100, 10, false); |
196 NoteModel::Point p1(20, 123.4f, 20, 0.8f, "note 1"); | 198 Event p1(20, 123.4f, 20, 0.8f, "note 1"); |
197 NoteModel::Point p2(20, 124.3f, 10, 0.9f, "note 2"); | 199 Event p2(20, 124.3f, 10, 0.9f, "note 2"); |
198 NoteModel::Point p3(50, 126.3f, 30, 0.9f, "note 3"); | 200 Event p3(50, 126.3f, 30, 0.9f, "note 3"); |
199 m.setScaleUnits("Hz"); | 201 m.setScaleUnits("Hz"); |
200 m.addPoint(p1); | 202 m.addPoint(p1); |
201 m.addPoint(p2); | 203 m.addPoint(p2); |
202 m.addPoint(p3); | 204 m.addPoint(p3); |
203 QString xml; | 205 QString xml; |
204 QTextStream str(&xml, QIODevice::WriteOnly); | 206 QTextStream str(&xml, QIODevice::WriteOnly); |
205 m.toXml(str); | 207 m.toXml(str); |
206 str.flush(); | 208 str.flush(); |
207 QString expected = | 209 QString expected = |
208 "<model id='3' name='' sampleRate='100' start='20' end='60' type='sparse' dimensions='3' resolution='10' notifyOnAdd='false' dataset='2' subtype='note' valueQuantization='0' minimum='123.4' maximum='126.3' units='Hz'/>\n" | 210 "<model id='3' name='' sampleRate='100' start='20' end='80' type='sparse' dimensions='3' resolution='10' notifyOnAdd='false' dataset='2' subtype='note' valueQuantization='0' minimum='123.4' maximum='126.3' units='Hz' />\n" |
209 "<dataset id='2' dimensions='3'>\n" | 211 "<dataset id='2' dimensions='3'>\n" |
212 " <point frame='20' value='124.3' duration='10' level='0.9' label='note 2' />\n" | |
210 " <point frame='20' value='123.4' duration='20' level='0.8' label='note 1' />\n" | 213 " <point frame='20' value='123.4' duration='20' level='0.8' label='note 1' />\n" |
211 " <point frame='20' value='124.3' duration='10' level='0.9' label='note 2' />\n" | |
212 " <point frame='50' value='126.3' duration='30' level='0.9' label='note 3' />\n" | 214 " <point frame='50' value='126.3' duration='30' level='0.9' label='note 3' />\n" |
213 "</dataset>\n"; | 215 "</dataset>\n"; |
214 expected.replace("\'", "\""); | 216 expected.replace("\'", "\""); |
215 if (xml != expected) { | 217 if (xml != expected) { |
216 cerr << "Obtained xml:\n" << xml | 218 cerr << "Obtained xml:\n" << xml |
217 << "\nExpected:\n" << expected << endl; | 219 << "\nExpected:\n" << expected << endl; |
218 } | 220 } |
219 QCOMPARE(xml, expected); | 221 QCOMPARE(xml, expected); |
220 } | 222 } |
221 | |
222 | 223 |
223 }; | 224 }; |
224 | 225 |
225 #endif | 226 #endif |