コード例 #1
0
        public void Constructor_ResponseCallbackIsCalled()
        {
            // Arrange
            var mockProvider = new MockProvider();
            var fellowOakMockProvider = new FellowOakMockProvider();
            var whereCollection = mockProvider.GetWhereCollection();
            var infoBuilder = mockProvider.GetDicomInfoBuilderFake();
            infoBuilder.BuildInfo<TestInfo>(Arg.Any<object>()).Returns(new TestInfo
            {
                PatientID = 666,
                PatientName = "patientName"
            });

            var response = new DicomCFindResponse(new DicomDataset())
            {
                Dataset = new DicomDataset()
            };
            TestInfo responseItem = null;
            var responseAction = new Action<TestInfo>(item =>
            {
                responseItem = item;
            });

            // Act
            var dicomFindRequest = new FellowOakDicomFindRequest<TestInfo>(mockProvider.GetDicomMappingFake(), fellowOakMockProvider.GetDicomTagAdapterFake(), infoBuilder, mockProvider.GetGeneralizedInfoProviderFake(), fellowOakMockProvider.GetDicomSopClassUidProviderFake(), responseAction, whereCollection.GetDicomWhereCollections().First());
            var innerRequest = (DicomCFindRequest)dicomFindRequest.InnerRequest;
            
            innerRequest.OnResponseReceived(null, response);

            // Assert
            Assert.That(responseItem.PatientID, Is.EqualTo(666));
            Assert.That(responseItem.PatientName, Is.EqualTo("patientName"));
        }
コード例 #2
0
        public void GetDicomQuery_ReturnsDicomQuery()
        {
            // Arrange
            var mockProvider = new MockProvider();
            var dicomQueryProvider = new DicomQueryProvider<TestInfo>(mockProvider.GetGeneralizedInfoProviderFake(), mockProvider.GetDicomDataLoaderFake());

            // Act + Assert
            Assert.That(() => dicomQueryProvider.GetDicomQuery(), Throws.Nothing);
        }
コード例 #3
0
        public async void LoadFromCache_ToListAsync_LoadsFromCache()
        {
            // Arrange
            var mockProvider = new MockProvider();
            var dicomDataLoader = mockProvider.GetDicomDataLoaderFake();
            var dicomQuery = new DicomQuery<TestInfo>(mockProvider.GetGeneralizedInfoProviderFake(), dicomDataLoader, mockProvider.GetWhereCollectionFake());

            // Act
            await dicomQuery.LoadFromServer().LoadFromCache().ToListAsync();

            // Assert
            Assert.That(() => dicomDataLoader.Received(1).LoadDataFromCacheAsync(Arg.Any<IWhereCollection<TestInfo>>()), Throws.Nothing);
        }
コード例 #4
0
        public void AddFindRequest_RequestAdapterIsCalled()
        {
            // Arrange
            var mockProvider = new MockProvider();
            var fellowOakMockProvider = new FellowOakMockProvider();
            var requestAdapter = mockProvider.GetRequestAdapterFake();
            var dicomClient = new DicomClient<TestInfo>(mockProvider.GetSettingsProviderFake(), requestAdapter);
            var dicomFindRequest = new FellowOakDicomFindRequest<TestInfo>(mockProvider.GetDicomMappingFake(),fellowOakMockProvider.GetDicomTagAdapterFake(), mockProvider.GetDicomInfoBuilderFake(), mockProvider.GetGeneralizedInfoProviderFake(), fellowOakMockProvider.GetDicomSopClassUidProviderFake(), c=> {},mockProvider.GetDicomWhereCollectionFake());

            // Act
            dicomClient.AddFindRequest(dicomFindRequest);

            // Assert
            Assert.That(() => requestAdapter.Received(1).CreateFindDicomRequest(dicomFindRequest), Throws.Nothing);
        }
