/* * Hibernate Search, full-text search for your domain model * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.search.test.backend.lucene; import java.util.ArrayList; import java.util.Iterator; import java.util.NoSuchElementException; import org.hibernate.search.backend.AddLuceneWork; import org.hibernate.search.backend.LuceneWork; import org.hibernate.search.backend.OptimizeLuceneWork; import org.hibernate.search.backend.PurgeAllLuceneWork; import org.hibernate.search.backend.UpdateLuceneWork; import org.hibernate.search.backend.impl.lucene.Changeset; import org.hibernate.search.backend.impl.lucene.ChangesetList; import org.hibernate.search.testsupport.TestForIssue; import org.junit.Assert; import org.junit.Test; /** * Unit tests for the iterator functionality of org.hibernate.search.backend.impl.lucene.ChangesetList * @author Sanne Grinovero (C) 2015 Red Hat Inc. */ @TestForIssue(jiraKey = "HSEARCH-1769") public class ChangeSetIteratorTest { @Test public void testOutherIteratorBeingEmpty() { ChangesetList list = new ChangesetList( new ArrayList<Changeset>( 2 ) ); Iterator<LuceneWork> iterator = list.iterator(); Assert.assertFalse( iterator.hasNext() ); } @Test public void testOutherIteratorBeingEmptyException() { ChangesetList list = new ChangesetList( new ArrayList<Changeset>( 2 ) ); Iterator<LuceneWork> iterator = list.iterator(); try { iterator.next(); Assert.fail( "Should have thrown the exception" ); } catch (NoSuchElementException e) { //All good } } @Test public void testInnerIteratorBeingEmpty() { ArrayList<Changeset> outher = new ArrayList<Changeset>( 2 ); outher.add( new Changeset( new ArrayList<LuceneWork>( 2 ), null, null ) ); outher.add( new Changeset( new ArrayList<LuceneWork>( 2 ), null, null ) ); ChangesetList list = new ChangesetList( outher ); Iterator<LuceneWork> iterator = list.iterator(); Assert.assertFalse( "Iterator should have been empty", iterator.hasNext() ); } @Test public void testInnerIteratorBeingEmptyException() { ArrayList<Changeset> outher = new ArrayList<Changeset>( 2 ); outher.add( new Changeset( new ArrayList<LuceneWork>( 2 ), null, null ) ); outher.add( new Changeset( new ArrayList<LuceneWork>( 2 ), null, null ) ); ChangesetList list = new ChangesetList( outher ); Iterator<LuceneWork> iterator = list.iterator(); try { iterator.next(); Assert.fail( "Should have thrown the exception" ); } catch (NoSuchElementException e) { //All good } } @Test public void testInnerIteratorSingleEmpty() { ArrayList<LuceneWork> workListOne = new ArrayList<LuceneWork>( 2 ); workListOne.add( new PurgeAllLuceneWork( Object.class ) ); ArrayList<Changeset> outher = new ArrayList<Changeset>( 2 ); outher.add( new Changeset( workListOne, null, null ) ); ChangesetList list = new ChangesetList( outher ); Iterator<LuceneWork> iterator = list.iterator(); Assert.assertTrue( "Iterator should contain some elements", iterator.hasNext() ); Assert.assertTrue( iterator.next() instanceof PurgeAllLuceneWork ); } @Test public void testFourElementsIterator() { ArrayList<LuceneWork> workListOne = new ArrayList<LuceneWork>( 2 ); workListOne.add( new PurgeAllLuceneWork( Object.class ) ); workListOne.add( new AddLuceneWork( null, null, null, null ) ); ArrayList<LuceneWork> workListTwo = new ArrayList<LuceneWork>( 2 ); workListTwo.add( new OptimizeLuceneWork( Object.class ) ); workListTwo.add( new UpdateLuceneWork( null, null, null, null ) ); ArrayList<Changeset> outher = new ArrayList<Changeset>( 2 ); outher.add( new Changeset( workListOne, null, null ) ); outher.add( new Changeset( workListTwo, null, null ) ); ChangesetList list = new ChangesetList( outher ); Iterator<LuceneWork> iterator = list.iterator(); Assert.assertTrue( "Iterator should contain some elements", iterator.hasNext() ); Assert.assertTrue( iterator.next() instanceof PurgeAllLuceneWork ); iterator.hasNext(); Assert.assertTrue( iterator.next() instanceof AddLuceneWork ); iterator.hasNext(); Assert.assertTrue( iterator.next() instanceof OptimizeLuceneWork ); iterator.hasNext(); Assert.assertTrue( iterator.next() instanceof UpdateLuceneWork ); } }