![JAR search and dependency download from the Maven repository](/logo.png)
br.com.objectos.testable.TestMap Maven / Gradle / Ivy
/*
* Copyright 2015 Objectos, Fábrica de Software LTDA.
*
* 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 br.com.objectos.testable;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
/**
* @author [email protected] (Marcio Endo)
*/
class TestMap {
private final Map, Test>> map = new LinkedHashMap<>();
private TestMap() {
put(Iterable.class, IterableEquality::of);
put(Optional.class, OptionalEquality::of);
put(Testable.class, TestableEquality::of);
}
public static TestMap of() {
return new TestMap();
}
public Test> get(Class> type) {
Test> test = this::defaultValue;
for (Map.Entry, Test>> entry : map.entrySet()) {
Class> key = entry.getKey();
if (key.isAssignableFrom(type)) {
test = entry.getValue();
break;
}
}
return test;
}
public void put(Class type, Test test) {
Objects.requireNonNull(type);
Objects.requireNonNull(test);
map.put(type, test);
}
private Equality defaultValue(String name, Object a, Object b) {
return Objects.equals(a, b)
? Equality.equal()
: Equality.notEqual(name, Objects.toString(a), Objects.toString(b));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy