public void rubixCubeTest() { var r = new RubixCube(); Func <string, int> parse = int.Parse; var cube = @"[[0,0,0,6,6,6,0,0,0,0,0,0], [0,0,0,6,6,6,0,0,0,0,0,0], [0,0,0,6,6,6,0,0,0,0,0,0], [5,5,5,1,1,1,2,2,2,3,3,3], [5,5,5,1,1,1,2,2,2,3,3,3], [5,5,5,1,1,1,2,2,2,3,3,3], [0,0,0,4,4,4,0,0,0,0,0,0], [0,0,0,4,4,4,0,0,0,0,0,0], [0,0,0,4,4,4,0,0,0,0,0,0]]"; var actual = "[[0,0,0,6,6,6,0,0,0,0,0,0],[0,0,0,6,6,6,0,0,0,0,0,0],[0,0,0,5,5,5,0,0,0,0,0,0],[5,5,4,1,1,1,6,2,2,3,3,3],[5,5,4,1,1,1,6,2,2,3,3,3],[5,5,4,1,1,1,6,2,2,3,3,3],[0,0,0,2,2,2,0,0,0,0,0,0],[0,0,0,4,4,4,0,0,0,0,0,0],[0,0,0,4,4,4,0,0,0,0,0,0]]"; Assert.AreEqual(actual, Util.JaggedArrayToString(r.rubixCube(Util.ParseJaggedArray(cube, parse), "U0"))); cube = @"[[0,0,0,6,6,6,0,0,0,0,0,0], [0,0,0,6,6,6,0,0,0,0,0,0], [0,0,0,6,6,6,0,0,0,0,0,0], [5,5,5,1,1,1,2,2,2,3,3,3], [5,5,5,1,1,1,2,2,2,3,3,3], [5,5,5,1,1,1,2,2,2,3,3,3], [0,0,0,4,4,4,0,0,0,0,0,0], [0,0,0,4,4,4,0,0,0,0,0,0], [0,0,0,4,4,4,0,0,0,0,0,0]]"; actual = "[[0,0,0,6,6,1,0,0,0,0,0,0],[0,0,0,6,6,1,0,0,0,0,0,0],[0,0,0,6,6,1,0,0,0,0,0,0],[5,5,5,1,1,4,2,2,2,6,3,3],[6,3,3,5,5,5,1,1,4,2,2,2],[5,5,5,1,1,4,2,2,2,6,3,3],[0,0,0,4,4,3,0,0,0,0,0,0],[0,0,0,4,4,3,0,0,0,0,0,0],[0,0,0,4,4,3,0,0,0,0,0,0]]"; Assert.AreEqual(actual, Util.JaggedArrayToString(r.rubixCube(Util.ParseJaggedArray(cube, parse), "R0 F1"))); cube = @"[[0,0,0,6,6,6,0,0,0,0,0,0], [0,0,0,6,6,6,0,0,0,0,0,0], [0,0,0,6,6,6,0,0,0,0,0,0], [5,5,5,1,1,1,2,2,2,3,3,3], [5,5,5,1,1,1,2,2,2,3,3,3], [5,5,5,1,1,1,2,2,2,3,3,3], [0,0,0,4,4,4,0,0,0,0,0,0], [0,0,0,4,4,4,0,0,0,0,0,0], [0,0,0,4,4,4,0,0,0,0,0,0]]"; actual = "[[0,0,0,6,6,6,0,0,0,0,0,0],[0,0,0,6,6,6,0,0,0,0,0,0],[0,0,0,6,6,6,0,0,0,0,0,0],[1,1,1,2,2,2,3,3,3,5,5,5],[1,1,1,2,2,2,3,3,3,5,5,5],[3,3,3,5,5,5,1,1,1,2,2,2],[0,0,0,4,4,4,0,0,0,0,0,0],[0,0,0,4,4,4,0,0,0,0,0,0],[0,0,0,4,4,4,0,0,0,0,0,0]]"; Assert.AreEqual(actual, Util.JaggedArrayToString(r.rubixCube(Util.ParseJaggedArray(cube, parse), "Fi1 F0 B0"))); cube = @"[[0,0,0,6,6,6,0,0,0,0,0,0], [0,0,0,6,6,6,0,0,0,0,0,0], [0,0,0,6,2,6,0,0,0,0,0,0], [5,5,5,1,1,1,2,2,2,3,3,3], [5,5,5,1,1,1,6,2,2,3,3,3], [5,5,5,1,1,1,2,2,2,3,3,3], [0,0,0,4,4,4,0,0,0,0,0,0], [0,0,0,4,4,4,0,0,0,0,0,0], [0,0,0,4,4,4,0,0,0,0,0,0]]"; actual = "[[0,0,0,6,6,6,0,0,0,0,0,0],[0,0,0,6,6,2,0,0,0,0,0,0],[0,0,0,6,6,6,0,0,0,0,0,0],[3,3,3,5,5,5,1,1,1,2,2,2],[5,5,5,1,1,1,6,2,2,3,3,3],[5,5,5,1,1,1,2,2,2,3,3,3],[0,0,0,4,4,4,0,0,0,0,0,0],[0,0,0,4,4,4,0,0,0,0,0,0],[0,0,0,4,4,4,0,0,0,0,0,0]]"; Assert.AreEqual(actual, Util.JaggedArrayToString(r.rubixCube(Util.ParseJaggedArray(cube, parse), "F2"))); cube = @"[[0,0,0,2,6,4,0,0,0,0,0,0], [0,0,0,6,3,5,0,0,0,0,0,0], [0,0,0,5,2,5,0,0,0,0,0,0], [1,5,4,1,4,1,6,4,3,2,1,6], [5,6,2,6,2,2,1,4,3,4,5,3], [3,6,1,2,5,2,6,3,6,5,4,4], [0,0,0,4,1,3,0,0,0,0,0,0], [0,0,0,3,1,2,0,0,0,0,0,0], [0,0,0,5,1,3,0,0,0,0,0,0]]"; actual = "[[0,0,0,1,1,5,0,0,0,0,0,0],[0,0,0,4,1,3,0,0,0,0,0,0],[0,0,0,4,2,2,0,0,0,0,0,0],[5,2,3,2,6,3,6,6,3,4,4,6],[1,4,6,5,2,4,3,6,5,1,5,2],[1,2,2,1,6,3,6,4,1,4,3,4],[0,0,0,6,1,5,0,0,0,0,0,0],[0,0,0,3,3,5,0,0,0,0,0,0],[0,0,0,2,5,5,0,0,0,0,0,0]]"; Assert.AreEqual(actual, Util.JaggedArrayToString(r.rubixCube(Util.ParseJaggedArray(cube, parse), "F2 F2 R0 U1 D2 U2 L0 U2 U1 U0 U2 B1 B0 F2 F2 D2 F1 U0 L0"))); cube = @"[[0,0,0,6,6,6,0,0,0,0,0,0], [0,0,0,6,6,6,0,0,0,0,0,0], [0,0,0,6,6,6,0,0,0,0,0,0], [5,5,5,1,1,1,2,2,2,3,3,3], [5,5,5,1,1,1,2,2,2,3,3,3], [5,5,5,1,1,1,2,2,2,3,3,3], [0,0,0,4,4,4,0,0,0,0,0,0], [0,0,0,4,4,4,0,0,0,0,0,0], [0,0,0,4,4,4,0,0,0,0,0,0]]"; actual = "[[0,0,0,6,6,6,0,0,0,0,0,0],[0,0,0,6,6,6,0,0,0,0,0,0],[0,0,0,6,6,6,0,0,0,0,0,0],[5,5,5,1,1,1,2,2,2,3,3,3],[5,5,5,1,1,1,2,2,2,3,3,3],[5,5,5,1,1,1,2,2,2,3,3,3],[0,0,0,4,4,4,0,0,0,0,0,0],[0,0,0,4,4,4,0,0,0,0,0,0],[0,0,0,4,4,4,0,0,0,0,0,0]]"; Assert.AreEqual(actual, Util.JaggedArrayToString(r.rubixCube(Util.ParseJaggedArray(cube, parse), "U0 Ri0 Ui0 R0 U0 Ri0 Ui0 R0 U0 Ri0 Ui0 R0 U0 Ri0 Ui0 R0 U0 Ri0 Ui0 R0 U0 Ri0 Ui0 R0"))); cube = @"[[0,0,0,0,0,6,6,6,6,6,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,6,6,6,6,6,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,6,6,6,6,6,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,6,6,6,6,6,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,6,6,6,6,6,0,0,0,0,0,0,0,0,0,0], [5,5,5,5,5,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3], [5,5,5,5,5,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3], [5,5,5,5,5,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3], [5,5,5,5,5,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3], [5,5,5,5,5,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3], [0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0]]"; actual = "[[0,0,0,0,0,4,5,5,5,4,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,6,6,6,6,6,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,6,6,6,6,6,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,6,6,6,6,6,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,4,2,2,2,4,0,0,0,0,0,0,0,0,0,0],[3,3,3,3,1,5,6,6,6,2,1,1,1,1,3,2,6,6,6,5],[3,5,5,5,1,5,1,1,1,2,1,2,2,2,3,2,3,3,3,5],[3,5,5,5,1,5,1,1,1,2,1,2,2,2,3,2,3,3,3,5],[3,5,5,5,1,5,1,1,1,2,1,2,2,2,3,2,3,3,3,5],[3,1,1,1,1,5,4,4,4,2,1,3,3,3,3,2,4,4,4,5],[0,0,0,0,0,6,5,5,5,6,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,6,2,2,2,6,0,0,0,0,0,0,0,0,0,0]]"; Assert.AreEqual(actual, Util.JaggedArrayToString(r.rubixCube(Util.ParseJaggedArray(cube, parse), "Ri0 Li0 Fi0 Bi0 Ui0 Di0"))); }