public void CpCoordTest() //Tests GetCpCoord, SetCpCoord { Random random = new Random(7777777); int length = 50; //if applying GetCpCoord and SetCpCoord results in the same array as at the beginning CubieCube expected = CubieCube.FromAlg(Alg.FromRandomMoves(length, random)); CubieCube result = CubieCube.CreateSolved(); int coord = Coordinates.GetCornerPermutation(expected); Coordinates.SetCornerPermutation(result, coord); CollectionAssert.AreEqual(expected.CornerPermutation, result.CornerPermutation); //apply R2 to a solved cube CubieCube cube = CubieCube.CreateSolved(); cube.ApplyMove(Move.R2); int expectedCoord = 36177; int resultCoord = Coordinates.GetCornerPermutation(cube); Assert.AreEqual(expectedCoord, resultCoord); expected = CubieCube.CreateSolved(); expected.ApplyMove(Move.R2); result = CubieCube.CreateSolved(); Coordinates.SetCornerPermutation(result, expectedCoord); CollectionAssert.AreEqual(expected.CornerPermutation, result.CornerPermutation); //if solved permutation corresponds to the coordinate 0 expected = CubieCube.CreateSolved(); result = CubieCube.FromAlg(Alg.FromRandomMoves(length, random)); Coordinates.SetCornerPermutation(result, 0); CollectionAssert.AreEqual(expected.CornerPermutation, result.CornerPermutation); result = CubieCube.CreateSolved(); Assert.AreEqual(0, Coordinates.GetCornerPermutation(result)); //example from http://kociemba.org/math/coordlevel Corner[] cp = new Corner[] { Corner.DFR, Corner.UFL, Corner.ULB, Corner.URF, Corner.DRB, Corner.DLF, Corner.DBL, Corner.UBR }; cube = CubieCube.Create(cp, CubieCube.SolvedCO, CubieCube.SolvedEP, CubieCube.SolvedEO, CubieCube.SolvedCenters); resultCoord = Coordinates.GetCornerPermutation(cube); expectedCoord = 21021; Assert.AreEqual(expectedCoord, resultCoord); //exceptions Assert.ThrowsException <ArgumentNullException>(() => Coordinates.GetCornerPermutation(null)); Assert.ThrowsException <ArgumentNullException>(() => Coordinates.SetCornerPermutation(null, 0)); Assert.ThrowsException <ArgumentOutOfRangeException>(() => Coordinates.SetCornerPermutation(CubieCube.CreateSolved(), -1)); Assert.ThrowsException <ArgumentOutOfRangeException>(() => Coordinates.SetCornerPermutation(CubieCube.CreateSolved(), Coordinates.NumCornerPermutations)); }
public void CreateTest() { Assert.AreEqual( CubieCube.CreateSolved(), CubieCube.Create( CubieCube.SolvedCP, CubieCube.SolvedCO, CubieCube.SolvedEP, CubieCube.SolvedEO, CubieCube.SolvedCenters)); #region test exceptions Assert.ThrowsException <ArgumentNullException>(() => CubieCube.Create(null, CubieCube.SolvedCO, CubieCube.SolvedEP, CubieCube.SolvedEO, CubieCube.SolvedCenters)); Assert.ThrowsException <ArgumentNullException>(() => CubieCube.Create(CubieCube.SolvedCP, null, CubieCube.SolvedEP, CubieCube.SolvedEO, CubieCube.SolvedCenters)); Assert.ThrowsException <ArgumentNullException>(() => CubieCube.Create(CubieCube.SolvedCP, CubieCube.SolvedCO, null, CubieCube.SolvedEO, CubieCube.SolvedCenters)); Assert.ThrowsException <ArgumentNullException>(() => CubieCube.Create(CubieCube.SolvedCP, CubieCube.SolvedCO, CubieCube.SolvedEP, null, CubieCube.SolvedCenters)); Assert.ThrowsException <ArgumentNullException>(() => CubieCube.Create(CubieCube.SolvedCP, CubieCube.SolvedCO, CubieCube.SolvedEP, CubieCube.SolvedEO, null)); Assert.ThrowsException <ArgumentException>(() => CubieCube.Create(new Corner[NumCorners + 1], CubieCube.SolvedCO, CubieCube.SolvedEP, CubieCube.SolvedEO, CubieCube.SolvedCenters)); Assert.ThrowsException <ArgumentException>(() => CubieCube.Create(CubieCube.SolvedCP, new int[NumCorners + 1], CubieCube.SolvedEP, CubieCube.SolvedEO, CubieCube.SolvedCenters)); Assert.ThrowsException <ArgumentException>(() => CubieCube.Create(CubieCube.SolvedCP, CubieCube.SolvedCO, new Edge[NumEdges + 1], CubieCube.SolvedEO, CubieCube.SolvedCenters)); Assert.ThrowsException <ArgumentException>(() => CubieCube.Create(CubieCube.SolvedCP, CubieCube.SolvedCO, CubieCube.SolvedEP, new int[NumEdges + 1], CubieCube.SolvedCenters)); Assert.ThrowsException <ArgumentException>(() => CubieCube.Create(CubieCube.SolvedCP, CubieCube.SolvedCO, CubieCube.SolvedEP, CubieCube.SolvedEO, new Face[NumFaces + 1])); #endregion test exceptions }