comparison PostgreSQL/UnitTests/PostgreSQLTests.cpp @ 71:d40c5fecd160 db-changes

new extension implemented for PostgreSQL: CreateInstance
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 04 Jan 2019 13:51:52 +0100
parents 714c5d2bee76
children aa81c1c80c75
comparison
equal deleted inserted replaced
70:e6c13ddd26d9 71:d40c5fecd160
32 # undef S_IWOTH 32 # undef S_IWOTH
33 # undef S_IXGRP 33 # undef S_IXGRP
34 # undef S_IXOTH 34 # undef S_IXOTH
35 #endif 35 #endif
36 36
37 #include "../Plugins/PostgreSQLIndex.h"
37 #include "../Plugins/PostgreSQLStorageArea.h" 38 #include "../Plugins/PostgreSQLStorageArea.h"
38 #include "../../Framework/PostgreSQL/PostgreSQLTransaction.h" 39 #include "../../Framework/PostgreSQL/PostgreSQLTransaction.h"
39 #include "../../Framework/PostgreSQL/PostgreSQLResult.h" 40 #include "../../Framework/PostgreSQL/PostgreSQLResult.h"
40 #include "../../Framework/PostgreSQL/PostgreSQLLargeObject.h" 41 #include "../../Framework/PostgreSQL/PostgreSQLLargeObject.h"
41 42
435 436
436 ASSERT_TRUE(db->DoesTableExist("test")); 437 ASSERT_TRUE(db->DoesTableExist("test"));
437 ASSERT_TRUE(db->DoesTableExist("test2")); 438 ASSERT_TRUE(db->DoesTableExist("test2"));
438 } 439 }
439 440
441
442 TEST(PostgreSQLIndex, CreateInstance)
443 {
444 OrthancDatabases::PostgreSQLIndex db(globalParameters_);
445 db.SetClearAll(true);
446 db.Open();
447
448 std::string s;
449 ASSERT_TRUE(db.LookupGlobalProperty(s, Orthanc::GlobalProperty_DatabaseInternal1));
450 ASSERT_EQ("1", s);
451
452 OrthancPluginCreateInstanceResult r1, r2;
453
454 memset(&r1, 0, sizeof(r1));
455 db.CreateInstance(r1, "a", "b", "c", "d");
456 ASSERT_TRUE(r1.isNewInstance);
457 ASSERT_TRUE(r1.isNewSeries);
458 ASSERT_TRUE(r1.isNewStudy);
459 ASSERT_TRUE(r1.isNewPatient);
460
461 memset(&r2, 0, sizeof(r2));
462 db.CreateInstance(r2, "a", "b", "c", "d");
463 ASSERT_FALSE(r2.isNewInstance);
464 ASSERT_EQ(r1.instanceId, r2.instanceId);
465
466 // Breaking the hierarchy
467 memset(&r2, 0, sizeof(r2));
468 ASSERT_THROW(db.CreateInstance(r2, "a", "e", "c", "f"), Orthanc::OrthancException);
469
470 memset(&r2, 0, sizeof(r2));
471 db.CreateInstance(r2, "a", "b", "c", "e");
472 ASSERT_TRUE(r2.isNewInstance);
473 ASSERT_FALSE(r2.isNewSeries);
474 ASSERT_FALSE(r2.isNewStudy);
475 ASSERT_FALSE(r2.isNewPatient);
476 ASSERT_EQ(r1.patientId, r2.patientId);
477 ASSERT_EQ(r1.studyId, r2.studyId);
478 ASSERT_EQ(r1.seriesId, r2.seriesId);
479 ASSERT_NE(r1.instanceId, r2.instanceId);
480
481 memset(&r2, 0, sizeof(r2));
482 db.CreateInstance(r2, "a", "b", "f", "g");
483 ASSERT_TRUE(r2.isNewInstance);
484 ASSERT_TRUE(r2.isNewSeries);
485 ASSERT_FALSE(r2.isNewStudy);
486 ASSERT_FALSE(r2.isNewPatient);
487 ASSERT_EQ(r1.patientId, r2.patientId);
488 ASSERT_EQ(r1.studyId, r2.studyId);
489 ASSERT_NE(r1.seriesId, r2.seriesId);
490 ASSERT_NE(r1.instanceId, r2.instanceId);
491
492 memset(&r2, 0, sizeof(r2));
493 db.CreateInstance(r2, "a", "h", "i", "j");
494 ASSERT_TRUE(r2.isNewInstance);
495 ASSERT_TRUE(r2.isNewSeries);
496 ASSERT_TRUE(r2.isNewStudy);
497 ASSERT_FALSE(r2.isNewPatient);
498 ASSERT_EQ(r1.patientId, r2.patientId);
499 ASSERT_NE(r1.studyId, r2.studyId);
500 ASSERT_NE(r1.seriesId, r2.seriesId);
501 ASSERT_NE(r1.instanceId, r2.instanceId);
502
503 memset(&r2, 0, sizeof(r2));
504 db.CreateInstance(r2, "k", "l", "m", "n");
505 ASSERT_TRUE(r2.isNewInstance);
506 ASSERT_TRUE(r2.isNewSeries);
507 ASSERT_TRUE(r2.isNewStudy);
508 ASSERT_TRUE(r2.isNewPatient);
509 ASSERT_NE(r1.patientId, r2.patientId);
510 ASSERT_NE(r1.studyId, r2.studyId);
511 ASSERT_NE(r1.seriesId, r2.seriesId);
512 ASSERT_NE(r1.instanceId, r2.instanceId);
513 }