public async Task CanCreateFullFractal() { var options = new FractalOptions { Expression = "z^3+1", PixelSize = new PixelSize(400, 400), DomainSize = new DomainSize(-5, 5, -5, 5), MaxIterations = 50, Precision = 1e-5, FillColor = new Hsv(0, 0, 0), Depth = 15, Gradient = 0.25f, }; var generator = new LocalFractalGenerator(options); var result = await generator.GenerateAsync(); var image = ImageUtils.GenerateImage(result.Contents); var path = Path.Combine(Directory.GetCurrentDirectory(), "Fractal.png"); image.Save(path); TestContext.AddTestAttachment(path, "Fractal image generated"); }
public static async Task <IActionResult> RunLocally( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); log.LogInformation($"Processor count: {Environment.ProcessorCount}"); var content = await new StreamReader(req.Body).ReadToEndAsync(); try { var options = JsonConvert.DeserializeObject <FractalOptions>(content); var generator = new LocalFractalGenerator(options); var fractal = await generator.GenerateAsync(); var image = ImageUtils.GenerateImage(fractal.Contents); var webImage = image.ToWebImage(); var response = new FunctionResult { ImageSource = webImage.Source, ColorSpecs = fractal.ColorSpecs.AsHexSpecs().ToList(), }; return(new OkObjectResult(response)); } catch (Exception ex) { var response = new FunctionResult { ErrorMessage = $"{ex.GetType().Name}: {ex.Message}", }; return(new OkObjectResult(response)); } }