From 507ad7ace4eefa463bed3ecaeccdea3c21df91c1 Mon Sep 17 00:00:00 2001
From: "Thorsten (Gerbrunn)"
Date: Sat, 27 Jun 2020 12:19:14 +0200
Subject: [PATCH 1/3] Migrated Uncheked/DefaultOf01.fs test case
---
.../Core/Unchecked/UncheckedTests.fs | 47 +++++++++++++++++
tests/fsharp/FSharpSuite.Tests.fsproj | 1 +
.../Libraries/Core/Unchecked/DefaultOf01.fs | 51 -------------------
.../Source/Libraries/Core/Unchecked/env.lst | 1 -
4 files changed, 48 insertions(+), 52 deletions(-)
create mode 100644 tests/fsharp/Compiler/Libraries/Core/Unchecked/UncheckedTests.fs
delete mode 100644 tests/fsharpqa/Source/Libraries/Core/Unchecked/DefaultOf01.fs
diff --git a/tests/fsharp/Compiler/Libraries/Core/Unchecked/UncheckedTests.fs b/tests/fsharp/Compiler/Libraries/Core/Unchecked/UncheckedTests.fs
new file mode 100644
index 00000000000..781f6e5f2ff
--- /dev/null
+++ b/tests/fsharp/Compiler/Libraries/Core/Unchecked/UncheckedTests.fs
@@ -0,0 +1,47 @@
+// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
+
+namespace FSharp.Compiler.UnitTests
+
+open NUnit.Framework
+
+[]
+module ``Unchecked Tests`` =
+
+ type DUType =
+ | A
+ | B of int
+ | C of DUType * DUType
+
+ type RecordType = { A : int; B : string; C : DUType }
+
+ type ClassType = string
+
+ type InterfaceType =
+ abstract DoStuff : unit -> unit
+
+ type EnumType =
+ | A = 1
+ | B = 2
+ | C = 4
+
+ type StructType = struct
+ val m_ivalue : int
+ val m_svalue : string
+ member this.IValue = this.m_ivalue
+ member this.SValue = this.m_svalue
+ end
+
+ []
+ let `` Unchecked defaultof reference types``() =
+ Assert.areEqual Unchecked.defaultof null
+ Assert.areEqual (box Unchecked.defaultof) null
+ Assert.areEqual (box Unchecked.defaultof) null
+ Assert.areEqual (box Unchecked.defaultof) null
+
+ []
+ let ``Unchecked defaultof stack types``() =
+ Assert.areEqual Unchecked.defaultof 0
+ Assert.areEqual Unchecked.defaultof 0.0
+ Assert.areEqual Unchecked.defaultof (enum 0)
+ Assert.areEqual Unchecked.defaultof.IValue 0
+ Assert.areEqual Unchecked.defaultof.SValue null
\ No newline at end of file
diff --git a/tests/fsharp/FSharpSuite.Tests.fsproj b/tests/fsharp/FSharpSuite.Tests.fsproj
index b06425e88dc..095b2c959ec 100644
--- a/tests/fsharp/FSharpSuite.Tests.fsproj
+++ b/tests/fsharp/FSharpSuite.Tests.fsproj
@@ -75,6 +75,7 @@
+
diff --git a/tests/fsharpqa/Source/Libraries/Core/Unchecked/DefaultOf01.fs b/tests/fsharpqa/Source/Libraries/Core/Unchecked/DefaultOf01.fs
deleted file mode 100644
index 196448fc4bf..00000000000
--- a/tests/fsharpqa/Source/Libraries/Core/Unchecked/DefaultOf01.fs
+++ /dev/null
@@ -1,51 +0,0 @@
-// #Regression #Libraries #Unchecked
-#light
-
-// 1760, Implement Unchecked.defaultof<_> (delete LanguagePrimitives.DefaultValueUnchecked)
-
-// Test the 'defaultof<_>' function
-
-// Reference types ---------------------------
-type DUType =
- | A
- | B of int
- | C of DUType * DUType
-
-type RecordType = { A : int; B : string; C : DUType }
-
-type ClassType = string
-
-type InterfaceType =
- abstract DoStuff : unit -> unit
-
-// Stack types -------------------------------
-type EnumType =
- | A = 1
- | B = 2
- | C = 4
-
-type StructType = struct
- val m_ivalue : int
- val m_svalue : string
- member this.IValue = this.m_ivalue
- member this.SValue = this.m_svalue
-end
-
-// Test reference types
-if Unchecked.defaultof <> null then exit 1
-// This behaivor for DU, Records, and Interfaces is bey design (need to box to get null)
-if box(Unchecked.defaultof) <> null then exit 1
-if box(Unchecked.defaultof) <> null then exit 1
-if box(Unchecked.defaultof) <> null then exit 1
-
-let p = Unchecked.defaultof
-
-// Test stack types
-if Unchecked.defaultof <> 0 then exit 1
-if Unchecked.defaultof <> 0.0 then exit 1
-if Unchecked.defaultof <> enum 0 then exit 1
-
-if (Unchecked.defaultof).IValue <> 0 then exit 1
-if (Unchecked.defaultof).SValue <> null then exit 1
-
-exit 0
diff --git a/tests/fsharpqa/Source/Libraries/Core/Unchecked/env.lst b/tests/fsharpqa/Source/Libraries/Core/Unchecked/env.lst
index b5cefff3c2e..3639254bb62 100644
--- a/tests/fsharpqa/Source/Libraries/Core/Unchecked/env.lst
+++ b/tests/fsharpqa/Source/Libraries/Core/Unchecked/env.lst
@@ -1,2 +1 @@
- SOURCE=DefaultOf01.fs # DefaultOf01
SOURCE=DefaultOf02.fs # DefaultOf02
\ No newline at end of file
From aef4e1943eec7a36291cb34821357406be0cb011 Mon Sep 17 00:00:00 2001
From: "Thorsten (Gerbrunn)"
Date: Sat, 27 Jun 2020 12:22:48 +0200
Subject: [PATCH 2/3] Migraded Unchecked/DefaultOf02.fs test case
---
.../Libraries/Core/Unchecked/UncheckedTests.fs | 18 +++++++++++++++++-
.../Libraries/Core/Unchecked/DefaultOf02.fs | 17 -----------------
.../Source/Libraries/Core/Unchecked/env.lst | 1 -
3 files changed, 17 insertions(+), 19 deletions(-)
delete mode 100644 tests/fsharpqa/Source/Libraries/Core/Unchecked/DefaultOf02.fs
delete mode 100644 tests/fsharpqa/Source/Libraries/Core/Unchecked/env.lst
diff --git a/tests/fsharp/Compiler/Libraries/Core/Unchecked/UncheckedTests.fs b/tests/fsharp/Compiler/Libraries/Core/Unchecked/UncheckedTests.fs
index 781f6e5f2ff..14f3ce9dc3d 100644
--- a/tests/fsharp/Compiler/Libraries/Core/Unchecked/UncheckedTests.fs
+++ b/tests/fsharp/Compiler/Libraries/Core/Unchecked/UncheckedTests.fs
@@ -44,4 +44,20 @@ module ``Unchecked Tests`` =
Assert.areEqual Unchecked.defaultof 0.0
Assert.areEqual Unchecked.defaultof (enum 0)
Assert.areEqual Unchecked.defaultof.IValue 0
- Assert.areEqual Unchecked.defaultof.SValue null
\ No newline at end of file
+ Assert.areEqual Unchecked.defaultof.SValue null
+
+ type R = { x : int; y : string }
+ type U = | A of int | B of string
+ type S = struct val mutable x : int end
+ type C() = class end
+
+ []
+ let ``Unchecked defaultof and equality``() =
+ // FSharp1.0:5417 - Unchecked.defaultof<_> on records/unions can cause structural equality check to throw
+ // Check that Unchecked.defaultof<_> works correctly on various types, mostly structs/unions/records
+
+ Assert.areEqual Unchecked.defaultof Unchecked.defaultof
+ Assert.areEqual Unchecked.defaultof Unchecked.defaultof
+ Assert.areEqual Unchecked.defaultof Unchecked.defaultof
+ Assert.areEqual Unchecked.defaultof Unchecked.defaultof
+ Assert.areEqual Unchecked.defaultof Unchecked.defaultof
\ No newline at end of file
diff --git a/tests/fsharpqa/Source/Libraries/Core/Unchecked/DefaultOf02.fs b/tests/fsharpqa/Source/Libraries/Core/Unchecked/DefaultOf02.fs
deleted file mode 100644
index 00414dd8cc8..00000000000
--- a/tests/fsharpqa/Source/Libraries/Core/Unchecked/DefaultOf02.fs
+++ /dev/null
@@ -1,17 +0,0 @@
-// #Regression #Libraries #Unchecked
-#light
-
-// FSharp1.0:5417 - Unchecked.defaultof<_> on records/unions can cause structural equality check to throw
-// Check that Unchecked.defaultof<_> works correctly on various types, mostly structs/unions/records
-
-type R = { x : int; y : string }
-type U = | A of int | B of string
-type S = struct val mutable x : int end
-type C() = class end
-
-let shouldBeTrue =
- Unchecked.defaultof = Unchecked.defaultof // Records as null
- && Unchecked.defaultof = Unchecked.defaultof // Unions as null
- && Unchecked.defaultof = Unchecked.defaultof // Structs as null
- && Unchecked.defaultof = Unchecked.defaultof // Classes as null
- && Unchecked.defaultof = Unchecked.defaultof
diff --git a/tests/fsharpqa/Source/Libraries/Core/Unchecked/env.lst b/tests/fsharpqa/Source/Libraries/Core/Unchecked/env.lst
deleted file mode 100644
index 3639254bb62..00000000000
--- a/tests/fsharpqa/Source/Libraries/Core/Unchecked/env.lst
+++ /dev/null
@@ -1 +0,0 @@
- SOURCE=DefaultOf02.fs # DefaultOf02
\ No newline at end of file
From 3fef165db1e693ca991fdd80f61f0d329b58fce5 Mon Sep 17 00:00:00 2001
From: "Thorsten (Gerbrunn)"
Date: Sat, 27 Jun 2020 13:12:05 +0200
Subject: [PATCH 3/3] Fixed naming
---
.../Core/Unchecked/{UncheckedTests.fs => DefaultOfTests.fs} | 2 +-
tests/fsharp/FSharpSuite.Tests.fsproj | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
rename tests/fsharp/Compiler/Libraries/Core/Unchecked/{UncheckedTests.fs => DefaultOfTests.fs} (98%)
diff --git a/tests/fsharp/Compiler/Libraries/Core/Unchecked/UncheckedTests.fs b/tests/fsharp/Compiler/Libraries/Core/Unchecked/DefaultOfTests.fs
similarity index 98%
rename from tests/fsharp/Compiler/Libraries/Core/Unchecked/UncheckedTests.fs
rename to tests/fsharp/Compiler/Libraries/Core/Unchecked/DefaultOfTests.fs
index 14f3ce9dc3d..7c732e479ad 100644
--- a/tests/fsharp/Compiler/Libraries/Core/Unchecked/UncheckedTests.fs
+++ b/tests/fsharp/Compiler/Libraries/Core/Unchecked/DefaultOfTests.fs
@@ -5,7 +5,7 @@ namespace FSharp.Compiler.UnitTests
open NUnit.Framework
[]
-module ``Unchecked Tests`` =
+module ``DefaultOf Tests`` =
type DUType =
| A
diff --git a/tests/fsharp/FSharpSuite.Tests.fsproj b/tests/fsharp/FSharpSuite.Tests.fsproj
index 095b2c959ec..3153783ff71 100644
--- a/tests/fsharp/FSharpSuite.Tests.fsproj
+++ b/tests/fsharp/FSharpSuite.Tests.fsproj
@@ -75,7 +75,7 @@
-
+