public void TestIdealMultiModalityQuery()
        {
            var server = new TestDicomServiceNode();

            server.Studies.AddRange(CreateTestStudies());
            server.StudyMatcher = IdealMatchModalitiesInStudy;

            var expectedStudies = new[]
            {
                "11", "12", "13", "14", "15",
                "21", "22", "23", "24", "25",
                "51", "52", "53", "54", "55"
            };

            var actualStudies = StudyBrowserComponent.TestGetStudyEntries(server, new StudyRootStudyIdentifier {
                ModalitiesInStudy = new[] { "PT", "CT" }
            }).Select(s => s.Study.StudyInstanceUid).ToList();

            AssertCollections(expectedStudies, actualStudies, "ModalitiesInStudy=['PT','CT']");
            Assert.AreEqual(2, server.ResetQueryCount(), "Too many server query calls");

            actualStudies = StudyBrowserComponent.TestGetStudyEntries(server, new StudyRootStudyIdentifier {
                ModalitiesInStudy = new[] { "CT", "PT" }
            }).Select(s => s.Study.StudyInstanceUid).ToList();
            AssertCollections(expectedStudies, actualStudies, "ModalitiesInStudy=['CT','PT']");
            Assert.AreEqual(2, server.ResetQueryCount(), "Too many server query calls");

            expectedStudies = new[]
            {
                "04", "05", "06", "07",
                "11", "12", "13", "14", "15",
                "21", "22", "23", "24", "25",
                "34", "35",
                "44", "45",
                "51", "52", "53", "54", "55"
            };

            actualStudies = StudyBrowserComponent.TestGetStudyEntries(server, new StudyRootStudyIdentifier {
                ModalitiesInStudy = new[] { "PT", "CT", "KO", "PR" }
            }).Select(s => s.Study.StudyInstanceUid).ToList();
            AssertCollections(expectedStudies, actualStudies, "ModalitiesInStudy=['PT','CT','KO','PR']");
            Assert.AreEqual(4, server.ResetQueryCount(), "Too many server query calls");
        }
        public void TestIdealSingleModalityQuery2()
        {
            var server = new TestDicomServiceNode();

            server.Studies.AddRange(CreateTestStudies());
            server.StudyMatcher = IdealMatchModalitiesInStudy;

            var expectedStudies = new string[0];

            var actualStudies = StudyBrowserComponent.TestGetStudyEntries(server, new StudyRootStudyIdentifier {
                ModalitiesInStudy = new[] { "ZZ" }
            }).Select(s => s.Study.StudyInstanceUid).ToList();

            AssertCollections(expectedStudies, actualStudies, "ModalitiesInStudy=['ZZ']");
            Assert.AreEqual(1, server.ResetQueryCount(), "Too many server query calls");

            actualStudies = StudyBrowserComponent.TestGetStudyEntries(server, new StudyRootStudyIdentifier {
                ModalitiesInStudy = new[] { "ZZ", "ZZ" }
            }).Select(s => s.Study.StudyInstanceUid).ToList();
            AssertCollections(expectedStudies, actualStudies, "ModalitiesInStudy=['ZZ','ZZ']");
            Assert.AreEqual(1, server.ResetQueryCount(), "Too many server query calls");
        }