コード例 #5
0
        public void Constructor_CreatesInnerRequestWithWhereConditions()
        {
            // Arrange
            var mockProvider = new MockProvider();
            var fellowOakMockProvider = new FellowOakMockProvider();
            var whereCollection = mockProvider.GetWhereCollection();
            whereCollection.WhereEquals(DicomTags.PatientID, "PatientIDValue");
            whereCollection.WhereLike(DicomTags.PatientName, "PatientNameValue");

            // Act
            var dicomFindRequest = new FellowOakDicomFindRequest<TestInfo>(mockProvider.GetDicomMappingFake(), fellowOakMockProvider.GetDicomTagAdapterFake(), mockProvider.GetDicomInfoBuilderFake(), mockProvider.GetGeneralizedInfoProviderFake(), fellowOakMockProvider.GetDicomSopClassUidProviderFake(), c => {}, whereCollection.GetDicomWhereCollections().First());
            var innerRequestDataset = dicomFindRequest.InnerRequest.Dataset;

            // Assert
            Assert.That(innerRequestDataset.Get<string>(DicomTag.PatientID), Is.EqualTo("PatientIDValue"));
            Assert.That(innerRequestDataset.Get<string>(DicomTag.PatientName), Is.EqualTo("*PatientNameValue*"));
        }
コード例 #6
0
        public void WhereLike_WithoutCache_AddsConditionToRequest()
        {
            // Arrange
            var requestFactory = new DicomRequestFactoryFake();
            var mockProvider = new MockProvider();
            IDicomQuery<TestInfo> dicomQuery = new DicomQuery<TestInfo>(mockProvider.GetGeneralizedInfoProviderFake(), mockProvider.GetDicomDataLoaderFake(), mockProvider.GetWhereCollectionFake());

            // Act
            dicomQuery = dicomQuery.WhereLike(DicomTags.PatientID, 1);
            dicomQuery.ToList();
            var whereItem = ((IWhereCollection<TestInfo>)requestFactory.WhereCollection).Single();

            // Assert
            Assert.That(whereItem.DicomTag, Is.EqualTo(DicomTags.PatientID));
            Assert.That(whereItem.Value, Is.EqualTo(1));
            Assert.That(whereItem.Operator, Is.EqualTo(WhereOperator.Like));
        }
コード例 #7
0
        public async void GetSeriesByIDAsync_FromCache_ProperQueryIsCreated()
        {
            // Arrange
            var mockProvider = new MockProvider();
            var queryProvider = mockProvider.GetDicomQueryProviderForSeriesFake();
            var dataLoader = Substitute.For<IDicomDataLoader<SeriesInfo>>();
            var whereCollection = Substitute.For<IWhereCollection<SeriesInfo>>();
            var query = Substitute.For<DicomQuery<SeriesInfo>>(mockProvider.GetGeneralizedInfoProviderFake(), dataLoader, whereCollection);
            queryProvider.GetDicomQuery().Returns(query);

            var seriesInfoProvider = new SeriesInfoProvider(queryProvider);

            // Act
            await seriesInfoProvider.GetSeriesByIDAsync("1.2.3", true);

            // Assert
            Assert.That(() => dataLoader.Received(1).LoadDataFromCacheAsync(whereCollection), Throws.Nothing);
        }
コード例 #8
0
        public async void GetPatientByBirthNumber_FromServer_ProperQueryIsCreated([Values("910725/6444", "9107256444")] string birthNumber)
        {
            // Arrange
            var mockProvider = new MockProvider();
            var queryProvider = Substitute.For<IDicomQueryProvider<PatientInfo>>();
            var dataLoader = Substitute.For<IDicomDataLoader<PatientInfo>>();
            var whereCollection = Substitute.For<IWhereCollection<PatientInfo>>();
            var query = Substitute.For<DicomQuery<PatientInfo>>(mockProvider.GetGeneralizedInfoProviderFake(), dataLoader, whereCollection);
            queryProvider.GetDicomQuery().Returns(query);

            var patientInfoProvider = new PatientInfoProvider(queryProvider, mockProvider.GetStudyInfoProviderFake(), mockProvider.GetBirthNumberParserFake());

            // Act
            await patientInfoProvider.GetPatientByBirthNumberAsync(birthNumber);

            // Assert
            Assert.That(() => whereCollection.Received(1).WhereEquals(DicomTags.PatientID, "910725/6444"), Throws.Nothing);
            Assert.That(() => whereCollection.Received(1).WhereEquals(DicomTags.PatientID, "9107256444"), Throws.Nothing);
        }
