// Path: src/main/java/nl/uva/larissa/json/model/Statement.java
// @JsonPropertyOrder({ "id", "actor", "verb", "object", "result", "context",
// 		"timestamp", "stored", "authority", "version" })
// @ValidRevisionUsage
// @ValidPlatformUsage
// public class Statement {
// 	@JsonProperty(required = false)
// 	@IsUUID
// 	private String id;
// 	@NotNull
// 	@Valid
// 	private Actor actor;
// 	@NotNull
// 	@Valid
// 	private Verb verb;
// 	@NotNull
// 	@Valid
// 	@JsonProperty("object")
// 	private StatementObject statementObject;
// 	private Result result;
// 	@Valid
// 	private Context context;
// 	// xAPI 1.0.1 4.1.7 A timestamp SHOULD be the current or a past time when it
// 	// is outside of a Sub-Statement.
// 	@Past
// 	private Date timestamp;
// 
// 	// should be set by the LRS, not the client
// 	@Null
// 	private Date stored;
// 	private Authority authority;
// 	private String version;
// 
// 	public String getId() {
// 		return id;
// 	}
// 
// 	public void setId(String id) {
// 		this.id = id;
// 	}
// 
// 	public Actor getActor() {
// 		return actor;
// 	}
// 
// 	public void setActor(Actor actor) {
// 		this.actor = actor;
// 	}
// 
// 	public Verb getVerb() {
// 		return verb;
// 	}
// 
// 	public void setVerb(Verb verb) {
// 		this.verb = verb;
// 	}
// 
// 	public StatementObject getStatementObject() {
// 		return statementObject;
// 	}
// 
// 	public void setStatementObject(StatementObject statementObject) {
// 		this.statementObject = statementObject;
// 	}
// 
// 	public Result getResult() {
// 		return result;
// 	}
// 
// 	public void setResult(Result result) {
// 		this.result = result;
// 	}
// 
// 	public Date getTimestamp() {
// 		return timestamp;
// 	}
// 
// 	public void setTimestamp(Date timestamp) {
// 		this.timestamp = timestamp;
// 	}
// 
// 	public Date getStored() {
// 		return stored;
// 	}
// 
// 	public void setStored(Date stored) {
// 		this.stored = stored;
// 	}
// 
// 	public Authority getAuthority() {
// 		return authority;
// 	}
// 
// 	public void setAuthority(Authority authority) {
// 		this.authority = authority;
// 	}
// 
// 	public String getVersion() {
// 		return version;
// 	}
// 
// 	public void setVersion(String version) {
// 		this.version = version;
// 	}
// 
// 	public Context getContext() {
// 		return context;
// 	}
// 
// 	public void setContext(Context context) {
// 		this.context = context;
// 	}
// }
// 
// Path: src/test/java/nl/uva/test/Util.java
// public class Util {
// 	public static String readJsonFile(File textFile) throws IOException {
// 		try (BufferedReader reader = new BufferedReader(
// 				new FileReader(textFile))) {
// 			final StringBuilder result = new StringBuilder();
// 			String line;
// 			while ((line = reader.readLine()) != null) {
// 				line = line.replaceAll(" ", "");
// 				result.append(line);
// 			}
// 			return result.toString();
// 		}
// 	}
// }


import static org.junit.Assert.*;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.ValidationException;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import nl.uva.larissa.json.model.Statement;
import nl.uva.test.Util;
import org.junit.BeforeClass;
import org.junit.Test;
package nl.uva.larissa.json;






public class TestStatementParser {

	private static StatementParser parser;
	private static StatementPrinter printer;

	private static File testFileDir = new File("src/test/resources/");
	private static File expectedOutputDir = new File(
			"src/test/resources/expected/");
	private static Validator validator;

	@BeforeClass
	public static void beforeClass() {
		parser = new StatementParserImpl();
		printer = new StatementPrinterImpl();

		ValidatorFactory factory = Validation.buildDefaultValidatorFactory();

		validator = factory.getValidator();
	}

