/*
* Copyright 2017 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.optaplanner.core.impl.domain.lookup;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Collections;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.optaplanner.core.api.domain.lookup.LookUpStrategyType;
import static org.junit.Assert.*;
@RunWith(Parameterized.class)
public class LookUpStrategyImmutableTest {
private final Object internalObject;
private final Object externalObject;
private LookUpManager lookUpManager;
public LookUpStrategyImmutableTest(Object internalObject, Object externalObject) {
this.internalObject = internalObject;
this.externalObject = externalObject;
}
@Parameterized.Parameters
public static Object[] data() {
return new Object[][]{
{true, new Boolean(true)},
{(byte) 1, new Byte((byte) 1)},
{(short) 1, new Short((short) 1)},
{1, new Integer(1)},
{1L, new Long(1)},
{0.5f, new Float(0.5f)},
{0.1d, new Double(0.1d)},
{BigInteger.ONE, new BigInteger("1")},
{BigDecimal.ONE, new BigDecimal("1")},
{'\n', new Character((char) 10)},
{"", new String()},
{LocalDate.of(1, 2, 3), LocalDate.of(1, 2, 3)},
{LocalTime.of(1, 2), LocalTime.of(1, 2)},
{LocalDateTime.of(1, 2, 3, 4, 5), LocalDateTime.of(1, 2, 3, 4, 5)}
};
}
@Before
public void setUpLookUpManager() {
lookUpManager = new LookUpManager(new LookUpStrategyResolver(LookUpStrategyType.PLANNING_ID_OR_NONE));
lookUpManager.resetWorkingObjects(Collections.emptyList());
}
@Test
public void addImmutable() {
lookUpManager.addWorkingObject(internalObject);
}
@Test
public void removeImmutable() {
lookUpManager.removeWorkingObject(internalObject);
}
@Test
public void locateImmutable() {
// make sure we are working with different instances
assertNotSame(internalObject, externalObject);
// since they are immutable we don't care about which instance is located
assertEquals(internalObject, lookUpManager.lookUpWorkingObject(externalObject));
}
}