//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void mustHandleMultipleEmptyIterators()
        public virtual void MustHandleMultipleEmptyIterators()
        {
            // given
            IList <PrimitiveLongResourceIterator> iterators = AsMutableList(emptyIterator(), emptyIterator(), emptyIterator());

            // when
            CompositeLabelScanValueIterator iterator = new CompositeLabelScanValueIterator(iterators, false);

            // then
            assertFalse(iterator.HasNext());
        }
        /* ALL = FALSE */
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void mustReportAllFromSingleIterator()
        public virtual void MustReportAllFromSingleIterator()
        {
            // given
            long[] expected = new long[] { 0L, 1L, long.MaxValue };
            IList <PrimitiveLongResourceIterator> iterators = Collections.singletonList(iterator(null, expected));

            // when
            CompositeLabelScanValueIterator iterator = new CompositeLabelScanValueIterator(iterators, false);

            // then
            assertArrayEquals(expected, PrimitiveLongCollections.asArray(iterator));
        }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void mustHandleEmptyListOfIterators()
        public virtual void MustHandleEmptyListOfIterators()
        {
            // given
            IList <PrimitiveLongResourceIterator> iterators = emptyList();

            // when
            CompositeLabelScanValueIterator iterator = new CompositeLabelScanValueIterator(iterators, false);

            // then
            assertFalse(iterator.HasNext());
            try
            {
                iterator.Next();
                fail("Expected iterator to throw");
            }
            catch (NoSuchElementException)
            {
                // Good
            }
        }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void mustReportAllFromNonOverlappingMultipleIterators()
        public virtual void MustReportAllFromNonOverlappingMultipleIterators()
        {
            // given
            AtomicInteger closeCounter = new AtomicInteger();

            long[] firstIter  = new long[] { 0L, 2L, long.MaxValue };
            long[] secondIter = new long[] { 1L, 3L };
            long[] expected   = new long[] { 0L, 1L, 2L, 3L, long.MaxValue };
            IList <PrimitiveLongResourceIterator> iterators = AsMutableList(iterator(closeCounter.incrementAndGet, firstIter), iterator(closeCounter.incrementAndGet, secondIter));

            // when
            CompositeLabelScanValueIterator iterator = new CompositeLabelScanValueIterator(iterators, false);

            // then
            assertArrayEquals(expected, PrimitiveLongCollections.asArray(iterator));

            // when
            iterator.Close();

            // then
            assertEquals("expected close count", 2, closeCounter.get());
        }
        /* ALL = TRUE */
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void mustOnlyReportValuesReportedByAll()
        public virtual void MustOnlyReportValuesReportedByAll()
        {
            // given
            AtomicInteger closeCounter = new AtomicInteger();

            long[] firstIter  = new long[] { 0L, long.MaxValue };
            long[] secondIter = new long[] { 0L, 1L, long.MaxValue };
            long[] thirdIter  = new long[] { 0L, 1L, 2L, long.MaxValue };
            long[] expected   = new long[] { 0L, long.MaxValue };
            IList <PrimitiveLongResourceIterator> iterators = AsMutableList(iterator(closeCounter.incrementAndGet, firstIter), iterator(closeCounter.incrementAndGet, secondIter), iterator(closeCounter.incrementAndGet, thirdIter));

            // when
            CompositeLabelScanValueIterator iterator = new CompositeLabelScanValueIterator(iterators, true);

            // then
            assertArrayEquals(expected, PrimitiveLongCollections.asArray(iterator));

            // when
            iterator.Close();

            // then
            assertEquals("expected close count", 3, closeCounter.get());
        }