Browse Source
Add rough code for generating a collection of brushes in script.fsx in Test Centre. Make minor changes to Assembly Info and fsproj (Test Centre).master
Craig Oates
6 years ago
5 changed files with 87 additions and 6 deletions
@ -0,0 +1,54 @@ |
|||||||
|
namespace LibraryTests |
||||||
|
|
||||||
|
module PropertyTests = |
||||||
|
|
||||||
|
open FsCheck.Xunit |
||||||
|
open System |
||||||
|
open System.Drawing |
||||||
|
open SmoulderingBeachBall.Domain.DomainTypes |
||||||
|
open System.Reflection |
||||||
|
open SmoulderingBeachBall.Services |
||||||
|
open System.IO |
||||||
|
|
||||||
|
let saveLocation = __SOURCE_DIRECTORY__ + "/SavingTestArea/" |
||||||
|
|
||||||
|
(* '3000' is an arbitary value. It is used to keep the testing times sane. |
||||||
|
This function is used to randomly generate image sizes but you do not need to use it. |
||||||
|
The project can handle larger numbers than '3000' but processing takes longer. |
||||||
|
If you decide to change it, please keep an eye on the saving time. |
||||||
|
When a image is too big, the project cannot write it to disc fast enough -- |
||||||
|
sometimes it is because of IO constraints. |
||||||
|
This means the tests checking for this fail/error will think the image does not exist. |
||||||
|
To resolved this, add a Thread.Sleep call to the affected tests. |
||||||
|
Just be aware, the length of sleep-time depends on the size of the image. |
||||||
|
Also, problems tends to arise around the 15,000 mark. |
||||||
|
*) |
||||||
|
let randomInt () = Random().Next(3000) |
||||||
|
|
||||||
|
let allColours = |
||||||
|
let properties = |
||||||
|
typeof<Brushes>.GetProperties(BindingFlags.Public ||| BindingFlags.Static) |
||||||
|
let colours = |
||||||
|
seq { for prop in properties -> prop} |
||||||
|
|> Seq.toArray |
||||||
|
colours |
||||||
|
|
||||||
|
let randomColour () = |
||||||
|
let item = allColours.[Random().Next(allColours.Length)] |
||||||
|
item.GetValue(null, null) |
||||||
|
|
||||||
|
let fileSaved width height = |
||||||
|
let path = saveLocation + width + "x" + height + ".png" |
||||||
|
File.Exists path |
||||||
|
|
||||||
|
[<Property>] |
||||||
|
let ``can create an image with no overlay`` () = |
||||||
|
// See note accompanying 'randomInt' function for constraints information. |
||||||
|
let spec = |
||||||
|
{ width = randomInt () |
||||||
|
height = randomInt () |
||||||
|
colour = randomColour () :?> Brush |
||||||
|
filePath = saveLocation |
||||||
|
overlay = None } |
||||||
|
makeImage spec |> Async.RunSynchronously |
||||||
|
fileSaved (spec.width.ToString()) (spec.height.ToString()) = true |
Loading…
Reference in new issue