private static void Test(Action<CubeConfiguration<FaceColour>> assert) { TestRunner.RunTestMultipleTimes(TestRunner.MultipleTimesToRun, async () => { var rotations = ConfigurationGenerator.GenerateRandomRotations(50).ToList(); var initialConfiguration = CubeConfiguration<FaceColour>.CreateStandardCubeConfiguration(3); CommonActions.ApplyRotations(rotations, initialConfiguration); var solver = new BeginerMethod(); var solution = await solver.Solve(initialConfiguration).ConfigureAwait(true); var configurationToTest = CubeConfiguration<FaceColour>.CreateStandardCubeConfiguration(3); CommonActions.ApplyRotations(rotations, initialConfiguration); CommonActions.ApplyRotations(solution, configurationToTest); assert.Invoke(configurationToTest); }); }
public async Task StartAnimation() { var configurationGenerator = new RandomCubeConfigurationGenerator(); ISolver solver3x3x3 = new BeginerMethod(); ISolver solver5x5x5 = new SimpleSolver(); var celebrator = new TimeDelayCelebrator(2000); // TODO: LOAD ALL SOLVERS + GENERATORS, GENERATE A CONFIG WITH RANDOM SIZE, PICK A SOLVER BASED ON THE CONFIGURATION GIVEN var random = new Random(); while (true) { var cubeSize = GetCubeSize(random); ISolver solver = cubeSize == 3 ? solver3x3x3 : solver5x5x5; var run = new SolveRun(configurationGenerator, solver, DisplayControl, celebrator, cubeSize); await run.Run().ConfigureAwait(true); } // ReSharper disable once FunctionNeverReturns }