// Path: src/test/java/de/galan/verjson/DummyTransformation.java
// public class DummyTransformation extends Transformation {
// 
// 	@Override
// 	protected void transform(JsonNode node) {
// 		//nada
// 	}
// 
// }
// 
// Path: src/test/java/de/galan/verjson/DummyValidation.java
// public class DummyValidation extends Validation {
// 
// 	public DummyValidation(String schema, String description) {
// 		super(schema, description);
// 	}
// 
// 
// 	public DummyValidation(String schema) {
// 		super(schema);
// 	}
// 
// 
// 	@Override
// 	public void process(JsonNode node) {
// 		// nothing
// 	}
// 
// 
// 	@Override
// 	public JsonSchema create(String schemaString) {
// 		return null;
// 	}
// 
// }
// 
// Path: src/test/java/de/galan/verjson/OtherStep.java
// public class OtherStep implements Step {
// 
// 	@Override
// 	public void process(JsonNode node) {
// 		//nada
// 	}
// 
// }
// 
// Path: src/main/java/de/galan/verjson/step/Step.java
// public interface Step {
// 
// 	/** Perform action on wrapped root node */
// 	public void process(JsonNode node) throws ProcessStepException;
// 
// }
// 
// Path: src/main/java/de/galan/verjson/step/transformation/Transformation.java
// public abstract class Transformation implements Step {
// 
// 	@Override
// 	public void process(JsonNode node) {
// 		transform(MetaWrapper.getData(node));
// 	}
// 
// 
// 	/** Transformation instructions to migrate to the next version */
// 	protected abstract void transform(JsonNode node);
// 
// }
// 
// Path: src/main/java/de/galan/verjson/step/validation/Validation.java
// public class Validation implements Step {
// 
// 	protected final static String LS = StandardSystemProperty.LINE_SEPARATOR.value();
// 
// 	String description;
// 	JsonSchema schema; // thread-safe
// 	static JsonSchemaFactory factory; // cached
// 
// 
// 	public Validation(String schema) {
// 		this(schema, null);
// 	}
// 
// 
// 	public Validation(String schema, String description) {
// 		this.description = description;
// 		this.schema = create(schema);
// 	}
// 
// 
// 	public String getDescription() {
// 		return description;
// 	}
// 
// 
// 	protected String getDescriptionAppendable() {
// 		return isBlank(getDescription()) ? EMPTY : (" (" + getDescription() + ")");
// 	}
// 
// 
// 	protected static synchronized JsonSchemaFactory getFactory() {
// 		if (factory == null) {
// 			factory = JsonSchemaFactory.byDefault();
// 		}
// 		return factory;
// 	}
// 
// 
// 	protected JsonSchemaFactory getJsonSchemaFactory() {
// 		return getFactory();
// 	}
// 
// 
// 	@Override
// 	public void process(JsonNode node) throws ProcessStepException {
// 		validate(MetaWrapper.getData(node));
// 	}
// 
// 
// 	protected JsonSchema getSchema() {
// 		return schema;
// 	}
// 
// 
// 	public void validate(JsonNode node) throws InvalidJsonException {
// 		ProcessingReport report = null;
// 		try {
// 			report = getSchema().validate(node);
// 		}
// 		catch (Throwable ex) {
// 			throw new InvalidJsonException("Could not validate JSON against schema" + getDescriptionAppendable(), ex);
// 		}
// 		if (!report.isSuccess()) {
// 
// 			StringBuilder builder = new StringBuilder();
// 			builder.append("Could not validate JSON against schema");
// 			builder.append(getDescriptionAppendable());
// 			builder.append(":");
// 			builder.append(LS);
// 			List<ProcessingMessage> messages = Lists.newArrayList(report);
// 			for (int i = 0; i < messages.size(); i++) {
// 				builder.append("- ");
// 				builder.append(messages.get(i).getMessage());
// 				builder.append(i == (messages.size() - 1) ? EMPTY : LS);
// 			}
// 			throw new InvalidJsonException(builder.toString());
// 		}
// 	}
// 
// 
// 	public JsonSchema create(String schemaString) {
// 		JsonSchema jsonSchema = null;
// 		try {
// 			JsonNode schemaNode = JsonLoader.fromString(schemaString);
// 			if (!getJsonSchemaFactory().getSyntaxValidator().schemaIsValid(schemaNode)) {
// 				throw new InvalidSchemaException("JSON Schema is invalid" + getDescriptionAppendable());
// 			}
// 			jsonSchema = getJsonSchemaFactory().getJsonSchema(schemaNode);
// 		}
// 		catch (NullPointerException | IOException | ProcessingException ex) {
// 			throw new InvalidSchemaException("JSON Schema could not be loaded" + getDescriptionAppendable(), ex);
// 		}
// 		return jsonSchema;
// 	}
// 
// }


import static org.assertj.core.api.Assertions.*;
import java.util.Collections;
import java.util.List;
import org.assertj.core.util.Lists;
import org.junit.Before;
import org.junit.Test;
import de.galan.commons.test.AbstractTestParent;
import de.galan.verjson.DummyTransformation;
import de.galan.verjson.DummyValidation;
import de.galan.verjson.OtherStep;
import de.galan.verjson.step.Step;
import de.galan.verjson.step.transformation.Transformation;
import de.galan.verjson.step.validation.Validation;
package de.galan.verjson.core;






/**
 * CUT ProxyStepComparator
 * 
 * @author daniel
 */
public class ProxyStepComparatorTest extends AbstractTestParent {

