// Path: src/main/nyc/angus/wordgrid/solver/solution/GridSolution.java
// public class GridSolution {
// 	private final LinkedList<GridWord> words = new LinkedList<>();
// 
// 	/**
// 	 * Start creating a new solution by adding the first word in that solution.
// 	 */
// 	public GridSolution(final GridWord word) {
// 		add(word);
// 	}
// 
// 	/**
// 	 * Add a word to the solution set.
// 	 */
// 	public void add(final GridWord validWord) {
// 		words.add(validWord);
// 	}
// 
// 	/**
// 	 * Add a word to the start of the solution set.
// 	 */
// 	public void addFirst(final GridWord word) {
// 		words.addFirst(word);
// 	}
// 
// 	/**
// 	 * Get the words, ordered, from the solution.
// 	 */
// 	public LinkedList<GridWord> getWords() {
// 		return words;
// 	}
// 
// 	/**
// 	 * Check if a given word is in the solution.
// 	 */
// 	public boolean containsWord(final String string) {
// 		for (final GridWord word : words) {
// 			if (word.getString().equals(string)) {
// 				return true;
// 			}
// 		}
// 
// 		return false;
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return Objects.hashCode(words);
// 	}
// 
// 	@Override
// 	public boolean equals(final Object object) {
// 		if (object instanceof GridSolution) {
// 			final GridSolution that = (GridSolution) object;
// 			return Objects.equal(this.words, that.words);
// 		}
// 		return false;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return Joiner.on(", ").join(words);
// 	}
// 
// }
// 
// Path: src/main/nyc/angus/wordgrid/solver/solution/GridWord.java
// public class GridWord {
// 
// 	/**
// 	 * Word in the grid.
// 	 */
// 	private final String word;
// 
// 	/**
// 	 * Where the word is found in the grid.
// 	 */
// 	private final List<Position> positions;
// 
// 	/**
// 	 * The grid, as it looks when the word
// 	 */
// 	private final char[][] grid;
// 
// 	public GridWord(final String word, final List<Position> positions, final char[][] grid) {
// 		this.positions = positions;
// 		this.word = word;
// 		this.grid = grid;
// 	}
// 
// 	public String getString() {
// 		return word;
// 	}
// 
// 	public char[][] getGrid() {
// 		return grid;
// 	}
// 
// 	public List<Position> getPositions() {
// 		return positions;
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return Objects.hashCode(word, positions);
// 	}
// 
// 	@Override
// 	public boolean equals(final Object object) {
// 		if (object instanceof GridWord) {
// 			final GridWord that = (GridWord) object;
// 			return Objects.equal(this.word, that.word) && Objects.equal(this.positions, that.positions);
// 		}
// 		return false;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return word;
// 	}
// }
// 
// Path: src/main/nyc/angus/wordgrid/solver/solution/Position.java
// public class Position {
// 	public int x;
// 	public int y;
// 
// 	public Position(final int x, final int y) {
// 		this.x = x;
// 		this.y = y;
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return Objects.hashCode(x, y);
// 	}
// 
// 	@Override
// 	public boolean equals(final Object object) {
// 		if (object instanceof Position) {
// 			final Position that = (Position) object;
// 			return Objects.equal(this.x, that.x) && Objects.equal(this.y, that.y);
// 		}
// 		return false;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return MoreObjects.toStringHelper(this).add("x", x).add("y", y).toString();
// 	}
// }


import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.LinkedList;
import nyc.angus.wordgrid.solver.solution.GridSolution;
import nyc.angus.wordgrid.solver.solution.GridWord;
import nyc.angus.wordgrid.solver.solution.Position;
import org.junit.Before;
import org.junit.Test;
import com.google.common.collect.Lists;
/*
 * Copyright 2015, Angus Macdonald 
 */

package nyc.angus.wordgrid.test;






/**
 * Tests of the {@link GridSolution} class.
 */
public class GridSolutionTests {
	private GridWord grid1;
	private String word1;
	private String word2;
	private GridWord grid2;

