Mercurial > hg > orthanc
comparison UnitTestsSources/MultiThreadingTests.cpp @ 3712:2a170a8f1faf
replacing std::auto_ptr by std::unique_ptr
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 02 Mar 2020 15:32:45 +0100 |
parents | 4922bdd046dd |
children | 56f2397f027a |
comparison
equal
deleted
inserted
replaced
3709:1f4910999fe7 | 3712:2a170a8f1faf |
---|---|
32 | 32 |
33 | 33 |
34 #include "PrecompiledHeadersUnitTests.h" | 34 #include "PrecompiledHeadersUnitTests.h" |
35 #include "gtest/gtest.h" | 35 #include "gtest/gtest.h" |
36 | 36 |
37 #include "../Core/Compatibility.h" | |
37 #include "../Core/FileStorage/MemoryStorageArea.h" | 38 #include "../Core/FileStorage/MemoryStorageArea.h" |
38 #include "../Core/JobsEngine/JobsEngine.h" | 39 #include "../Core/JobsEngine/JobsEngine.h" |
39 #include "../Core/Logging.h" | 40 #include "../Core/Logging.h" |
40 #include "../Core/MultiThreading/SharedMessageQueue.h" | 41 #include "../Core/MultiThreading/SharedMessageQueue.h" |
41 #include "../Core/OrthancException.h" | 42 #include "../Core/OrthancException.h" |
270 ASSERT_FALSE(q.WaitEmpty(1)); | 271 ASSERT_FALSE(q.WaitEmpty(1)); |
271 q.Enqueue(new DynamicInteger(20, s)); | 272 q.Enqueue(new DynamicInteger(20, s)); |
272 q.Enqueue(new DynamicInteger(30, s)); | 273 q.Enqueue(new DynamicInteger(30, s)); |
273 q.Enqueue(new DynamicInteger(40, s)); | 274 q.Enqueue(new DynamicInteger(40, s)); |
274 | 275 |
275 std::auto_ptr<DynamicInteger> i; | 276 std::unique_ptr<DynamicInteger> i; |
276 i.reset(dynamic_cast<DynamicInteger*>(q.Dequeue(1))); ASSERT_EQ(10, i->GetValue()); | 277 i.reset(dynamic_cast<DynamicInteger*>(q.Dequeue(1))); ASSERT_EQ(10, i->GetValue()); |
277 i.reset(dynamic_cast<DynamicInteger*>(q.Dequeue(1))); ASSERT_EQ(20, i->GetValue()); | 278 i.reset(dynamic_cast<DynamicInteger*>(q.Dequeue(1))); ASSERT_EQ(20, i->GetValue()); |
278 i.reset(dynamic_cast<DynamicInteger*>(q.Dequeue(1))); ASSERT_EQ(30, i->GetValue()); | 279 i.reset(dynamic_cast<DynamicInteger*>(q.Dequeue(1))); ASSERT_EQ(30, i->GetValue()); |
279 ASSERT_FALSE(q.WaitEmpty(1)); | 280 ASSERT_FALSE(q.WaitEmpty(1)); |
280 i.reset(dynamic_cast<DynamicInteger*>(q.Dequeue(1))); ASSERT_EQ(40, i->GetValue()); | 281 i.reset(dynamic_cast<DynamicInteger*>(q.Dequeue(1))); ASSERT_EQ(40, i->GetValue()); |
745 | 746 |
746 std::string id; | 747 std::string id; |
747 SequenceOfOperationsJob* job = NULL; | 748 SequenceOfOperationsJob* job = NULL; |
748 | 749 |
749 { | 750 { |
750 std::auto_ptr<SequenceOfOperationsJob> a(new SequenceOfOperationsJob); | 751 std::unique_ptr<SequenceOfOperationsJob> a(new SequenceOfOperationsJob); |
751 job = a.get(); | 752 job = a.get(); |
752 engine.GetRegistry().Submit(id, a.release(), 0); | 753 engine.GetRegistry().Submit(id, a.release(), 0); |
753 } | 754 } |
754 | 755 |
755 boost::this_thread::sleep(boost::posix_time::milliseconds(500)); | 756 boost::this_thread::sleep(boost::posix_time::milliseconds(500)); |
835 { | 836 { |
836 return false; | 837 return false; |
837 } | 838 } |
838 else | 839 else |
839 { | 840 { |
840 std::auto_ptr<IJob> unserialized(unserializer.UnserializeJob(a)); | 841 std::unique_ptr<IJob> unserialized(unserializer.UnserializeJob(a)); |
841 | 842 |
842 Json::Value b = 43; | 843 Json::Value b = 43; |
843 if (unserialized->Serialize(b)) | 844 if (unserialized->Serialize(b)) |
844 { | 845 { |
845 return (CheckSameJson(a, b)); | 846 return (CheckSameJson(a, b)); |
861 { | 862 { |
862 return false; | 863 return false; |
863 } | 864 } |
864 else | 865 else |
865 { | 866 { |
866 std::auto_ptr<SetOfInstancesJob> unserialized | 867 std::unique_ptr<SetOfInstancesJob> unserialized |
867 (dynamic_cast<SetOfInstancesJob*>(unserializer.UnserializeJob(a))); | 868 (dynamic_cast<SetOfInstancesJob*>(unserializer.UnserializeJob(a))); |
868 | 869 |
869 Json::Value b = 43; | 870 Json::Value b = 43; |
870 if (unserialized->Serialize(b)) | 871 if (unserialized->Serialize(b)) |
871 { | 872 { |
887 IJobOperation& operation) | 888 IJobOperation& operation) |
888 { | 889 { |
889 Json::Value a = 42; | 890 Json::Value a = 42; |
890 operation.Serialize(a); | 891 operation.Serialize(a); |
891 | 892 |
892 std::auto_ptr<IJobOperation> unserialized(unserializer.UnserializeOperation(a)); | 893 std::unique_ptr<IJobOperation> unserialized(unserializer.UnserializeOperation(a)); |
893 | 894 |
894 Json::Value b = 43; | 895 Json::Value b = 43; |
895 unserialized->Serialize(b); | 896 unserialized->Serialize(b); |
896 | 897 |
897 return CheckSameJson(a, b); | 898 return CheckSameJson(a, b); |
902 JobOperationValue& value) | 903 JobOperationValue& value) |
903 { | 904 { |
904 Json::Value a = 42; | 905 Json::Value a = 42; |
905 value.Serialize(a); | 906 value.Serialize(a); |
906 | 907 |
907 std::auto_ptr<JobOperationValue> unserialized(unserializer.UnserializeValue(a)); | 908 std::unique_ptr<JobOperationValue> unserialized(unserializer.UnserializeValue(a)); |
908 | 909 |
909 Json::Value b = 43; | 910 Json::Value b = 43; |
910 unserialized->Serialize(b); | 911 unserialized->Serialize(b); |
911 | 912 |
912 return CheckSameJson(a, b); | 913 return CheckSameJson(a, b); |
955 values.Serialize(s); | 956 values.Serialize(s); |
956 } | 957 } |
957 | 958 |
958 { | 959 { |
959 GenericJobUnserializer unserializer; | 960 GenericJobUnserializer unserializer; |
960 std::auto_ptr<JobOperationValues> values(JobOperationValues::Unserialize(unserializer, s)); | 961 std::unique_ptr<JobOperationValues> values(JobOperationValues::Unserialize(unserializer, s)); |
961 ASSERT_EQ(3u, values->GetSize()); | 962 ASSERT_EQ(3u, values->GetSize()); |
962 ASSERT_EQ(JobOperationValue::Type_Null, values->GetValue(0).GetType()); | 963 ASSERT_EQ(JobOperationValue::Type_Null, values->GetValue(0).GetType()); |
963 ASSERT_EQ(JobOperationValue::Type_String, values->GetValue(1).GetType()); | 964 ASSERT_EQ(JobOperationValue::Type_String, values->GetValue(1).GetType()); |
964 ASSERT_EQ(JobOperationValue::Type_String, values->GetValue(2).GetType()); | 965 ASSERT_EQ(JobOperationValue::Type_String, values->GetValue(2).GetType()); |
965 | 966 |
982 } | 983 } |
983 | 984 |
984 ASSERT_THROW(unserializer.UnserializeJob(s), OrthancException); | 985 ASSERT_THROW(unserializer.UnserializeJob(s), OrthancException); |
985 ASSERT_THROW(unserializer.UnserializeOperation(s), OrthancException); | 986 ASSERT_THROW(unserializer.UnserializeOperation(s), OrthancException); |
986 | 987 |
987 std::auto_ptr<JobOperationValue> value; | 988 std::unique_ptr<JobOperationValue> value; |
988 value.reset(unserializer.UnserializeValue(s)); | 989 value.reset(unserializer.UnserializeValue(s)); |
989 | 990 |
990 ASSERT_EQ(JobOperationValue::Type_Null, value->GetType()); | 991 ASSERT_EQ(JobOperationValue::Type_Null, value->GetType()); |
991 | 992 |
992 { | 993 { |
1019 | 1020 |
1020 ASSERT_THROW(unserializer.UnserializeJob(s), OrthancException); | 1021 ASSERT_THROW(unserializer.UnserializeJob(s), OrthancException); |
1021 ASSERT_THROW(unserializer.UnserializeValue(s), OrthancException); | 1022 ASSERT_THROW(unserializer.UnserializeValue(s), OrthancException); |
1022 | 1023 |
1023 { | 1024 { |
1024 std::auto_ptr<IJobOperation> operation; | 1025 std::unique_ptr<IJobOperation> operation; |
1025 operation.reset(unserializer.UnserializeOperation(s)); | 1026 operation.reset(unserializer.UnserializeOperation(s)); |
1026 | 1027 |
1027 // Make sure that we have indeed unserialized a log operation | 1028 // Make sure that we have indeed unserialized a log operation |
1028 Json::Value dummy; | 1029 Json::Value dummy; |
1029 ASSERT_THROW(dynamic_cast<DeleteResourceOperation&>(*operation).Serialize(dummy), std::bad_cast); | 1030 ASSERT_THROW(dynamic_cast<DeleteResourceOperation&>(*operation).Serialize(dummy), std::bad_cast); |
1063 { | 1064 { |
1064 DummyUnserializer unserializer; | 1065 DummyUnserializer unserializer; |
1065 ASSERT_THROW(unserializer.UnserializeValue(s), OrthancException); | 1066 ASSERT_THROW(unserializer.UnserializeValue(s), OrthancException); |
1066 ASSERT_THROW(unserializer.UnserializeOperation(s), OrthancException); | 1067 ASSERT_THROW(unserializer.UnserializeOperation(s), OrthancException); |
1067 | 1068 |
1068 std::auto_ptr<IJob> job; | 1069 std::unique_ptr<IJob> job; |
1069 job.reset(unserializer.UnserializeJob(s)); | 1070 job.reset(unserializer.UnserializeJob(s)); |
1070 | 1071 |
1071 const DummyInstancesJob& tmp = dynamic_cast<const DummyInstancesJob&>(*job); | 1072 const DummyInstancesJob& tmp = dynamic_cast<const DummyInstancesJob&>(*job); |
1072 ASSERT_FALSE(tmp.IsStarted()); | 1073 ASSERT_FALSE(tmp.IsStarted()); |
1073 ASSERT_TRUE(tmp.IsPermissive()); | 1074 ASSERT_TRUE(tmp.IsPermissive()); |
1114 { | 1115 { |
1115 GenericJobUnserializer unserializer; | 1116 GenericJobUnserializer unserializer; |
1116 ASSERT_THROW(unserializer.UnserializeValue(s), OrthancException); | 1117 ASSERT_THROW(unserializer.UnserializeValue(s), OrthancException); |
1117 ASSERT_THROW(unserializer.UnserializeOperation(s), OrthancException); | 1118 ASSERT_THROW(unserializer.UnserializeOperation(s), OrthancException); |
1118 | 1119 |
1119 std::auto_ptr<IJob> job; | 1120 std::unique_ptr<IJob> job; |
1120 job.reset(unserializer.UnserializeJob(s)); | 1121 job.reset(unserializer.UnserializeJob(s)); |
1121 | 1122 |
1122 std::string tmp; | 1123 std::string tmp; |
1123 dynamic_cast<SequenceOfOperationsJob&>(*job).GetDescription(tmp); | 1124 dynamic_cast<SequenceOfOperationsJob&>(*job).GetDescription(tmp); |
1124 ASSERT_EQ("hello", tmp); | 1125 ASSERT_EQ("hello", tmp); |
1145 ParsedDicomFile source(true); | 1146 ParsedDicomFile source(true); |
1146 source.Insert(DICOM_TAG_STUDY_DESCRIPTION, "Test 1", false, ""); | 1147 source.Insert(DICOM_TAG_STUDY_DESCRIPTION, "Test 1", false, ""); |
1147 source.Insert(DICOM_TAG_SERIES_DESCRIPTION, "Test 2", false, ""); | 1148 source.Insert(DICOM_TAG_SERIES_DESCRIPTION, "Test 2", false, ""); |
1148 source.Insert(DICOM_TAG_PATIENT_NAME, "Test 3", false, ""); | 1149 source.Insert(DICOM_TAG_PATIENT_NAME, "Test 3", false, ""); |
1149 | 1150 |
1150 std::auto_ptr<ParsedDicomFile> modified(source.Clone(true)); | 1151 std::unique_ptr<ParsedDicomFile> modified(source.Clone(true)); |
1151 | 1152 |
1152 { | 1153 { |
1153 DicomModification modification; | 1154 DicomModification modification; |
1154 modification.SetLevel(ResourceType_Series); | 1155 modification.SetLevel(ResourceType_Series); |
1155 modification.Clear(DICOM_TAG_STUDY_DESCRIPTION); | 1156 modification.Clear(DICOM_TAG_STUDY_DESCRIPTION); |
1164 | 1165 |
1165 { | 1166 { |
1166 DicomModification modification(s); | 1167 DicomModification modification(s); |
1167 ASSERT_EQ(ResourceType_Series, modification.GetLevel()); | 1168 ASSERT_EQ(ResourceType_Series, modification.GetLevel()); |
1168 | 1169 |
1169 std::auto_ptr<ParsedDicomFile> second(source.Clone(true)); | 1170 std::unique_ptr<ParsedDicomFile> second(source.Clone(true)); |
1170 modification.Apply(*second); | 1171 modification.Apply(*second); |
1171 | 1172 |
1172 std::string s; | 1173 std::string s; |
1173 ASSERT_TRUE(second->GetTagValue(s, DICOM_TAG_STUDY_DESCRIPTION)); | 1174 ASSERT_TRUE(second->GetTagValue(s, DICOM_TAG_STUDY_DESCRIPTION)); |
1174 ASSERT_TRUE(s.empty()); | 1175 ASSERT_TRUE(s.empty()); |
1280 class OrthancJobsSerialization : public testing::Test | 1281 class OrthancJobsSerialization : public testing::Test |
1281 { | 1282 { |
1282 private: | 1283 private: |
1283 MemoryStorageArea storage_; | 1284 MemoryStorageArea storage_; |
1284 SQLiteDatabaseWrapper db_; // The SQLite DB is in memory | 1285 SQLiteDatabaseWrapper db_; // The SQLite DB is in memory |
1285 std::auto_ptr<ServerContext> context_; | 1286 std::unique_ptr<ServerContext> context_; |
1286 TimeoutDicomConnectionManager manager_; | 1287 TimeoutDicomConnectionManager manager_; |
1287 | 1288 |
1288 public: | 1289 public: |
1289 OrthancJobsSerialization() | 1290 OrthancJobsSerialization() |
1290 { | 1291 { |
1334 | 1335 |
1335 ASSERT_TRUE(CheckIdempotentSerialization(unserializer, instance)); | 1336 ASSERT_TRUE(CheckIdempotentSerialization(unserializer, instance)); |
1336 instance.Serialize(s); | 1337 instance.Serialize(s); |
1337 } | 1338 } |
1338 | 1339 |
1339 std::auto_ptr<JobOperationValue> value; | 1340 std::unique_ptr<JobOperationValue> value; |
1340 value.reset(unserializer.UnserializeValue(s)); | 1341 value.reset(unserializer.UnserializeValue(s)); |
1341 ASSERT_EQ(JobOperationValue::Type_DicomInstance, value->GetType()); | 1342 ASSERT_EQ(JobOperationValue::Type_DicomInstance, value->GetType()); |
1342 ASSERT_EQ(id, dynamic_cast<DicomInstanceOperationValue&>(*value).GetId()); | 1343 ASSERT_EQ(id, dynamic_cast<DicomInstanceOperationValue&>(*value).GetId()); |
1343 | 1344 |
1344 { | 1345 { |
1367 | 1368 |
1368 ASSERT_TRUE(CheckIdempotentSerialization(unserializer, operation)); | 1369 ASSERT_TRUE(CheckIdempotentSerialization(unserializer, operation)); |
1369 operation.Serialize(s); | 1370 operation.Serialize(s); |
1370 } | 1371 } |
1371 | 1372 |
1372 std::auto_ptr<IJobOperation> operation; | 1373 std::unique_ptr<IJobOperation> operation; |
1373 | 1374 |
1374 { | 1375 { |
1375 operation.reset(unserializer.UnserializeOperation(s)); | 1376 operation.reset(unserializer.UnserializeOperation(s)); |
1376 | 1377 |
1377 Json::Value dummy; | 1378 Json::Value dummy; |
1454 } | 1455 } |
1455 | 1456 |
1456 // ModifyInstanceOperation | 1457 // ModifyInstanceOperation |
1457 | 1458 |
1458 { | 1459 { |
1459 std::auto_ptr<DicomModification> modification(new DicomModification); | 1460 std::unique_ptr<DicomModification> modification(new DicomModification); |
1460 modification->SetupAnonymization(DicomVersion_2008); | 1461 modification->SetupAnonymization(DicomVersion_2008); |
1461 | 1462 |
1462 ModifyInstanceOperation operation(GetContext(), RequestOrigin_Lua, modification.release()); | 1463 ModifyInstanceOperation operation(GetContext(), RequestOrigin_Lua, modification.release()); |
1463 | 1464 |
1464 ASSERT_TRUE(CheckIdempotentSerialization(unserializer, operation)); | 1465 ASSERT_TRUE(CheckIdempotentSerialization(unserializer, operation)); |
1505 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 1506 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
1506 ASSERT_TRUE(job.Serialize(s)); | 1507 ASSERT_TRUE(job.Serialize(s)); |
1507 } | 1508 } |
1508 | 1509 |
1509 { | 1510 { |
1510 std::auto_ptr<IJob> job; | 1511 std::unique_ptr<IJob> job; |
1511 job.reset(unserializer.UnserializeJob(s)); | 1512 job.reset(unserializer.UnserializeJob(s)); |
1512 | 1513 |
1513 DicomModalityStoreJob& tmp = dynamic_cast<DicomModalityStoreJob&>(*job); | 1514 DicomModalityStoreJob& tmp = dynamic_cast<DicomModalityStoreJob&>(*job); |
1514 ASSERT_EQ("LOCAL", tmp.GetLocalAet()); | 1515 ASSERT_EQ("LOCAL", tmp.GetLocalAet()); |
1515 ASSERT_EQ("REMOTE", tmp.GetRemoteModality().GetApplicationEntityTitle()); | 1516 ASSERT_EQ("REMOTE", tmp.GetRemoteModality().GetApplicationEntityTitle()); |
1535 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 1536 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
1536 ASSERT_TRUE(job.Serialize(s)); | 1537 ASSERT_TRUE(job.Serialize(s)); |
1537 } | 1538 } |
1538 | 1539 |
1539 { | 1540 { |
1540 std::auto_ptr<IJob> job; | 1541 std::unique_ptr<IJob> job; |
1541 job.reset(unserializer.UnserializeJob(s)); | 1542 job.reset(unserializer.UnserializeJob(s)); |
1542 | 1543 |
1543 OrthancPeerStoreJob& tmp = dynamic_cast<OrthancPeerStoreJob&>(*job); | 1544 OrthancPeerStoreJob& tmp = dynamic_cast<OrthancPeerStoreJob&>(*job); |
1544 ASSERT_EQ("http://localhost/", tmp.GetPeer().GetUrl()); | 1545 ASSERT_EQ("http://localhost/", tmp.GetPeer().GetUrl()); |
1545 ASSERT_EQ("username", tmp.GetPeer().GetUsername()); | 1546 ASSERT_EQ("username", tmp.GetPeer().GetUsername()); |
1548 } | 1549 } |
1549 | 1550 |
1550 // ResourceModificationJob | 1551 // ResourceModificationJob |
1551 | 1552 |
1552 { | 1553 { |
1553 std::auto_ptr<DicomModification> modification(new DicomModification); | 1554 std::unique_ptr<DicomModification> modification(new DicomModification); |
1554 modification->SetupAnonymization(DicomVersion_2008); | 1555 modification->SetupAnonymization(DicomVersion_2008); |
1555 | 1556 |
1556 ResourceModificationJob job(GetContext()); | 1557 ResourceModificationJob job(GetContext()); |
1557 job.SetModification(modification.release(), ResourceType_Patient, true); | 1558 job.SetModification(modification.release(), ResourceType_Patient, true); |
1558 job.SetOrigin(DicomInstanceOrigin::FromLua()); | 1559 job.SetOrigin(DicomInstanceOrigin::FromLua()); |
1560 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 1561 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
1561 ASSERT_TRUE(job.Serialize(s)); | 1562 ASSERT_TRUE(job.Serialize(s)); |
1562 } | 1563 } |
1563 | 1564 |
1564 { | 1565 { |
1565 std::auto_ptr<IJob> job; | 1566 std::unique_ptr<IJob> job; |
1566 job.reset(unserializer.UnserializeJob(s)); | 1567 job.reset(unserializer.UnserializeJob(s)); |
1567 | 1568 |
1568 ResourceModificationJob& tmp = dynamic_cast<ResourceModificationJob&>(*job); | 1569 ResourceModificationJob& tmp = dynamic_cast<ResourceModificationJob&>(*job); |
1569 ASSERT_TRUE(tmp.IsAnonymization()); | 1570 ASSERT_TRUE(tmp.IsAnonymization()); |
1570 ASSERT_EQ(RequestOrigin_Lua, tmp.GetOrigin().GetRequestOrigin()); | 1571 ASSERT_EQ(RequestOrigin_Lua, tmp.GetOrigin().GetRequestOrigin()); |
1627 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 1628 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
1628 ASSERT_TRUE(job.Serialize(s)); | 1629 ASSERT_TRUE(job.Serialize(s)); |
1629 } | 1630 } |
1630 | 1631 |
1631 { | 1632 { |
1632 std::auto_ptr<IJob> job; | 1633 std::unique_ptr<IJob> job; |
1633 job.reset(unserializer.UnserializeJob(s)); | 1634 job.reset(unserializer.UnserializeJob(s)); |
1634 | 1635 |
1635 SplitStudyJob& tmp = dynamic_cast<SplitStudyJob&>(*job); | 1636 SplitStudyJob& tmp = dynamic_cast<SplitStudyJob&>(*job); |
1636 ASSERT_TRUE(tmp.IsKeepSource()); | 1637 ASSERT_TRUE(tmp.IsKeepSource()); |
1637 ASSERT_EQ(study, tmp.GetSourceStudy()); | 1638 ASSERT_EQ(study, tmp.GetSourceStudy()); |
1691 GetContext().GetIndex().GetAllUuids(tmp, ResourceType_Series); | 1692 GetContext().GetIndex().GetAllUuids(tmp, ResourceType_Series); |
1692 ASSERT_EQ(3u, tmp.size()); | 1693 ASSERT_EQ(3u, tmp.size()); |
1693 } | 1694 } |
1694 | 1695 |
1695 { | 1696 { |
1696 std::auto_ptr<IJob> job; | 1697 std::unique_ptr<IJob> job; |
1697 job.reset(unserializer.UnserializeJob(s)); | 1698 job.reset(unserializer.UnserializeJob(s)); |
1698 | 1699 |
1699 MergeStudyJob& tmp = dynamic_cast<MergeStudyJob&>(*job); | 1700 MergeStudyJob& tmp = dynamic_cast<MergeStudyJob&>(*job); |
1700 ASSERT_TRUE(tmp.IsKeepSource()); | 1701 ASSERT_TRUE(tmp.IsKeepSource()); |
1701 ASSERT_EQ(study, tmp.GetTargetStudy()); | 1702 ASSERT_EQ(study, tmp.GetTargetStudy()); |