/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.master.config.impl;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.testng.AssertJUnit.assertEquals;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.opengamma.OpenGammaRuntimeException;
import com.opengamma.core.config.impl.ConfigItem;
import com.opengamma.id.ExternalId;
import com.opengamma.master.config.ConfigDocument;
import com.opengamma.master.config.ConfigMaster;
import com.opengamma.master.config.ConfigSearchRequest;
import com.opengamma.master.config.ConfigSearchSortOrder;
import com.opengamma.util.test.TestGroup;
/**
* Test {@link ConfigSearchIterator}.
*/
@Test(groups = TestGroup.UNIT)
public class ConfigMasterIteratorTest {
private ConfigDocument _doc1;
private ConfigDocument _doc2;
private ConfigDocument _doc3;
private ConfigDocument _doc4;
private ConfigMaster _configMaster;
@BeforeMethod
public void setUp() throws Exception {
ConfigItem<ExternalId> item1 = ConfigItem.of(ExternalId.of("A", "B"), "Test1");
ConfigItem<ExternalId> item2 = ConfigItem.of(ExternalId.of("C", "D"), "Test2");
ConfigItem<ExternalId> item3 = ConfigItem.of(ExternalId.of("E", "F"), "Test3");
ConfigItem<ExternalId> item4 = ConfigItem.of(ExternalId.of("E", "F"), "Test3");
InMemoryConfigMaster configMaster = new InMemoryConfigMaster();
_doc1 = configMaster.add(new ConfigDocument(item1));
_doc2 = configMaster.add(new ConfigDocument(item2));
_doc3 = configMaster.add(new ConfigDocument(item3));
_doc4 = configMaster.add(new ConfigDocument(item4));
_configMaster = configMaster;
}
@AfterMethod
public void tearDown() throws Exception {
_configMaster = null;
}
//-------------------------------------------------------------------------
@Test(expectedExceptions = IllegalArgumentException.class)
public void test_constructor_2arg_nullMaster() throws Exception {
new ConfigSearchIterator<ExternalId>(null, new ConfigSearchRequest<ExternalId>());
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void test_constructor_2arg_nullRequest() throws Exception {
new ConfigSearchIterator<ExternalId>(_configMaster, null);
}
public void iterate() throws Exception {
ConfigSearchRequest<ExternalId> request = new ConfigSearchRequest<ExternalId>();
request.setType(ExternalId.class);
request.setSortOrder(ConfigSearchSortOrder.NAME_ASC);
ConfigSearchIterator<ExternalId> iterator = new ConfigSearchIterator<ExternalId>(_configMaster, request);
assertEquals(true, iterator.hasNext());
assertEquals(0, iterator.nextIndex());
assertEquals(_doc1, iterator.next());
assertEquals(1, iterator.nextIndex());
assertEquals(true, iterator.hasNext());
assertEquals(1, iterator.nextIndex());
assertEquals(_doc2, iterator.next());
assertEquals(2, iterator.nextIndex());
assertEquals(true, iterator.hasNext());
assertEquals(2, iterator.nextIndex());
assertEquals(_doc3, iterator.next());
assertEquals(3, iterator.nextIndex());
assertEquals(true, iterator.hasNext());
assertEquals(3, iterator.nextIndex());
assertEquals(_doc4, iterator.next());
assertEquals(4, iterator.nextIndex());
assertEquals(false, iterator.hasNext());
assertEquals(4, iterator.nextIndex());
}
@SuppressWarnings("unchecked")
@Test(expectedExceptions = OpenGammaRuntimeException.class)
public void iterateError() throws Exception {
ConfigSearchRequest<ExternalId> request = new ConfigSearchRequest<ExternalId>();
request.setType(ExternalId.class);
request.setSortOrder(ConfigSearchSortOrder.NAME_ASC);
ConfigMaster mockMaster = mock(ConfigMaster.class);
when(mockMaster.search(any(ConfigSearchRequest.class))).thenThrow(new IllegalStateException());
ConfigSearchIterator<ExternalId> iterator = new ConfigSearchIterator<ExternalId>(mockMaster, request);
iterator.hasNext();
}
}