コード例 #9
0
        public async void DownloadImages_ProperMethodsAreCalled()
        {
            // Arrange
            var mockProvider = new MockProvider();
            var studyInfoProvider = Substitute.For<IStudyInfoProvider>();
            var dataLoader = Substitute.For<IDicomDataLoader<StudyInfo>>();
            var whereCollection = Substitute.For<WhereCollection<StudyInfo>>(mockProvider.GetDicomMappingFake());
            var query = Substitute.For<DicomQuery<StudyInfo>>(mockProvider.GetGeneralizedInfoProviderFake(), dataLoader, whereCollection);
            
            dataLoader.LoadDataFromServerAsync(Arg.Any<IWhereCollection<StudyInfo>>()).Returns(c =>
                Task<IImmutableList<StudyInfo>>.Factory.StartNew(() => 
                    new List<StudyInfo>
                    {
                        new StudyInfo(),
                        new StudyInfo()
                    }.ToImmutableList()));
            
            studyInfoProvider.GetStudiesForPatient(Arg.Any<PatientInfo>()).Returns(query);
            var patientInfoProvider = new PatientInfoProvider(mockProvider.GetDicomQueryProviderForPatientsFake(), studyInfoProvider, mockProvider.GetBirthNumberParserFake());
            var patient = new PatientInfo();
                
            // Act
            await patientInfoProvider.DownloadImagesAsync(patient);

            // Assert
            Assert.That(() => studyInfoProvider.Received(1).GetStudiesForPatient(patient), Throws.Nothing);
            Assert.That(() => studyInfoProvider.Received(2).DownloadImagesAsync(Arg.Any<StudyInfo>(), Arg.Any<Func<InfoIdentifier, InfoIdentifier, Stream>>()), Throws.Nothing);
        }
コード例 #10
0
        public void WhereLike_WithCache_FilterInMemoryList()
        {
            // Arrange
            var mockProvider = new MockProvider();
            IDicomQuery<TestInfo> dicomQuery = new DicomQuery<TestInfo>(mockProvider.GetGeneralizedInfoProviderFake(), mockProvider.GetDicomDataLoaderFake(), mockProvider.GetWhereCollectionFake());

            // Act
            dicomQuery = dicomQuery.WhereLike(DicomTags.PatientID, 1);
            var result = dicomQuery.ToList().Select(info => info.PatientID).ToList();

            // Assert
            Assert.That(result.Count, Is.EqualTo(2));
            Assert.That(result.Contains(1), Is.True);
            Assert.That(result.Contains(10), Is.True);
        }
コード例 #11
0
        public void GetSeriesForStudy_PropertQueryIsCreated()
        {
            // Arrange
            var mockProvider = new MockProvider();
            var queryProvider = Substitute.For<IDicomQueryProvider<SeriesInfo>>();
            var dataLoader = Substitute.For<IDicomDataLoader<SeriesInfo>>();
            var whereCollection = Substitute.For<IWhereCollection<SeriesInfo>>();
            var query = Substitute.For<DicomQuery<SeriesInfo>>(mockProvider.GetGeneralizedInfoProviderFake(), dataLoader, whereCollection);
            queryProvider.GetDicomQuery().Returns(query);

            var study = new StudyInfo
            {
                StudyInstanceUID = new InfoIdentifier("1.2.3")
            };

            var seriesInfoProvider = new SeriesInfoProvider(queryProvider);

            // Act
            seriesInfoProvider.GetSeriesForStudy(study);

            // Assert
            Assert.That(() => whereCollection.Received(1).WhereEquals(DicomTags.StudyInstanceUID, "1.2.3"), Throws.Nothing);
        }
