コード例 #1
0
        public void DownloadAsync_NullIdentifier_ThrowsException()
        {
            // Arrange
            var mockProvider = new MockProvider();
            var serverFactory = mockProvider.GetDicomServerFactoryFake();
            var clientFactory = mockProvider.GetDicomClientFactoryFake();
            var requestFactory = mockProvider.GetDicomRequestFactoryFake();

            var dicomDownloader = new DicomDownloader<TestInfo>(serverFactory, clientFactory, requestFactory);
            
            // Act + Assert
            Assert.That(dicomDownloader.DownloadAsync(null).Exception?.InnerExceptions[0], Is.TypeOf<ArgumentNullException>());
        }
コード例 #2
0
        public void LoadDataFromServer_GetResponse_StoresInCache()
        {
            // Arrange
            var mockProvider = new MockProvider();
            var cacheProvider = mockProvider.GetCacheProviderFake();
            var dataLoader = new DicomDataLoader<TestInfo>(cacheProvider, mockProvider.GetCacheIndexProviderFake(), mockProvider.GetDicomClientFactoryFake(), mockProvider.GetDicomRequestFactoryFake());

            var whereCollection = mockProvider.GetWhereCollection();
            whereCollection.WhereEquals(DicomTags.PatientID, 1);

            // Act
            var result = dataLoader.LoadDataFromServer(whereCollection);

            // Assert
            Assert.That(result.Count, Is.EqualTo(1));
            Assert.That(result.All(c => c.PatientID == 1), Is.True);
            Assert.That(() => cacheProvider.Received(1).Store(Arg.Any<string>(), Arg.Any<object>(), Arg.Any<bool>()), Throws.Nothing);
        }
コード例 #3
0
        public async void DownloadAsync_NullDownloadAction_DefaultActionIsUsed()
        {
            // Arrange
            var mockProvider = new MockProvider();
            var serverFactory = mockProvider.GetDicomServerFactoryFake();
            var clientFactory = mockProvider.GetDicomClientFactoryFake();
            var requestFactory = mockProvider.GetDicomRequestFactoryFake();

            var dicomDownloader = new DicomDownloader<TestInfo>(serverFactory, clientFactory, requestFactory);
            var identifier = new InfoIdentifier("identifier");

            serverFactory.When(c=>c.CreateDicomServer(Arg.Any<Func<InfoIdentifier, InfoIdentifier, Stream>>())).Do(c =>
            {
                var input = c.Arg<Func<InfoIdentifier, InfoIdentifier, Stream>>();
                input(identifier, new InfoIdentifier("test")).Dispose();
            });

            // Act
            await dicomDownloader.DownloadAsync(identifier);

            // Assert
            Assert.That(File.Exists("./DICOM/identifier/test.dcm"), Is.True);
        }
コード例 #4
0
        public void LoadDataFromServer_AllCombinationsAreAddedAsRequest()
        {
            // Arrange
            var mockProvider = new MockProvider();
            var dicomClientFactory = mockProvider.GetDicomClientFactoryFake();
            var dicomClient = mockProvider.GetDicomClientFake();
            var dataLoader = new DicomDataLoader<TestInfo>(mockProvider.GetCacheProviderFake(), mockProvider.GetCacheIndexProviderFake(), dicomClientFactory, mockProvider.GetDicomRequestFactoryFake());

            dicomClientFactory.CreateDicomClient().Returns(dicomClient);

            var whereCollection = mockProvider.GetWhereCollection();
            whereCollection.WhereEquals(DicomTags.PatientID, 1);
            whereCollection.WhereEquals(DicomTags.PatientID, 2);

            whereCollection.WhereEquals(DicomTags.PatientName, "test");
            whereCollection.WhereLike(DicomTags.PatientName, "test1");

            // Act
            dataLoader.LoadDataFromServer(whereCollection);

            // Assert
            Assert.That(() => dicomClient.Received(4).AddFindRequest(Arg.Any<IDicomFindRequest<TestInfo>>()), Throws.Nothing);
        }
コード例 #5
0
        public async void LoadDataFromCacheAsync_ReturnsFromCache()
        {
            // Arrange
            var mockProvider = new MockProvider();
            var cacheProvider = mockProvider.GetCacheProviderFake();
            var dataLoader = new DicomDataLoader<TestInfo>(cacheProvider, mockProvider.GetCacheIndexProviderFake(), mockProvider.GetDicomClientFactoryFake(), mockProvider.GetDicomRequestFactoryFake());
            var whereCollection = new WhereCollection<TestInfo>(mockProvider.GetDicomMappingFake());
            whereCollection.WhereEquals(DicomTags.PatientID, 1);

            // Act
            var result = (await dataLoader.LoadDataFromCacheAsync(whereCollection)).Single();

            // Assert
            Assert.That(result.PatientID, Is.EqualTo(1));
            Assert.That(() => cacheProvider.Received(1).Retrieve<TestInfo>(), Throws.Nothing);
        }
コード例 #6
0
        public async void DownloadAsync_MoveRequestIsAddedAndSent()
        {
            // Arrange
            var mockProvider = new MockProvider();
            var serverFactory = mockProvider.GetDicomServerFactoryFake();
            var clientFactory = mockProvider.GetDicomClientFactoryFake();
            var requestFactory = mockProvider.GetDicomRequestFactoryFake();

            var client = Substitute.For<IDicomClient<TestInfo>>();
            clientFactory.CreateDicomClient().Returns(client);

            var moveRequest = Substitute.For<IDicomMoveRequest>();
            requestFactory.CreateDicomMoveRequest(Arg.Any<InfoIdentifier>()).Returns(moveRequest);

            var dicomDownloader = new DicomDownloader<TestInfo>(serverFactory, clientFactory, requestFactory);
            var identifier = new InfoIdentifier("identifier");
            
            // Act
            await dicomDownloader.DownloadAsync(identifier, GetDownloadActionFake());

            // Assert
            Assert.That(() => requestFactory.Received(1).CreateDicomMoveRequest(identifier), Throws.Nothing);
            Assert.That(() => client.Received(1).AddMoveRequest(moveRequest), Throws.Nothing);
            Assert.That(() => client.Received(1).SendAsync(), Throws.Nothing);
        }
コード例 #7
0
        public void DownloadAsync_SeveralRequest_OnlyOneServerIsRunning()
        {
            // Arrange
            var mockProvider = new MockProvider();
            var serverFactory = mockProvider.GetDicomServerFactoryFake();
            var clientFactory = mockProvider.GetDicomClientFactoryFake();
            var requestFactory = mockProvider.GetDicomRequestFactoryFake();

            var client = Substitute.For<IDicomClient<TestInfo>>();
            clientFactory.CreateDicomClient().Returns(client);

            client.When(c=>c.SendAsync()).Do(c=> Thread.Sleep(100));

            var dicomDownloader = new DicomDownloader<TestInfo>(serverFactory, clientFactory, requestFactory);
            var identifier = new InfoIdentifier("identifier");

            // Act
            Task.WaitAll(
                Task.Factory.StartNew(() => dicomDownloader.DownloadAsync(identifier, GetDownloadActionFake())),
                Task.Factory.StartNew(() => dicomDownloader.DownloadAsync(identifier, GetDownloadActionFake())),
                Task.Factory.StartNew(() => dicomDownloader.DownloadAsync(identifier, GetDownloadActionFake()))
            );
            
            // Assert
            Assert.That(() => serverFactory.Received(1).CreateDicomServer(Arg.Any<Func<InfoIdentifier, InfoIdentifier, Stream>>()), Throws.Nothing);
       }