	@Before
	public void setUp() {
// Path: src/main/nyc/angus/wordgrid/solver/solution/GridSolution.java
// public class GridSolution {
// 	private final LinkedList<GridWord> words = new LinkedList<>();
// 
// 	/**
// 	 * Start creating a new solution by adding the first word in that solution.
// 	 */
// 	public GridSolution(final GridWord word) {
// 		add(word);
// 	}
// 
// 	/**
// 	 * Add a word to the solution set.
// 	 */
// 	public void add(final GridWord validWord) {
// 		words.add(validWord);
// 	}
// 
// 	/**
// 	 * Add a word to the start of the solution set.
// 	 */
// 	public void addFirst(final GridWord word) {
// 		words.addFirst(word);
// 	}
// 
// 	/**
// 	 * Get the words, ordered, from the solution.
// 	 */
// 	public LinkedList<GridWord> getWords() {
// 		return words;
// 	}
// 
// 	/**
// 	 * Check if a given word is in the solution.
// 	 */
// 	public boolean containsWord(final String string) {
// 		for (final GridWord word : words) {
// 			if (word.getString().equals(string)) {
// 				return true;
// 			}
// 		}
// 
// 		return false;
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return Objects.hashCode(words);
// 	}
// 
// 	@Override
// 	public boolean equals(final Object object) {
// 		if (object instanceof GridSolution) {
// 			final GridSolution that = (GridSolution) object;
// 			return Objects.equal(this.words, that.words);
// 		}
// 		return false;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return Joiner.on(", ").join(words);
// 	}
// 
// }
// 
// Path: src/main/nyc/angus/wordgrid/solver/solution/GridWord.java
// public class GridWord {
// 
// 	/**
// 	 * Word in the grid.
// 	 */
// 	private final String word;
// 
// 	/**
// 	 * Where the word is found in the grid.
// 	 */
// 	private final List<Position> positions;
// 
// 	/**
// 	 * The grid, as it looks when the word
// 	 */
// 	private final char[][] grid;
// 
// 	public GridWord(final String word, final List<Position> positions, final char[][] grid) {
// 		this.positions = positions;
// 		this.word = word;
// 		this.grid = grid;
// 	}
// 
// 	public String getString() {
// 		return word;
// 	}
// 
// 	public char[][] getGrid() {
// 		return grid;
// 	}
// 
// 	public List<Position> getPositions() {
// 		return positions;
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return Objects.hashCode(word, positions);
// 	}
// 
// 	@Override
// 	public boolean equals(final Object object) {
// 		if (object instanceof GridWord) {
// 			final GridWord that = (GridWord) object;
// 			return Objects.equal(this.word, that.word) && Objects.equal(this.positions, that.positions);
// 		}
// 		return false;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return word;
// 	}
// }
// 
// Path: src/main/nyc/angus/wordgrid/solver/solution/Position.java
// public class Position {
// 	public int x;
// 	public int y;
// 
// 	public Position(final int x, final int y) {
// 		this.x = x;
// 		this.y = y;
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return Objects.hashCode(x, y);
// 	}
// 
// 	@Override
// 	public boolean equals(final Object object) {
// 		if (object instanceof Position) {
// 			final Position that = (Position) object;
// 			return Objects.equal(this.x, that.x) && Objects.equal(this.y, that.y);
// 		}
// 		return false;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return MoreObjects.toStringHelper(this).add("x", x).add("y", y).toString();
// 	}
// }


// Path: src/test/nyc/angus/wordgrid/test/GridSolutionTests.java
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.LinkedList;
import nyc.angus.wordgrid.solver.solution.GridSolution;
import nyc.angus.wordgrid.solver.solution.GridWord;
import nyc.angus.wordgrid.solver.solution.Position;
import org.junit.Before;
import org.junit.Test;
import com.google.common.collect.Lists;

/*
 * Copyright 2015, Angus Macdonald 
 */

package nyc.angus.wordgrid.test;






/**
 * Tests of the {@link GridSolution} class.
 */
public class GridSolutionTests {
	private GridWord grid1;
	private String word1;
	private String word2;
	private GridWord grid2;

	@Before
	public void setUp() {
		final char[][] charGrids = new char[][] { { 't', 'a' }, { 'l' }, { 'k' } };