/*******************************************************************************
* Copyright (c) 2012-2016 Codenvy, S.A.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.everrest.core.impl.header;
import com.google.common.collect.ImmutableMap;
import org.everrest.core.header.QualityValue;
import org.everrest.core.impl.header.ListHeaderProducer.ListItemFactory;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import java.util.Map;
import static com.google.common.collect.Lists.newArrayList;
import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class ListHeaderProducerTest {
private final String header = "b,a,d,c";
private final String headerWithSpaces = " b\t, a , d, c ";
private final List<QualityValue> expectedQualityValueList = newArrayList(mockQualityValue("a", 1.0f),
mockQualityValue("b", 0.7f),
mockQualityValue("c", 0.5f),
mockQualityValue("d", 0.3f));
private final Map<String, QualityValue> headerItemToQualityValueMap = ImmutableMap.of("a", expectedQualityValueList.get(0),
"b", expectedQualityValueList.get(1),
"c", expectedQualityValueList.get(2),
"d", expectedQualityValueList.get(3));
private ListHeaderProducer<QualityValue> listHeaderProducer;
@SuppressWarnings("unchecked")
@Before
public void setUp() throws Exception {
ListItemFactory<QualityValue> itemFactory = mock(ListItemFactory.class);
when(itemFactory.createItem(anyString())).thenAnswer(invocation -> {
String value = ((String)invocation.getArguments()[0]).trim();
return headerItemToQualityValueMap.get(value);
});
listHeaderProducer = new ListHeaderProducer(itemFactory);
}
private QualityValue mockQualityValue(String value, Float qValue) {
QualityValue qualityValue = mock(QualityValue.class);
when(qualityValue.getQvalue()).thenReturn(qValue);
when(qualityValue.toString()).thenReturn(value);
return qualityValue;
}
@Test
public void parsesGivenStringToSortedListOfQualityValues() {
List<QualityValue> qualitySortedList = listHeaderProducer.createQualitySortedList(header);
assertEquals(expectedQualityValueList, qualitySortedList);
}
@Test
public void parsesGivenStringWithSpacesToSortedListOfQualityValues() {
List<QualityValue> qualitySortedList = listHeaderProducer.createQualitySortedList(headerWithSpaces);
assertEquals(expectedQualityValueList, qualitySortedList);
}
}