+ * FullCompare: + * local: {@link FullCompareOptionsConfigurer#configureFullCompare(FullCompareOptionsConfigurer.FullCompareConfigConfigurer)} + * global: {@link this#FULL_COMPARE_GLOBAL_CONFIG} + * + * @see FullCompareConfig + * + *
+ * PartialCompare: + * local: {@link PartialCompareOptionsConfigurer#configurePartialCompare(PartialCompareOptionsConfigurer.PartialCompareConfigConfigurer)} + * global: {@link this#PARTIAL_COMPARE_GLOBAL_CONFIG} + * @see PartialCompareConfig + *
+ *
+ */ +public class Comparator { + + /** + * Comparison is initialized with Global Config, if present. + * Otherwise default Configs get created. + */ + private static PartialCompareConfig PARTIAL_COMPARE_GLOBAL_CONFIG; + private static FullCompareConfig FULL_COMPARE_GLOBAL_CONFIG; + + private Comparator() { + } + + /** + * Create with this method. + */ + public static ActorConfigurer compare(Object root) { + return Comparison.builder() + .root(root) + .fullCompareConfig(FullCompareConfigFactory.buildBasedOnGlobal().build()) + .partialCompareConfig(PartialCompareConfigFactory.buildBasedOnGlobal().build()) + .build(); + } + + /** + * Use {@link FullCompareConfig#modify()} for modification. + */ + public static FullCompareConfig getFullCompareGlobalConfig() { + if (FULL_COMPARE_GLOBAL_CONFIG == null) { + FULL_COMPARE_GLOBAL_CONFIG = new FullCompareConfig(); + } + return FULL_COMPARE_GLOBAL_CONFIG; + } + + public static void setFullCompareGlobalConfig(FullCompareConfig fullCompareGlobalConfig) { + FULL_COMPARE_GLOBAL_CONFIG = fullCompareGlobalConfig; + } + + /** + * Use {@link PartialCompareConfig#modify()}for modification. + */ + public static PartialCompareConfig getPartialCompareGlobalConfig() { + if (PARTIAL_COMPARE_GLOBAL_CONFIG == null) { + PARTIAL_COMPARE_GLOBAL_CONFIG = new PartialCompareConfig(); + } + return PARTIAL_COMPARE_GLOBAL_CONFIG; + } + + public static void setPartialCompareGlobalConfig(PartialCompareConfig partialCompareGlobalConfig) { + PARTIAL_COMPARE_GLOBAL_CONFIG = partialCompareGlobalConfig; + } + + /** + * Resets global configuration to default config. + */ + public static void resetGlobalConfig() { + setFullCompareGlobalConfig(FullCompareConfigFactory.buildDefault().build()); + setPartialCompareGlobalConfig(PartialCompareConfigFactory.buildDefault().build()); + } + + + +} diff --git a/src/main/java/com/github/vincemann/ezcompare/Comparison.java b/src/main/java/com/github/vincemann/ezcompare/Comparison.java index 94af3ef..950cc68 100644 --- a/src/main/java/com/github/vincemann/ezcompare/Comparison.java +++ b/src/main/java/com/github/vincemann/ezcompare/Comparison.java @@ -2,17 +2,15 @@ import com.github.hervian.reflection.Types; import com.google.common.collect.Sets; -import com.github.vincemann.ezcompare.util.BeanUtils; -import com.github.vincemann.ezcompare.util.ReflectionUtils; -import lombok.*; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; import org.junit.jupiter.api.Assertions; import java.util.ArrayList; -import java.util.HashSet; -import java.util.Set; import java.util.logging.Logger; -import static com.github.vincemann.ezcompare.util.MethodNameUtil.propertyNameOf; import static com.github.vincemann.ezcompare.util.MethodNameUtil.propertyNamesOf; @@ -30,24 +28,14 @@ * Uses only explicitly included fields from root. *
*
- * Supports local and global Configuration for each mode: * - * FullCompare: - * local: {@link FullCompareOptionsConfigurer#configureFullCompare(FullCompareConfigConfigurer)} - * global: {@link this#FULL_COMPARE_GLOBAL_CONFIG} - * @see FullCompareConfig - * - *
- * PartialCompare: - * local: {@link PartialCompareOptionsConfigurer#configurePartialCompare(PartialCompareConfigConfigurer)} - * global: {@link this#PARTIAL_COMPARE_GLOBAL_CONFIG} - * @see PartialCompareConfig - *
- *
* Supports two Result Modes:
* minimalDiff: stops searching for differences when first is found. (can be useful for performence reasons)
* fullDiff(default): always finds all differences.
* @see RapidEqualsBuilder.Diff
+ *
+ *
+ * Create with {@link Comparator#compare(Object)}
*/
@Getter
@Setter
@@ -62,16 +50,6 @@ public class Comparison implements
{
private final static Logger log = Logger.getLogger(Comparison.class.getName());
- /**
- * Comparison is initialized with Global Config, if present.
- * Otherwise default Configs get created.
- *
- *
- */
- private static PartialCompareConfig PARTIAL_COMPARE_GLOBAL_CONFIG;
- private static FullCompareConfig FULL_COMPARE_GLOBAL_CONFIG;
-
-
/**
* Local Config within scope of one Compare Process aka one {@link Comparison} instance.
*/
@@ -84,66 +62,13 @@ public class Comparison implements
private RapidEqualsBuilder.Diff diff;
private Boolean fullCompare = null;
- protected Comparison(Object root) {
+ @Builder(access = AccessLevel.PROTECTED)
+ protected Comparison(Object root,FullCompareConfig fullCompareConfig,PartialCompareConfig partialCompareConfig) {
this.root = root;
- initConfig();
- }
-
- protected void initConfig(){
- //clone Global Config for local use within this instance
- this.fullCompareConfig = FullCompareConfig.buildBasedOnGlobal().build();
- this.partialCompareConfig = PartialCompareConfig.buildDefault().build();
- }
-
- /**
- * Use {@link this#modFullCompareGlobalConfig()} for modification.
- */
- public static FullCompareConfig getFullCompareGlobalConfig() {
- if (FULL_COMPARE_GLOBAL_CONFIG == null) {
- FULL_COMPARE_GLOBAL_CONFIG = new FullCompareConfig();
- }
- return FULL_COMPARE_GLOBAL_CONFIG;
- }
-
- /**
- * Use {@link this#modPartialCompareGlobalConfig()} for modification.
- */
- public static PartialCompareConfig getPartialCompareGlobalConfig() {
- if (PARTIAL_COMPARE_GLOBAL_CONFIG == null) {
- PARTIAL_COMPARE_GLOBAL_CONFIG = new PartialCompareConfig();
- }
- return PARTIAL_COMPARE_GLOBAL_CONFIG;
- }
-
- public static PartialCompareConfig.Builder modPartialCompareGlobalConfig(){
- return new PartialCompareConfig.Builder(getPartialCompareGlobalConfig());
- }
- public static FullCompareConfig.Builder modFullCompareGlobalConfig(){
- return new FullCompareConfig.Builder(getFullCompareGlobalConfig());
- }
-
- public static void setPartialCompareGlobalConfig(PartialCompareConfig partialCompareGlobalConfig) {
- PARTIAL_COMPARE_GLOBAL_CONFIG = partialCompareGlobalConfig;
- }
-
- public static void setFullCompareGlobalConfig(FullCompareConfig fullCompareGlobalConfig) {
- FULL_COMPARE_GLOBAL_CONFIG = fullCompareGlobalConfig;
+ this.fullCompareConfig = fullCompareConfig;
+ this.partialCompareConfig = partialCompareConfig;
}
- /**
- * Resets global configuration to default config.
- */
- public static void globalReset(){
- setFullCompareGlobalConfig(FullCompareConfig.buildDefault().build());
- setPartialCompareGlobalConfig(PartialCompareConfig.buildDefault().build());
- }
-
- /**
- * Create with this method.
- */
- public static ActorConfigurer compare(Object root) {
- return new Comparison(root);
- }
@Override
public SelectedActorConfigurer with(Object actor) {
@@ -172,7 +97,7 @@ public FullComparePropertyConfigurer ignore(String... propertyNames) {
/**
* Globally ignored Properties are not included.
* If you want to add some of them anyways for this specific comparison, use {@link this#configureFullCompare(FullCompareConfigConfigurer)}
- * and remove them from {@link FullCompareConfig#ignoredProperties} for this specific CompareTemplate.
+ * and remove them from {@link com.github.vincemann.ezcompare.FullCompareConfig#ignoredProperties} for this specific CompareTemplate.
*/
@Override
public FullComparePropertyConfigurer all() {
@@ -233,13 +158,23 @@ protected RapidEqualsBuilder.CompareConfig selectConfig() {
@Override
public ResultProvider assertEqual() {
- Assertions.assertTrue(performEqualCheck());
+ boolean equal = performEqualCheck();
+ //get better assert msg in test
+ getDiff().getDiffNodes().forEach(diffNode -> {
+ Assertions.assertEquals(diffNode.getRootValue(),diffNode.getCompareValue());
+ });
+ Assertions.assertTrue(equal);
return this;
}
@Override
public ResultProvider assertNotEqual() {
- Assertions.assertFalse(performEqualCheck());
+ boolean equal = performEqualCheck();
+ //get better assert msg in test
+ getDiff().getDiffNodes().forEach(diffNode -> {
+ Assertions.assertNotEquals(diffNode.getRootValue(),diffNode.getCompareValue());
+ });
+ Assertions.assertFalse(equal);
return this;
}
@@ -273,232 +208,9 @@ public FullCompareOptionsConfigurer ignoreNotFound(boolean v) {
@Override
public SelectedActorConfigurer and() {
- return Comparison.compare(root).with(compare);
- }
-
- public interface CompareTemplateConfig {
-
- @Getter
- public static abstract class CompareTemplateConfigBuilder /*implements CompareTemplateConfigModder