Browse Source

fix script file test centre.

master
Craig Oates 5 years ago
parent
commit
bd7bfe5897
  1. 1
      DeathSocket/DeathSocket.fsproj
  2. 229
      TestCentre/Script.fsx

1
DeathSocket/DeathSocket.fsproj

@ -19,6 +19,7 @@
<AssemblyVersion>1.0.0.0</AssemblyVersion>
<PackageIconUrl>https://gitlab.com/CraigOates/Death-Socket/blob/master/.github/Images/death-socket-logo.png</PackageIconUrl>
<FileVersion>1.0.0.0</FileVersion>
<DependsOnNETStandard>true</DependsOnNETStandard>
</PropertyGroup>
<ItemGroup>

229
TestCentre/Script.fsx

@ -1,113 +1,116 @@
//// These DLL's must be built before you can use them in this script.
//#r "bin/Debug/System.Drawing.Common.dll"
//#r "bin/Debug/SmoulderingBeachBall.dll"
//open System
//open System.Drawing
//open System.Reflection
//open SmoulderingBeachBall.Domain
//open SmoulderingBeachBall.Services
//open System.Threading
//open System.IO
//let loadLocation = __SOURCE_DIRECTORY__ + "/LoadingTestArea"
//let saveLocation = __SOURCE_DIRECTORY__ + "/SavingTestArea"
//let random = Random()
//(* Resetting the Testing Area Folders Scripts
//===============================================================================
//The following scripts are for when you need to "manually" clear out the
//LoadingTestArea and SavingTestArea folders. If you do not want to open up the
//folder in Explorer and delete the files that way, just run the scripts in this
//section. If you reset the LoadingTestArea, you will need to repopulate it using
//the "Populating LoadingTestArea Folder Scripts" below. *)
//let resetSavingTestArea () =
// let files = Directory.GetFileSystemEntries(saveLocation, "*.png")
// match files.Length with
// | 0 -> ()
// | _ ->
// files
// |> Array.iter (fun f -> File.Delete(f))
//let resetLoadingTestArea () =
// let files = Directory.GetFileSystemEntries(loadLocation, "*.png")
// match files.Length with
// | 0 -> ()
// | _ ->
// files
// |> Array.iter (fun f -> File.Delete(f))
//// Run these when the above functions have been added to F# interactive.
//resetSavingTestArea ()
//resetLoadingTestArea ()
//(* Populating LoadingTestArea Folder Scripts
//===============================================================================
//The following scripts are to help you populate a test folder with test images.
//You can then use these images in LibraryTests.fs -- Property Tests.
//The tests consists of loading images from LoadingTestArea, transforming them
//and saving them in SavingTestArea. *)
//let allColours =
// let properties =
// typeof<Brushes>.GetProperties(BindingFlags.Public ||| BindingFlags.Static)
// seq { for prop in properties -> prop}
// |> Seq.toArray
//let randomBrush () =
// let item = allColours.[random.Next(allColours.Length)]
// item.GetValue(null, null)
//let generateDimensionSizes total =
// List.init total (fun _ -> random.Next(3000))
//let randomSize (sizes: int list) =
// // (Sleep) Helps to reduce chance of picking the same item twice in quick succession.
// Thread.Sleep 100
// sizes.Item (random.Next(sizes.Length))
//let populateSpec sizes =
// Brush ({ filePath = loadLocation
// height = randomSize (sizes)
// colour = (randomBrush ()) :?> Brush
// overlay = None })
//let generateSpecs amount =
// let imageSizes = generateDimensionSizes amount
// [for i in 0 .. amount -> (populateSpec (imageSizes)) ]
//let generateImage spec =
// printfn "[INFO.] Creating image [Width: %i] [Height: %i] ..." (spec.width) (spec.height)
// makeImage spec
//let populateLoadingTestArea () =
// printfn "[INFO.] Populating LoadingTestArea..."
// generateSpecs 100
// |> List.map generateImage
// |> Async.Parallel
// |> Async.RunSynchronously
// |> ignore
// printfn "[INFO.] Finishing populating /LoadingTestArea."
//// You should only need this once.
//// Make sure you have passed the above into F# Interactive.
//populateLoadingTestArea ()
//(* Creating the Saving Test Area Script
//==============================================================================
//This bit of code is for creating the SavingTestArea folder which Test Centre
//will use when it runs its tests. You will normally only need to run this code
//when you have just cloned this repository or you accidently deleted said
//folder. In other words, you should only need to use it once. *)
//let createSavingTestArea () =
// match Directory.Exists saveLocation with
// | false ->
// Directory.CreateDirectory saveLocation |> ignore
// printfn "SavingTestArea created."
// | _ -> printfn "SavingTestArea already exists."
//(* Before calling this function, make sure the test checking to see if this
//folder exists is failing first. *)
//createSavingTestArea ()
// These DLL's must be built before you can use them in this script.
#r "bin\Debug\System.Drawing.Common.dll"
#r @"..\packages\SmoulderingBeachBall.1.0.0\lib\netstandard2.0\SmoulderingBeachBall.dll"
open System
open System.Drawing
open System.Reflection
open SmoulderingBeachBall.Domain
open SmoulderingBeachBall.Services
open System.Threading
open System.IO
let loadLocation = __SOURCE_DIRECTORY__ + "/LoadingTestArea"
let saveLocation = __SOURCE_DIRECTORY__ + "/SavingTestArea"
let random = Random()
(* Resetting the Testing Area Folders Scripts
===============================================================================
The following scripts are for when you need to "manually" clear out the
LoadingTestArea and SavingTestArea folders. If you do not want to open up the
folder in Explorer and delete the files that way, just run the scripts in this
section. If you reset the LoadingTestArea, you will need to repopulate it using
the "Populating LoadingTestArea Folder Scripts" below. *)
let resetSavingTestArea () =
let files = Directory.GetFileSystemEntries(saveLocation, "*.png")
match files.Length with
| 0 -> ()
| _ ->
files
|> Array.iter (fun f -> File.Delete(f))
let resetLoadingTestArea () =
let files = Directory.GetFileSystemEntries(loadLocation, "*.png")
match files.Length with
| 0 -> ()
| _ ->
files
|> Array.iter (fun f -> File.Delete(f))
// Run these when the above functions have been added to F# interactive.
resetSavingTestArea ()
resetLoadingTestArea ()
(* Populating LoadingTestArea Folder Scripts
===============================================================================
The following scripts are to help you populate a test folder with test images.
You can then use these images in LibraryTests.fs -- Property Tests.
The tests consists of loading images from LoadingTestArea, transforming them
and saving them in SavingTestArea. *)
let allColours =
let properties =
typeof<Brushes>.GetProperties(BindingFlags.Public ||| BindingFlags.Static)
seq { for prop in properties -> prop}
|> Seq.toArray
let randomBrush () =
let item = allColours.[random.Next(allColours.Length)]
item.GetValue(null, null)
let generateDimensionSizes total =
List.init total (fun _ -> random.Next(3000))
let randomSize (sizes: int list) =
// (Sleep) Helps to reduce chance of picking the same item twice in quick succession.
Thread.Sleep 100
sizes.Item (random.Next(sizes.Length))
let populateSpec sizes =
let spec: SmoulderingBeachBall.Domain.DomainTypes.ImageSpec =
{ filePath = loadLocation
width = randomSize (sizes)
height = randomSize (sizes)
colour = (randomBrush ()) :?> Brush
overlay = None }
spec
let generateSpecs amount =
let imageSizes = generateDimensionSizes amount
[for i in 0 .. amount -> (populateSpec (imageSizes)) ]
let generateImage (spec: ImageSpec) =
printfn "[INFO.] Creating image [Width: %i] [Height: %i] ..." (spec.width) (spec.height)
makeImage spec
let populateLoadingTestArea () =
printfn "[INFO.] Populating LoadingTestArea..."
generateSpecs 100
|> List.map generateImage
|> Async.Parallel
|> Async.RunSynchronously
|> ignore
printfn "[INFO.] Finishing populating /LoadingTestArea."
// You should only need this once.
// Make sure you have passed the above into F# Interactive.
populateLoadingTestArea ()
(* Creating the Saving Test Area Script
==============================================================================
This bit of code is for creating the SavingTestArea folder which Test Centre
will use when it runs its tests. You will normally only need to run this code
when you have just cloned this repository or you accidently deleted said
folder. In other words, you should only need to use it once. *)
let createSavingTestArea () =
match Directory.Exists saveLocation with
| false ->
Directory.CreateDirectory saveLocation |> ignore
printfn "SavingTestArea created."
| _ -> printfn "SavingTestArea already exists."
(* Before calling this function, make sure the test checking to see if this
folder exists is failing first. *)
createSavingTestArea ()
Loading…
Cancel
Save