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>()); }
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); }
public void LoadDataFromServer_WhereCollection_CreatesRequest() { // Arrange var mockProvider = new MockProvider(); var requestFactory = new DicomRequestFactoryFake(); var dataLoader = new DicomDataLoader<TestInfo>(mockProvider.GetCacheProviderFake(), mockProvider.GetCacheIndexProviderFake(), mockProvider.GetDicomClientFactoryFake(), requestFactory); var whereCollection = new WhereCollection<TestInfo>(mockProvider.GetDicomMappingFake()); whereCollection.WhereEquals(DicomTags.PatientID, 1); // Act dataLoader.LoadDataFromServer(whereCollection); var whereItem = ((IDicomWhereCollection)requestFactory.WhereCollection).Single(); // Assert Assert.That(whereItem.DicomTag, Is.EqualTo(DicomTags.PatientID)); Assert.That(whereItem.Value, Is.EqualTo("1")); }
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); }
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); }
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); }
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); }
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); }