	ProxyStepComparator psc;
	Validation validation;
	Transformation transformation;
// Path: src/test/java/de/galan/verjson/DummyTransformation.java
// public class DummyTransformation extends Transformation {
// 
// 	@Override
// 	protected void transform(JsonNode node) {
// 		//nada
// 	}
// 
// }
// 
// Path: src/test/java/de/galan/verjson/DummyValidation.java
// public class DummyValidation extends Validation {
// 
// 	public DummyValidation(String schema, String description) {
// 		super(schema, description);
// 	}
// 
// 
// 	public DummyValidation(String schema) {
// 		super(schema);
// 	}
// 
// 
// 	@Override
// 	public void process(JsonNode node) {
// 		// nothing
// 	}
// 
// 
// 	@Override
// 	public JsonSchema create(String schemaString) {
// 		return null;
// 	}
// 
// }
// 
// Path: src/test/java/de/galan/verjson/OtherStep.java
// public class OtherStep implements Step {
// 
// 	@Override
// 	public void process(JsonNode node) {
// 		//nada
// 	}
// 
// }
// 
// Path: src/main/java/de/galan/verjson/step/Step.java
// public interface Step {
// 
// 	/** Perform action on wrapped root node */
// 	public void process(JsonNode node) throws ProcessStepException;
// 
// }
// 
// Path: src/main/java/de/galan/verjson/step/transformation/Transformation.java
// public abstract class Transformation implements Step {
// 
// 	@Override
// 	public void process(JsonNode node) {
// 		transform(MetaWrapper.getData(node));
// 	}
// 
// 
// 	/** Transformation instructions to migrate to the next version */
// 	protected abstract void transform(JsonNode node);
// 
// }
// 
// Path: src/main/java/de/galan/verjson/step/validation/Validation.java
// public class Validation implements Step {
// 
// 	protected final static String LS = StandardSystemProperty.LINE_SEPARATOR.value();
// 
// 	String description;
// 	JsonSchema schema; // thread-safe
// 	static JsonSchemaFactory factory; // cached
// 
// 
// 	public Validation(String schema) {
// 		this(schema, null);
// 	}
// 
// 
// 	public Validation(String schema, String description) {
// 		this.description = description;
// 		this.schema = create(schema);
// 	}
// 
// 
// 	public String getDescription() {
// 		return description;
// 	}
// 
// 
// 	protected String getDescriptionAppendable() {
// 		return isBlank(getDescription()) ? EMPTY : (" (" + getDescription() + ")");
// 	}
// 
// 
// 	protected static synchronized JsonSchemaFactory getFactory() {
// 		if (factory == null) {
// 			factory = JsonSchemaFactory.byDefault();
// 		}
// 		return factory;
// 	}
// 
// 
// 	protected JsonSchemaFactory getJsonSchemaFactory() {
// 		return getFactory();
// 	}
// 
// 
// 	@Override
// 	public void process(JsonNode node) throws ProcessStepException {
// 		validate(MetaWrapper.getData(node));
// 	}
// 
// 
// 	protected JsonSchema getSchema() {
// 		return schema;
// 	}
// 
// 
// 	public void validate(JsonNode node) throws InvalidJsonException {
// 		ProcessingReport report = null;
// 		try {
// 			report = getSchema().validate(node);
// 		}
// 		catch (Throwable ex) {
// 			throw new InvalidJsonException("Could not validate JSON against schema" + getDescriptionAppendable(), ex);
// 		}
// 		if (!report.isSuccess()) {
// 
// 			StringBuilder builder = new StringBuilder();
// 			builder.append("Could not validate JSON against schema");
// 			builder.append(getDescriptionAppendable());
// 			builder.append(":");
// 			builder.append(LS);
// 			List<ProcessingMessage> messages = Lists.newArrayList(report);
// 			for (int i = 0; i < messages.size(); i++) {
// 				builder.append("- ");
// 				builder.append(messages.get(i).getMessage());
// 				builder.append(i == (messages.size() - 1) ? EMPTY : LS);
// 			}
// 			throw new InvalidJsonException(builder.toString());
// 		}
// 	}
// 
// 
// 	public JsonSchema create(String schemaString) {
// 		JsonSchema jsonSchema = null;
// 		try {
// 			JsonNode schemaNode = JsonLoader.fromString(schemaString);
// 			if (!getJsonSchemaFactory().getSyntaxValidator().schemaIsValid(schemaNode)) {
// 				throw new InvalidSchemaException("JSON Schema is invalid" + getDescriptionAppendable());
// 			}
// 			jsonSchema = getJsonSchemaFactory().getJsonSchema(schemaNode);
// 		}
// 		catch (NullPointerException | IOException | ProcessingException ex) {
// 			throw new InvalidSchemaException("JSON Schema could not be loaded" + getDescriptionAppendable(), ex);
// 		}
// 		return jsonSchema;
// 	}
// 
// }


// Path: src/test/java/de/galan/verjson/core/ProxyStepComparatorTest.java
import static org.assertj.core.api.Assertions.*;
import java.util.Collections;
import java.util.List;
import org.assertj.core.util.Lists;
import org.junit.Before;
import org.junit.Test;
import de.galan.commons.test.AbstractTestParent;
import de.galan.verjson.DummyTransformation;
import de.galan.verjson.DummyValidation;
import de.galan.verjson.OtherStep;
import de.galan.verjson.step.Step;
import de.galan.verjson.step.transformation.Transformation;
import de.galan.verjson.step.validation.Validation;

package de.galan.verjson.core;






/**
 * CUT ProxyStepComparator
 * 
 * @author daniel
 */
public class ProxyStepComparatorTest extends AbstractTestParent {

	ProxyStepComparator psc;
	Validation validation;
	Transformation transformation;
	OtherStep other;