コード例 #12
0
        public void WhereEquals_WithCache_FilterInMemoryList()
        {
            // Arrange
            var mockProvider = new MockProvider();
            IDicomQuery<TestInfo> dicomQuery = new DicomQuery<TestInfo>(mockProvider.GetGeneralizedInfoProviderFake(), mockProvider.GetDicomDataLoaderFake(), mockProvider.GetWhereCollectionFake());

            // Act
            dicomQuery = dicomQuery.WhereEquals(DicomTags.PatientID, 1);
            var result = dicomQuery.ToList().Single();

            // Assert
            Assert.That(result.PatientID, Is.EqualTo(1));
        }
コード例 #13
0
        private IDicomRequestAdapter<TestInfo> GetDicomRequestAdapter()
        {
            var mockProvider = new MockProvider();
            var fellowOakMockProvider = new FellowOakMockProvider();

            return new DicomRequestAdapter<TestInfo>(fellowOakMockProvider.GetDicomTagAdapterFake(), mockProvider.GetDicomInfoBuilderFake(), mockProvider.GetGeneralizedInfoProviderFake(),
                fellowOakMockProvider.GetDicomSopClassUidProviderFake());
        }
コード例 #14
0
        public async void GetStudyByIDAsync_FromServer_ProperQueryIsCreated()
        {
            // Arrange
            MockProvider mockProvider = new MockProvider();
            var queryProvider = mockProvider.GetDicomQueryProviderForStudiesFake();
            var dataLoader = Substitute.For<IDicomDataLoader<StudyInfo>>();
            var whereCollection = Substitute.For<IWhereCollection<StudyInfo>>();
            var query = Substitute.For<DicomQuery<StudyInfo>>(mockProvider.GetGeneralizedInfoProviderFake(), dataLoader, whereCollection);
            queryProvider.GetDicomQuery().Returns(query);

            StudyInfoProvider studyInfoProvider = new StudyInfoProvider(queryProvider, mockProvider.GetDicomDownloaderForStudiesFake());

            // Act
            await studyInfoProvider.GetStudyByIDAsync("1.2.3");

            // Assert
            Assert.That(() => whereCollection.Received(1).WhereEquals(DicomTags.StudyInstanceUID, "1.2.3"), Throws.Nothing);
        }
コード例 #15
0
        public void GetStudiesForPatient_ProperQueryIsCreated([Values("910725/6444", "9107256444")] string birthNumber)
        {
            // Arrange
            MockProvider mockProvider = new MockProvider();
            var queryProvider = Substitute.For<IDicomQueryProvider<StudyInfo>>();
            var dataLoader = Substitute.For<IDicomDataLoader<StudyInfo>>();
            var whereCollection = Substitute.For<IWhereCollection<StudyInfo>>();
            var query = Substitute.For<DicomQuery<StudyInfo>>(mockProvider.GetGeneralizedInfoProviderFake(), dataLoader, whereCollection);
            queryProvider.GetDicomQuery().Returns(query);

            PatientInfo patient = new PatientInfo
            {
                PatientID = new BirthNumber(birthNumber)
            };

            StudyInfoProvider studyInfoProvider = new StudyInfoProvider(queryProvider, mockProvider.GetDicomDownloaderForStudiesFake());

            // Act
            studyInfoProvider.GetStudiesForPatient(patient);

            // Assert
            Assert.That(() => whereCollection.Received(1).WhereEquals(DicomTags.PatientID, birthNumber), Throws.Nothing);
        }