package ru.hflabs.rcd.task.performer;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import ru.hflabs.rcd.model.task.TaskResultStatus;
import java.util.Date;
import java.util.Iterator;
import static org.testng.Assert.assertEquals;
public class ParametersHolderTest {
@DataProvider
private Iterator<Object[]> createTestCases() {
return Lists.<Object[]>newArrayList(
new Object[]{"stringValue", "1", String.class, "1"},
new Object[]{"longValue", 1, Long.class, 1L},
new Object[]{"integerValue", 1, Integer.class, 1},
new Object[]{"booleanValue", true, Boolean.class, Boolean.TRUE},
new Object[]{"dateValue", 946674000000L, Date.class, new Date(946674000000L)},
new Object[]{"enumValue", TaskResultStatus.UNKNOWN.name(), TaskResultStatus.class, TaskResultStatus.UNKNOWN}
).iterator();
}
@Test(dataProvider = "createTestCases")
public <T> void testRetrieveParameter(String key, Object value, Class<T> expectedClass, T expectedValue) {
ParametersHolder holder = new ParametersHolder(ImmutableMap.<String, Object>builder()
.put(key, value)
.build());
assertEquals(holder.retrieveParameter(key, expectedClass, null), expectedValue);
}
}