Skip to content

Commit

Permalink
Add instance method tests for ARCtrl.ValidationPackages
Browse files Browse the repository at this point in the history
  • Loading branch information
kMutagene committed Jul 15, 2024
1 parent 263db27 commit 6273594
Show file tree
Hide file tree
Showing 5 changed files with 135 additions and 6 deletions.
2 changes: 1 addition & 1 deletion src/ValidationPackages/ValidationPackage.fs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ type ValidationPackage(name, ?version) =
[
"-"
$" name: {this.Name}"
if version.IsSome then $" version: {this.Version}"
if version.IsSome then $" version: {this.Version.Value}"
]
|> String.concat System.Environment.NewLine

Expand Down
4 changes: 2 additions & 2 deletions src/ValidationPackages/ValidationPackagesConfig.fs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ type ValidationPackagesConfig(validation_packages, ?arc_specification) =
/// Pretty printer
override this.ToString() =
[
if this.ARCSpecification.IsSome then $"arc_specification: {this.ARCSpecification}"
if this.ARCSpecification.IsSome then $"arc_specification: {this.ARCSpecification.Value}"
"validation_packages:"
this.ValidationPackages
|> Seq.map (fun vp -> vp.ToString())
Expand All @@ -51,7 +51,7 @@ type ValidationPackagesConfig(validation_packages, ?arc_specification) =
override this.GetHashCode() =
[|
HashCodes.boxHashOption this.ARCSpecification
this.ValidationPackages.GetHashCode() |> box
this.ValidationPackages |> HashCodes.boxHashSeq
|]
|> HashCodes.boxHashArray
|> fun x -> x :?> int
5 changes: 4 additions & 1 deletion tests/ValidationPackages/Main.fs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@ module ARCtrl.FileSystem.Tests

open Fable.Pyxpecto

let all = testSequenced <| testList "ValidationPackages" []
let all = testSequenced <| testList "ValidationPackages" [
Tests.ValidationPackage.main
Tests.ValidationPackagesConfig.main
]

[<EntryPoint>]
let main argv = Pyxpecto.runTests [||] all
50 changes: 49 additions & 1 deletion tests/ValidationPackages/ValidationPackage.Tests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,52 @@ open TestingUtils
open ARCtrl
open ARCtrl.ValidationPackages

let tests_extended = testList "Instance methods" []
let tests_instance_methods = testList "Instance methods" [
let vp = ValidationPackage("name", "version")
let vp_no_version = ValidationPackage("name")
testCase "make - name and version" <| fun _ ->
let actual = ValidationPackage.make "name" (Some "version")
let expected = vp
Expect.equal actual expected ""
testCase "make - no version" <| fun _ ->
let actual = ValidationPackage.make "name" None
let expected = vp_no_version
Expect.equal actual expected ""
testCase "Copy - name and version" <| fun _ ->
let actual = vp.Copy()
let expected = vp
Expect.equal actual expected ""
testCase "Copy - no version" <| fun _ ->
let actual = vp_no_version.Copy()
let expected = vp_no_version
Expect.equal actual expected ""
testCase "ToString - name and version" <| fun _ ->
let actual = vp.ToString()
let expected = "-\n name: name\n version: version"
Expect.trimEqual actual expected ""
testCase "ToString - no version" <| fun _ ->
let actual = vp_no_version.ToString()
let expected = "-\n name: name"
Expect.trimEqual actual expected ""
testCase "Equals - name and version" <| fun _ ->
let actual = ValidationPackage("name", "version").Equals(vp)
let expected = true
Expect.equal actual expected ""
testCase "Equals - no version" <| fun _ ->
let actual = ValidationPackage("name").Equals(vp_no_version)
let expected = true
Expect.equal actual expected ""
testCase "GetHashCode - name and version" <| fun _ ->
let actual = ValidationPackage("name", "version").GetHashCode()
let expected = vp.GetHashCode()
Expect.equal actual expected ""
testCase "GetHashCode - no version" <| fun _ ->
let actual = ValidationPackage("name").GetHashCode()
let expected = vp_no_version.GetHashCode()
Expect.equal actual expected ""

]

let main = testList "ValidationPackage" [
tests_instance_methods
]
80 changes: 79 additions & 1 deletion tests/ValidationPackages/ValidationPackagesConfig.Tests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,82 @@ module Tests.ValidationPackagesConfig
open TestingUtils

open ARCtrl
open ARCtrl.ValidationPackages
open ARCtrl.ValidationPackages

let tests_instance_methods = testList "Instance methods" [
let vp = ValidationPackages.ValidationPackage("name", "version")
let vp_no_version = ValidationPackages.ValidationPackage("name")

let vpc = ValidationPackages.ValidationPackagesConfig(new ResizeArray<ValidationPackage>([vp; vp_no_version ]), "arc_specification")
let vpc_no_specs = ValidationPackages.ValidationPackagesConfig(new ResizeArray<ValidationPackage>([vp; vp_no_version ]))

testCase "make - specs and packages" <| fun _ ->
let actual = ValidationPackagesConfig.make (new ResizeArray<ValidationPackage>([vp; vp_no_version ])) (Some "arc_specification")
let expected = vpc
Expect.equal actual expected ""
testCase "make - no specs" <| fun _ ->
let actual = ValidationPackagesConfig.make (new ResizeArray<ValidationPackage>([vp; vp_no_version ])) None
let expected = vpc_no_specs
Expect.equal actual expected ""
testCase "Copy - specs and packages" <| fun _ ->
let actual = vpc.Copy()
let expected = vpc
Expect.equal actual expected ""
testCase "Copy - no specs" <| fun _ ->
let actual = vpc_no_specs.Copy()
let expected = vpc_no_specs
Expect.equal actual expected ""
testCase "ToString - specs and packages" <| fun _ ->
let actual = vpc.ToString()
let expected = "arc_specification: arc_specification\nvalidation_packages:\n-\n name: name\n version: version\n-\n name: name"
Expect.trimEqual actual expected ""
testCase "ToString - no specs" <| fun _ ->
let actual = vpc_no_specs.ToString()
let expected = "validation_packages:\n-\n name: name\n version: version\n-\n name: name"
Expect.trimEqual actual expected ""
testCase "StructurallyEquals - specs and packages" <| fun _ ->
let actual = ValidationPackages.ValidationPackagesConfig(new ResizeArray<ValidationPackage>([vp_no_version; vp]), "arc_specification").StructurallyEquals(vpc)
let expected = true
Expect.equal actual expected ""
testCase "StructurallyEquals - no specs" <| fun _ ->
let actual = ValidationPackages.ValidationPackagesConfig(new ResizeArray<ValidationPackage>([vp_no_version; vp])).StructurallyEquals(vpc_no_specs)
let expected = true
Expect.equal actual expected ""
testCase "ReferenceEquals - specs and packages" <| fun _ ->
let actual = vpc.ReferenceEquals(vpc)
let expected = true
Expect.equal actual expected ""
testCase "ReferenceEquals - no specs" <| fun _ ->
let actual = vpc_no_specs.ReferenceEquals(vpc_no_specs)
let expected = true
Expect.equal actual expected ""
testCase "ReferenceEquals with other instance - specs and packages" <| fun _ ->
let actual = ValidationPackages.ValidationPackagesConfig(new ResizeArray<ValidationPackage>([vp; vp_no_version ]), "arc_specification").ReferenceEquals(vpc)
let expected = false
Expect.equal actual expected ""
testCase "ReferenceEquals with other instance - no specs" <| fun _ ->
let actual = ValidationPackages.ValidationPackagesConfig(new ResizeArray<ValidationPackage>([vp; vp_no_version ])).ReferenceEquals(vpc_no_specs)
let expected = false
Expect.equal actual expected ""
testCase "Equals - specs and packages" <| fun _ ->
let actual = ValidationPackages.ValidationPackagesConfig(new ResizeArray<ValidationPackage>([vp_no_version; vp]), "arc_specification").Equals(vpc)
let expected = true
Expect.equal actual expected ""
testCase "Equals - no specs" <| fun _ ->
let actual = ValidationPackages.ValidationPackagesConfig(new ResizeArray<ValidationPackage>([vp_no_version; vp])).Equals(vpc_no_specs)
let expected = true
Expect.equal actual expected ""
testCase "GetHashCode - specs and packages" <| fun _ ->
let actual = vpc.GetHashCode() // not sure here if different object should have same or different hash (equivalkent to StructurallyEquals)
let expected = vpc.GetHashCode()
Expect.equal actual expected ""
testCase "GetHashCode - no specs" <| fun _ ->
let actual = vpc_no_specs.GetHashCode() // not sure here if different object should have same or different hash (equivalkent to StructurallyEquals)
let expected = vpc_no_specs.GetHashCode()
Expect.equal actual expected ""

]

let main = testList "ValidationPackageConfig" [
tests_instance_methods
]

0 comments on commit 6273594

Please sign in to comment.