/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.runtime.module.extension.internal.runtime.resolver;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
import static org.mule.test.module.extension.internal.util.ExtensionsTestUtils.getParameter;
import org.mule.runtime.api.meta.model.parameter.ParameterModel;
import org.mule.tck.junit4.AbstractMuleTestCase;
import org.mule.tck.size.SmallTest;
import org.mule.test.heisenberg.extension.model.HealthStatus;
import org.junit.Before;
import org.junit.Test;
@SmallTest
public class HashedResolverSetResultTestCase extends AbstractMuleTestCase {
private static final String NAME = "MG";
private static final int AGE = 31;
private static final HealthStatus HEALTH = null;
private ParameterModel nameParameterModel;
private ParameterModel ageParameterModel;
private ParameterModel healthParameterModel;
private ResolverSetResult result;
@Before
public void before() throws Exception {
nameParameterModel = getParameter("myName", String.class);
ageParameterModel = getParameter("age", Integer.class);
healthParameterModel = getParameter("initialHealth", HealthStatus.class);
result = buildResult();
}
@Test
public void testValues() {
assertResult(result);
}
@Test
public void equals() {
assertThat(result, equalTo(buildResult()));
}
@Test
public void notEquals() {
assertThat(result, not(equalTo(agelessResult())));
}
@Test
public void equivalentHashCode() {
assertThat(result.hashCode(), equalTo(buildResult().hashCode()));
}
@Test
public void nonEquivalentHashCode() {
assertThat(result.hashCode(), not(equalTo(agelessResult().hashCode())));
}
@Test(expected = IllegalArgumentException.class)
public void nullParameter() {
getBuilder().add(null, "blah");
}
@Test
public void invalidParameter() {
assertThat(result.get("invalid"), is(nullValue()));
}
@Test
public void invalidParameterName() {
assertThat(result.get("invalid"), is(nullValue()));
}
private void assertResult(ResolverSetResult result) {
assertThat(result.get(nameParameterModel.getName()), is(NAME));
assertThat(result.get(ageParameterModel.getName()), is(AGE));
assertThat(result.get(healthParameterModel.getName()), is(HEALTH));
}
private ResolverSetResult buildResult() {
return getBuilder().build();
}
private ResolverSetResult agelessResult() {
return getBuilder().add(ageParameterModel.getName(), null).build();
}
private ResolverSetResult.Builder getBuilder() {
return HashedResolverSetResult.newBuilder().add(nameParameterModel.getName(), NAME).add(ageParameterModel.getName(), AGE)
.add(healthParameterModel.getName(), HEALTH);
}
}