	@Test
	public void testParser() throws IOException {
		File[] testFiles = testFileDir.listFiles(new FileFilter() {

			@Override
			public boolean accept(File pathname) {
				return pathname.getName().endsWith("json");
			}
		});

		for (File testFile : testFiles) {
			String jsonInput;

			jsonInput = Util.readJsonFile(testFile);

// Path: src/main/java/nl/uva/larissa/json/model/Statement.java
// @JsonPropertyOrder({ "id", "actor", "verb", "object", "result", "context",
// 		"timestamp", "stored", "authority", "version" })
// @ValidRevisionUsage
// @ValidPlatformUsage
// public class Statement {
// 	@JsonProperty(required = false)
// 	@IsUUID
// 	private String id;
// 	@NotNull
// 	@Valid
// 	private Actor actor;
// 	@NotNull
// 	@Valid
// 	private Verb verb;
// 	@NotNull
// 	@Valid
// 	@JsonProperty("object")
// 	private StatementObject statementObject;
// 	private Result result;
// 	@Valid
// 	private Context context;
// 	// xAPI 1.0.1 4.1.7 A timestamp SHOULD be the current or a past time when it
// 	// is outside of a Sub-Statement.
// 	@Past
// 	private Date timestamp;
// 
// 	// should be set by the LRS, not the client
// 	@Null
// 	private Date stored;
// 	private Authority authority;
// 	private String version;
// 
// 	public String getId() {
// 		return id;
// 	}
// 
// 	public void setId(String id) {
// 		this.id = id;
// 	}
// 
// 	public Actor getActor() {
// 		return actor;
// 	}
// 
// 	public void setActor(Actor actor) {
// 		this.actor = actor;
// 	}
// 
// 	public Verb getVerb() {
// 		return verb;
// 	}
// 
// 	public void setVerb(Verb verb) {
// 		this.verb = verb;
// 	}
// 
// 	public StatementObject getStatementObject() {
// 		return statementObject;
// 	}
// 
// 	public void setStatementObject(StatementObject statementObject) {
// 		this.statementObject = statementObject;
// 	}
// 
// 	public Result getResult() {
// 		return result;
// 	}
// 
// 	public void setResult(Result result) {
// 		this.result = result;
// 	}
// 
// 	public Date getTimestamp() {
// 		return timestamp;
// 	}
// 
// 	public void setTimestamp(Date timestamp) {
// 		this.timestamp = timestamp;
// 	}
// 
// 	public Date getStored() {
// 		return stored;
// 	}
// 
// 	public void setStored(Date stored) {
// 		this.stored = stored;
// 	}
// 
// 	public Authority getAuthority() {
// 		return authority;
// 	}
// 
// 	public void setAuthority(Authority authority) {
// 		this.authority = authority;
// 	}
// 
// 	public String getVersion() {
// 		return version;
// 	}
// 
// 	public void setVersion(String version) {
// 		this.version = version;
// 	}
// 
// 	public Context getContext() {
// 		return context;
// 	}
// 
// 	public void setContext(Context context) {
// 		this.context = context;
// 	}
// }
// 
// Path: src/test/java/nl/uva/test/Util.java
// public class Util {
// 	public static String readJsonFile(File textFile) throws IOException {
// 		try (BufferedReader reader = new BufferedReader(
// 				new FileReader(textFile))) {
// 			final StringBuilder result = new StringBuilder();
// 			String line;
// 			while ((line = reader.readLine()) != null) {
// 				line = line.replaceAll(" ", "");
// 				result.append(line);
// 			}
// 			return result.toString();
// 		}
// 	}
// }


// Path: src/test/java/nl/uva/larissa/json/TestStatementParser.java
import static org.junit.Assert.*;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.ValidationException;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import nl.uva.larissa.json.model.Statement;
import nl.uva.test.Util;
import org.junit.BeforeClass;
import org.junit.Test;

package nl.uva.larissa.json;






public class TestStatementParser {

	private static StatementParser parser;
	private static StatementPrinter printer;

	private static File testFileDir = new File("src/test/resources/");
	private static File expectedOutputDir = new File(
			"src/test/resources/expected/");
	private static Validator validator;

	@BeforeClass
	public static void beforeClass() {
		parser = new StatementParserImpl();
		printer = new StatementPrinterImpl();

		ValidatorFactory factory = Validation.buildDefaultValidatorFactory();

		validator = factory.getValidator();
	}

	@Test
	public void testParser() throws IOException {
		File[] testFiles = testFileDir.listFiles(new FileFilter() {

			@Override
			public boolean accept(File pathname) {
				return pathname.getName().endsWith("json");
			}
		});

		for (File testFile : testFiles) {
			String jsonInput;

			jsonInput = Util.readJsonFile(testFile);

			Statement statement;