|
Lines 14-19
Link Here
|
| 14 |
import org.eclipse.core.runtime.IProgressMonitor; |
14 |
import org.eclipse.core.runtime.IProgressMonitor; |
| 15 |
import org.eclipse.core.tests.harness.TestProgressMonitor; |
15 |
import org.eclipse.core.tests.harness.TestProgressMonitor; |
| 16 |
import org.eclipse.equinox.internal.provisional.p2.query.*; |
16 |
import org.eclipse.equinox.internal.provisional.p2.query.*; |
|
|
17 |
import org.eclipse.equinox.internal.provisional.p2.query.CompoundQueryable.IMultiQuery; |
| 17 |
|
18 |
|
| 18 |
/** |
19 |
/** |
| 19 |
* Tests the compound queryable |
20 |
* Tests the compound queryable |
|
Lines 324-327
Link Here
|
| 324 |
assertTrue("1.0", monitor.isDone()); |
325 |
assertTrue("1.0", monitor.isDone()); |
| 325 |
assertTrue("1.1", monitor.isWorkDone()); |
326 |
assertTrue("1.1", monitor.isWorkDone()); |
| 326 |
} |
327 |
} |
|
|
328 |
|
| 329 |
class Greatest2ndNumberQuery extends ContextQuery implements IMultiQuery { |
| 330 |
|
| 331 |
public Query getCompoundingQuery() { |
| 332 |
return new ContextQuery() { |
| 333 |
|
| 334 |
public Collector perform(Iterator iterator, Collector result) { |
| 335 |
int greatest = Integer.MIN_VALUE; |
| 336 |
int second = Integer.MIN_VALUE; |
| 337 |
while (iterator.hasNext()) { |
| 338 |
int item = ((Integer) iterator.next()).intValue(); |
| 339 |
if (item > greatest) { |
| 340 |
second = greatest; |
| 341 |
greatest = item; |
| 342 |
} else if (item > second && item < greatest) { |
| 343 |
second = item; |
| 344 |
} |
| 345 |
|
| 346 |
} |
| 347 |
if (greatest == Integer.MIN_VALUE) |
| 348 |
return result; |
| 349 |
result.accept(second); |
| 350 |
result.accept(greatest); |
| 351 |
return result; |
| 352 |
} |
| 353 |
|
| 354 |
}; |
| 355 |
|
| 356 |
} |
| 357 |
|
| 358 |
public Collector perform(Iterator iterator, Collector result) { |
| 359 |
int greatest = Integer.MIN_VALUE; |
| 360 |
int second = Integer.MIN_VALUE; |
| 361 |
while (iterator.hasNext()) { |
| 362 |
int item = ((Integer) iterator.next()).intValue(); |
| 363 |
if (item > greatest) { |
| 364 |
second = greatest; |
| 365 |
greatest = item; |
| 366 |
} else if (item > second && item < greatest) { |
| 367 |
second = item; |
| 368 |
} |
| 369 |
|
| 370 |
} |
| 371 |
if (greatest == Integer.MIN_VALUE) |
| 372 |
return result; |
| 373 |
result.accept(second); |
| 374 |
return result; |
| 375 |
} |
| 376 |
} |
| 377 |
|
| 378 |
Greatest2ndNumberQuery greatest2ndNumberQuery = new Greatest2ndNumberQuery(); |
| 379 |
|
| 380 |
public void testCompoundContextOrQuery() { |
| 381 |
CompoundQueryable cQueryable = new CompoundQueryable(new IQueryable[] {queryable1, queryable2}); |
| 382 |
CompoundQueryTestProgressMonitor monitor = new CompoundQueryTestProgressMonitor(); |
| 383 |
Collector collector = cQueryable.query(CompoundQuery.createCompoundQuery(new Query[] {contextQuery, greatest2ndNumberQuery}, false), new Collector(), monitor); |
| 384 |
assertEquals("1.0", 6, collector.size()); |
| 385 |
Collection collection = collector.toCollection(); |
| 386 |
assertTrue("1.2", collection.contains(2)); |
| 387 |
assertTrue("1.2", collection.contains(4)); |
| 388 |
assertTrue("1.2", collection.contains(6)); |
| 389 |
assertTrue("1.4", collection.contains(8)); |
| 390 |
assertTrue("1.2", collection.contains(10)); |
| 391 |
assertTrue("1.6", collection.contains(12)); |
| 392 |
} |
| 393 |
|
| 394 |
public void testDoubleCompoundContextAndQuery2() { |
| 395 |
CompoundQueryable cQueryable1 = new CompoundQueryable(new IQueryable[] {queryable3, queryable2}); |
| 396 |
CompoundQueryable cQueryable = new CompoundQueryable(new IQueryable[] {cQueryable1, queryable1}); |
| 397 |
CompoundQueryTestProgressMonitor monitor = new CompoundQueryTestProgressMonitor(); |
| 398 |
Collector collector = cQueryable.query(CompoundQuery.createCompoundQuery(new Query[] {greatest2ndNumberQuery, greatestNumberQuery}, true), new Collector(), monitor); |
| 399 |
assertEquals("1.0", 0, collector.size()); |
| 400 |
assertTrue("1.0", monitor.isDone()); |
| 401 |
assertTrue("1.1", monitor.isWorkDone()); |
| 402 |
} |
| 403 |
|
| 404 |
public void testDoubleCompoundContextAndQuery() { |
| 405 |
CompoundQueryable cQueryable1 = new CompoundQueryable(new IQueryable[] {queryable3, queryable2}); |
| 406 |
CompoundQueryable cQueryable = new CompoundQueryable(new IQueryable[] {cQueryable1, queryable1}); |
| 407 |
CompoundQueryTestProgressMonitor monitor = new CompoundQueryTestProgressMonitor(); |
| 408 |
Collector collector = cQueryable.query(CompoundQuery.createCompoundQuery(new Query[] {contextQuery, greatestNumberQuery}, true), new Collector(), monitor); |
| 409 |
assertEquals("1.0", 0, collector.size()); |
| 410 |
assertTrue("1.0", monitor.isDone()); |
| 411 |
assertTrue("1.1", monitor.isWorkDone()); |
| 412 |
} |
| 413 |
|
| 414 |
public void testCompositeQuery() { |
| 415 |
CompoundQueryable cQueryable = new CompoundQueryable(new IQueryable[] {queryable1, queryable2}); |
| 416 |
CompoundQueryTestProgressMonitor monitor = new CompoundQueryTestProgressMonitor(); |
| 417 |
Collector collector = cQueryable.query(new CompositeQuery(new Query[] {contextQuery, greatest2ndNumberQuery}), new Collector(), monitor); |
| 418 |
assertEquals("1.0", 1, collector.size()); |
| 419 |
Collection collection = collector.toCollection(); |
| 420 |
assertTrue("1.2", collection.contains(10)); |
| 421 |
} |
| 422 |
|
| 423 |
public void testCompoundContextAndQuery() { |
| 424 |
CompoundQueryable cQueryable = new CompoundQueryable(new IQueryable[] {queryable1, queryable2}); |
| 425 |
CompoundQueryTestProgressMonitor monitor = new CompoundQueryTestProgressMonitor(); |
| 426 |
Collector collector = cQueryable.query(CompoundQuery.createCompoundQuery(new Query[] {contextQuery, greatest2ndNumberQuery}, true), new Collector(), monitor); |
| 427 |
assertEquals("1.0", 1, collector.size()); |
| 428 |
Collection collection = collector.toCollection(); |
| 429 |
assertTrue("1.2", collection.contains(10)); |
| 430 |
} |
| 431 |
|
| 432 |
public void testMultipleContextQueries2() { |
| 433 |
CompoundQueryable cQueryable = new CompoundQueryable(new IQueryable[] {queryable1, queryable2}); |
| 434 |
CompoundQueryTestProgressMonitor monitor = new CompoundQueryTestProgressMonitor(); |
| 435 |
Collector collector = cQueryable.query(greatest2ndNumberQuery, new Collector(), monitor); |
| 436 |
assertEquals("1.0", 1, collector.size()); |
| 437 |
Collection collection = collector.toCollection(); |
| 438 |
assertTrue("1.1", collection.contains(10)); |
| 439 |
} |
| 327 |
} |
440 |
} |