58
58
Resource res( testiId );
59
59
res.setProperty( QUrl("http://nepomuk.test.org/foo/bar"), "foobar" );
61
QUrl testiUri = res.resourceUri();
61
QUrl testiUri = res.uri();
63
63
QVERIFY( !testiUri.isEmpty() );
80
80
QVERIFY( res.exists() );
81
81
QVERIFY( res2.exists() );
83
QVERIFY( ResourceManager::instance()->mainModel()->containsAnyStatement( Statement( res.resourceUri(), QUrl("http://nepomuk.test.org/foo/bar2"), Node(res2.resourceUri()) ) ) );
83
QVERIFY( ResourceManager::instance()->mainModel()->containsAnyStatement( Statement( res.uri(), QUrl("http://nepomuk.test.org/foo/bar2"), Node(res2.uri()) ) ) );
87
87
QVERIFY( res.exists() );
88
88
QVERIFY( !res2.exists() );
90
QVERIFY( !ResourceManager::instance()->mainModel()->containsAnyStatement( Statement( res.resourceUri(), QUrl("http://nepomuk.test.org/foo/bar2"), Node(res2.resourceUri()) ) ) );
90
QVERIFY( !ResourceManager::instance()->mainModel()->containsAnyStatement( Statement( res.uri(), QUrl("http://nepomuk.test.org/foo/bar2"), Node(res2.uri()) ) ) );
93
93
// Now make sure the relation between id and URI has actually be removed
95
95
Resource res3( testiId );
96
QVERIFY( res3.resourceUri() != testiUri );
96
QVERIFY( res3.uri() != testiUri );
113
113
r1.setProperty( QUrl("http://nepomuk.test.org/date"), QDate::currentDate() );
114
114
r1.setProperty( QUrl("http://nepomuk.test.org/Resource"), r2 );
116
r1Uri = r1.resourceUri();
117
r2Uri = r2.resourceUri();
120
120
QTextStream s(stdout);
170
170
QVERIFY( r1.property( p ).toNodeList().isEmpty() );
172
172
QList<Soprano::Node> nodes =
173
ResourceManager::instance()->mainModel()->listStatements(r1.resourceUri(), p, Soprano::Node()).iterateObjects().allNodes();
173
ResourceManager::instance()->mainModel()->listStatements(r1.uri(), p, Soprano::Node()).iterateObjects().allNodes();
174
174
QCOMPARE(nodes.count(), 0);
176
176
r1.setProperty( p, 17 );
183
183
QCOMPARE( r1.property( p ).toNodeList().count(), 1 );
186
ResourceManager::instance()->mainModel()->listStatements(r1.resourceUri(), p, Soprano::Node()).iterateObjects().allNodes();
186
ResourceManager::instance()->mainModel()->listStatements(r1.uri(), p, Soprano::Node()).iterateObjects().allNodes();
187
187
QCOMPARE(nodes.count(), 1);
188
188
QCOMPARE(nodes[0], Soprano::Node(Soprano::LiteralValue(18)));
199
199
QVERIFY( r1.property( p ).toNodeList().isEmpty() );
202
ResourceManager::instance()->mainModel()->listStatements(r1.resourceUri(), p, Soprano::Node()).iterateObjects().allNodes();
202
ResourceManager::instance()->mainModel()->listStatements(r1.uri(), p, Soprano::Node()).iterateObjects().allNodes();
203
203
QCOMPARE(nodes.count(), 0);
214
214
QVERIFY( r1 == r2 );
216
QVERIFY( r1.resourceUri() != QUrl("wurst") );
216
QVERIFY( r1.uri() != QUrl("wurst") );
218
218
r1.setProperty( QUrl("http://nepomuk.test.org/foo/bar"), "foobar" );
220
theUri = r1.resourceUri();
222
222
QList<Statement> sl
223
= ResourceManager::instance()->mainModel()->listStatements( Statement( r1.resourceUri(), Node(), Node() ) ).allStatements();
223
= ResourceManager::instance()->mainModel()->listStatements( Statement( r1.uri(), Node(), Node() ) ).allStatements();
225
225
// rdf:type, nao:created, nao:lastModified, nao:identifier, and the property above
226
226
QCOMPARE( sl.count(), 5 );
228
QVERIFY( ResourceManager::instance()->mainModel()->containsAnyStatement( Statement( r1.resourceUri(),
228
QVERIFY( ResourceManager::instance()->mainModel()->containsAnyStatement( Statement( r1.uri(),
229
229
NAO::identifier(),
230
230
LiteralValue( "wurst" ) ) ) );
253
253
QCOMPARE( rl.count(), 2 );
254
254
QVERIFY( rl.contains( r1 ) && rl.contains( r2 ) );
256
rl = ResourceManager::instance()->allResourcesOfType( r6.resourceType() );
256
rl = ResourceManager::instance()->allResourcesOfType( r6.type() );
257
257
QCOMPARE( rl.count(), 1 );
258
258
QCOMPARE( rl.first(), r6 );
288
288
QCOMPARE( rl.count(), 2 );
289
289
QVERIFY( rl.contains( r1 ) && rl.contains( r2 ) );
291
rl = ResourceManager::instance()->allResourcesOfType( r6.resourceType() );
291
rl = ResourceManager::instance()->allResourcesOfType( r6.type() );
292
292
QCOMPARE( rl.count(), 1 );
293
293
QCOMPARE( rl.first(), r6 );
330
330
fileRes.setRating( 4 );
332
332
// make sure the nie:url is saved
333
QVERIFY( ResourceManager::instance()->mainModel()->containsAnyStatement( fileRes.resourceUri(), Nepomuk2::Vocabulary::NIE::url(), KUrl(tmpFile1.fileName()) ) );
333
QVERIFY( ResourceManager::instance()->mainModel()->containsAnyStatement( fileRes.uri(), Nepomuk2::Vocabulary::NIE::url(), KUrl(tmpFile1.fileName()) ) );
335
335
// make sure a proper nepomuk:/ uri has been created
336
QVERIFY( fileRes.resourceUri().scheme() == QLatin1String("nepomuk") );
336
QVERIFY( fileRes.uri().scheme() == QLatin1String("nepomuk") );
338
338
// make sure the local resource is reused with the file URL
339
339
Resource fileRes2( KUrl(tmpFile1.fileName()) );
340
QCOMPARE( fileRes.resourceUri(), fileRes2.resourceUri() );
340
QCOMPARE( fileRes.uri(), fileRes2.uri() );
342
342
// make sure the local resource is reused with the resource URI
343
Resource fileRes3( fileRes.resourceUri() );
344
QCOMPARE( fileRes.resourceUri(), fileRes3.resourceUri() );
343
Resource fileRes3( fileRes.uri() );
344
QCOMPARE( fileRes.uri(), fileRes3.uri() );
346
tmpFile1ResUri = fileRes.resourceUri();
346
tmpFile1ResUri = fileRes.uri();
348
348
// make sure even the string constructor will find the resource again with
349
349
Resource fileRes4( KUrl(tmpFile1ResUri).url() );
350
350
fileRes4.setRating(4);
351
QCOMPARE( fileRes4.resourceUri(), tmpFile1ResUri );
351
QCOMPARE( fileRes4.uri(), tmpFile1ResUri );
353
353
// make sure the resource is reused with the local file path
354
354
Resource fileRes5( tmpFile1.fileName() );
355
355
fileRes4.setRating(5);
356
QCOMPARE( fileRes5.resourceUri(), tmpFile1ResUri );
356
QCOMPARE( fileRes5.uri(), tmpFile1ResUri );
359
359
// clear cache to be sure we call ResourceData::determineUri
363
363
// verify that the resource in question is found again
364
364
Resource fileRes1( KUrl(tmpFile1.fileName()) );
365
QCOMPARE( tmpFile1ResUri, fileRes1.resourceUri() );
365
QCOMPARE( tmpFile1ResUri, fileRes1.uri() );
367
367
// make sure the local resource is reused with the resource URI
368
368
Resource fileRes2( tmpFile1ResUri );
369
QCOMPARE( tmpFile1ResUri, fileRes2.resourceUri() );
369
QCOMPARE( tmpFile1ResUri, fileRes2.uri() );
371
371
// create a second test file
372
372
KTemporaryFile tmpFile2;
378
378
Resource fileRes3( KUrl(tmpFile2.fileName()) );
379
379
fileRes3.setRating( 4 );
380
QCOMPARE( KUrl(fileRes3.resourceUri()), KUrl(tmpFile2.fileName()) );
380
QCOMPARE( KUrl(fileRes3.uri()), KUrl(tmpFile2.fileName()) );
382
382
// create a third test file
383
383
KTemporaryFile tmpFile3;
387
387
ResourceManager::instance()->mainModel()->addStatement( KUrl(tmpFile3.fileName()), Soprano::Vocabulary::NAO::rating(), Soprano::LiteralValue(4) );
389
389
Resource fileRes4( KUrl(tmpFile3.fileName()) );
390
QCOMPARE( KUrl(fileRes4.resourceUri()).url(), KUrl(tmpFile3.fileName()).url() );
390
QCOMPARE( KUrl(fileRes4.uri()).url(), KUrl(tmpFile3.fileName()).url() );
392
392
// make sure removing the resource results in us not reusing the URI
393
QUrl fileRes1Uri = fileRes1.resourceUri();
393
QUrl fileRes1Uri = fileRes1.uri();
394
394
fileRes1.remove();
396
396
Resource fileRes5( KUrl(tmpFile1.fileName()) );
397
QVERIFY( fileRes1Uri != fileRes5.resourceUri() );
397
QVERIFY( fileRes1Uri != fileRes5.uri() );
400
400
// clear cache to be sure we do not reuse the cache
413
413
fileRes.setRating( 4 );
415
415
// make sure the nie:url is saved
416
QVERIFY( model->containsAnyStatement( fileRes.resourceUri(), Nepomuk2::Vocabulary::NIE::url(), KUrl(tmpFile1.fileName()) ) );
416
QVERIFY( model->containsAnyStatement( fileRes.uri(), Nepomuk2::Vocabulary::NIE::url(), KUrl(tmpFile1.fileName()) ) );
418
418
// make sure a proper nepomuk:/ uri has been created
419
QVERIFY( fileRes.resourceUri().scheme() == QLatin1String("nepomuk") );
419
QVERIFY( fileRes.uri().scheme() == QLatin1String("nepomuk") );
421
421
// Remove the nie:url
422
422
fileRes.removeProperty( Nepomuk2::Vocabulary::NIE::url() );
424
424
Resource fileRes2( KUrl(tmpFile1.fileName()) );
425
QVERIFY( fileRes.resourceUri() != fileRes2.resourceUri() );
425
QVERIFY( fileRes.uri() != fileRes2.uri() );
427
427
Resource r1( "res1" );
428
428
r1.setProperty( QUrl("http://test/prop1"), 42 );
431
431
Resource r2( "res1" );
432
432
r2.setProperty( QUrl("http://test/prop1"), 46 );
434
QVERIFY( r2.resourceUri() != r1.resourceUri() );
434
QVERIFY( r2.uri() != r1.uri() );
435
435
QVERIFY( r1.property(QUrl("http://test/prop1")) != r2.property(QUrl("http://test/prop1")) );
443
443
fileRes.setRating( 4 );
445
445
// make sure the nie:url is saved
446
QVERIFY( model->containsAnyStatement( fileRes.resourceUri(), Nepomuk2::Vocabulary::NIE::url(), KUrl(tmpFile.fileName()) ) );
446
QVERIFY( model->containsAnyStatement( fileRes.uri(), Nepomuk2::Vocabulary::NIE::url(), KUrl(tmpFile.fileName()) ) );
448
448
// make sure a proper nepomuk:/ uri has been created
449
QVERIFY( fileRes.resourceUri().scheme() == QLatin1String("nepomuk") );
449
QVERIFY( fileRes.uri().scheme() == QLatin1String("nepomuk") );
451
451
// Add a different nie:url
452
452
KTemporaryFile tmpFile2;
454
454
fileRes.setProperty( Nepomuk2::Vocabulary::NIE::url(), KUrl(tmpFile2.fileName()) );
456
456
// make sure the new nie:url is saved and the old one is gone
457
QVERIFY( model->containsAnyStatement( fileRes.resourceUri(), Nepomuk2::Vocabulary::NIE::url(), KUrl(tmpFile2.fileName()) ) );
458
QVERIFY( !model->containsAnyStatement( fileRes.resourceUri(), Nepomuk2::Vocabulary::NIE::url(), KUrl(tmpFile.fileName()) ) );
457
QVERIFY( model->containsAnyStatement( fileRes.uri(), Nepomuk2::Vocabulary::NIE::url(), KUrl(tmpFile2.fileName()) ) );
458
QVERIFY( !model->containsAnyStatement( fileRes.uri(), Nepomuk2::Vocabulary::NIE::url(), KUrl(tmpFile.fileName()) ) );
460
460
// At this point the ResourceManager's kickOffUri's should contain
461
461
// only tmpFile2 -> fileRes
463
463
Resource fileRes2( KUrl(tmpFile.fileName()) );
465
QVERIFY( fileRes.resourceUri() != fileRes2.resourceUri() );
465
QVERIFY( fileRes.uri() != fileRes2.uri() );
467
467
Resource fileRes3( KUrl(tmpFile2.fileName()) );
468
QVERIFY( fileRes3.resourceUri() == fileRes.resourceUri() );
468
QVERIFY( fileRes3.uri() == fileRes.uri() );
470
470
Resource r1( "res1" );
471
471
r1.setProperty( QUrl("http://test/prop1"), 42 );
475
475
Resource r2( "res1" );
476
476
r2.setProperty( QUrl("http://test/prop1"), 46 );
478
QVERIFY( r2.resourceUri() != r1.resourceUri() );
478
QVERIFY( r2.uri() != r1.uri() );
479
479
QVERIFY( r1.property(QUrl("http://test/prop1")) != r2.property(QUrl("http://test/prop1")) );
481
481
Resource r3( "foo" );
482
QVERIFY( r3.resourceUri() == r1.resourceUri() );
482
QVERIFY( r3.uri() == r1.uri() );