From c04f18563b47c8151a7e11ed234fbb690139b24d Mon Sep 17 00:00:00 2001 From: "Thorsten (Gerbrunn)" Date: Thu, 4 Jun 2020 18:25:05 +0200 Subject: [PATCH 1/7] Migrated FormatSpec test cases to NUnit --- .../LanguagePrimitives/StringFormatTests.fs | 79 +++++++++++++++++++ tests/fsharp/FSharpSuite.Tests.fsproj | 1 + .../LanguagePrimitives/FormatSpec_d_01.fs | 32 -------- .../LanguagePrimitives/FormatSpec_i_01.fs | 32 -------- .../LanguagePrimitives/FormatSpec_u_01.fs | 32 -------- .../Libraries/Core/LanguagePrimitives/env.lst | 4 - 6 files changed, 80 insertions(+), 100 deletions(-) create mode 100644 tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/StringFormatTests.fs delete mode 100644 tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/FormatSpec_d_01.fs delete mode 100644 tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/FormatSpec_i_01.fs delete mode 100644 tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/FormatSpec_u_01.fs diff --git a/tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/StringFormatTests.fs b/tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/StringFormatTests.fs new file mode 100644 index 00000000000..665701f98fd --- /dev/null +++ b/tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/StringFormatTests.fs @@ -0,0 +1,79 @@ +// 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 ``String Format Tests`` = + + [] + let ``sprintf with %d format specifier``() = + // Regression test for FSHARP1.0:4120 + // format specifier %d does not work correctly with UInt64 values + + Assert.areEqual ((sprintf "%d" System.UInt64.MaxValue), "18446744073709551615") |> ignore + Assert.areEqual ((sprintf "%d" System.UInt64.MinValue), "0") |> ignore + Assert.areEqual ((sprintf "%d" System.UInt32.MaxValue), "4294967295") |> ignore + Assert.areEqual ((sprintf "%d" System.UInt32.MinValue), "0") |> ignore + Assert.areEqual ((sprintf "%d" System.UInt16.MaxValue), "65535") |> ignore + Assert.areEqual ((sprintf "%d" System.UInt16.MinValue), "0") |> ignore + Assert.areEqual ((sprintf "%d" System.Byte.MaxValue), "255") |> ignore + Assert.areEqual ((sprintf "%d" System.Byte.MinValue), "0") |> ignore + Assert.areEqual ((sprintf "%d" System.Int64.MaxValue), "9223372036854775807") |> ignore + Assert.areEqual ((sprintf "%d" System.Int64.MinValue), "-9223372036854775808") |> ignore + Assert.areEqual ((sprintf "%d" System.Int32.MaxValue), "2147483647") |> ignore + Assert.areEqual ((sprintf "%d" System.Int32.MinValue), "-2147483648") |> ignore + Assert.areEqual ((sprintf "%d" System.Int16.MaxValue), "32767") |> ignore + Assert.areEqual ((sprintf "%d" System.Int16.MinValue), "-32768") |> ignore + Assert.areEqual ((sprintf "%d" System.SByte.MaxValue), "127") |> ignore + Assert.areEqual ((sprintf "%d" System.SByte.MinValue), "-128") |> ignore + Assert.areEqual ((sprintf "%d" 1un), "1") |> ignore + Assert.areEqual ((sprintf "%d" -1n), "-1") |> ignore + + [] + let ``sprintf with %i format specifier``() = + // Regression test for FSHARP1.0:4120 + // format specifier %i does not work correctly with UInt64 values + + Assert.areEqual ((sprintf "%i" System.UInt64.MaxValue), "18446744073709551615") |> ignore + Assert.areEqual ((sprintf "%i" System.UInt64.MinValue), "0") |> ignore + Assert.areEqual ((sprintf "%i" System.UInt32.MaxValue), "4294967295") |> ignore + Assert.areEqual ((sprintf "%i" System.UInt32.MinValue), "0") |> ignore + Assert.areEqual ((sprintf "%i" System.UInt16.MaxValue), "65535") |> ignore + Assert.areEqual ((sprintf "%i" System.UInt16.MinValue), "0") |> ignore + Assert.areEqual ((sprintf "%i" System.Byte.MaxValue), "255") |> ignore + Assert.areEqual ((sprintf "%i" System.Byte.MinValue), "0") |> ignore + Assert.areEqual ((sprintf "%i" System.Int64.MaxValue), "9223372036854775807") |> ignore + Assert.areEqual ((sprintf "%i" System.Int64.MinValue), "-9223372036854775808") |> ignore + Assert.areEqual ((sprintf "%i" System.Int32.MaxValue), "2147483647") |> ignore + Assert.areEqual ((sprintf "%i" System.Int32.MinValue), "-2147483648") |> ignore + Assert.areEqual ((sprintf "%i" System.Int16.MaxValue), "32767") |> ignore + Assert.areEqual ((sprintf "%i" System.Int16.MinValue), "-32768") |> ignore + Assert.areEqual ((sprintf "%i" System.SByte.MaxValue), "127") |> ignore + Assert.areEqual ((sprintf "%i" System.SByte.MinValue), "-128") |> ignore + Assert.areEqual ((sprintf "%i" 1un), "1") |> ignore + Assert.areEqual ((sprintf "%i" -1n), "-1") |> ignore + + [] + let ``sprintf with %u format specifier``() = + // Regression test for FSHARP1.0:4120 + // format specifier %u does not work correctly with UInt64 values + + Assert.areEqual ((sprintf "%u" System.UInt64.MaxValue), "18446744073709551615") |> ignore + Assert.areEqual ((sprintf "%u" System.UInt64.MinValue), "0") |> ignore + Assert.areEqual ((sprintf "%u" System.UInt32.MaxValue), "4294967295") |> ignore + Assert.areEqual ((sprintf "%u" System.UInt32.MinValue), "0") |> ignore + Assert.areEqual ((sprintf "%u" System.UInt16.MaxValue), "65535") |> ignore + Assert.areEqual ((sprintf "%u" System.UInt16.MinValue), "0") |> ignore + Assert.areEqual ((sprintf "%u" System.Byte.MaxValue), "255") |> ignore + Assert.areEqual ((sprintf "%u" System.Byte.MinValue), "0") |> ignore + Assert.areEqual ((sprintf "%u" System.Int64.MaxValue), "9223372036854775807") |> ignore + Assert.areEqual ((sprintf "%u" System.Int64.MinValue), "9223372036854775808") |> ignore + Assert.areEqual ((sprintf "%u" System.Int32.MaxValue), "2147483647") |> ignore + Assert.areEqual ((sprintf "%u" System.Int32.MinValue), "2147483648") |> ignore + Assert.areEqual ((sprintf "%u" System.Int16.MaxValue), "32767") |> ignore + Assert.areEqual ((sprintf "%u" System.Int16.MinValue), "32768") |> ignore + Assert.areEqual ((sprintf "%u" System.SByte.MaxValue), "127") |> ignore + Assert.areEqual ((sprintf "%u" System.SByte.MinValue), "128") |> ignore + Assert.areEqual ((sprintf "%u" 1un), "1") |> ignore + Assert.areEqual ((sprintf "%u" -1n), if System.IntPtr.Size = 4 then "4294967295" else "18446744073709551615") |> ignore diff --git a/tests/fsharp/FSharpSuite.Tests.fsproj b/tests/fsharp/FSharpSuite.Tests.fsproj index 0c84007859f..c9bb3841a10 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/LanguagePrimitives/FormatSpec_d_01.fs b/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/FormatSpec_d_01.fs deleted file mode 100644 index 17ae0d72847..00000000000 --- a/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/FormatSpec_d_01.fs +++ /dev/null @@ -1,32 +0,0 @@ -// #Regression #Libraries #LanguagePrimitives -// Regression test for FSHARP1.0:4120 -// format specifier %d does not work correctly with UInt64 values - -// -// This test covers the usage of %d -// All kinds of valid input are provided -// - -let test = [ ((sprintf "%d" System.UInt64.MaxValue), "18446744073709551615"); - ((sprintf "%d" System.UInt64.MinValue), "0"); - ((sprintf "%d" System.UInt32.MaxValue), "4294967295"); - ((sprintf "%d" System.UInt32.MinValue), "0"); - ((sprintf "%d" System.UInt16.MaxValue), "65535"); - ((sprintf "%d" System.UInt16.MinValue), "0"); - ((sprintf "%d" System.Byte.MaxValue), "255"); - ((sprintf "%d" System.Byte.MinValue), "0"); - ((sprintf "%d" System.Int64.MaxValue), "9223372036854775807"); - ((sprintf "%d" System.Int64.MinValue), "-9223372036854775808"); - ((sprintf "%d" System.Int32.MaxValue), "2147483647"); - ((sprintf "%d" System.Int32.MinValue), "-2147483648"); - ((sprintf "%d" System.Int16.MaxValue), "32767"); - ((sprintf "%d" System.Int16.MinValue), "-32768"); - ((sprintf "%d" System.SByte.MaxValue), "127"); - ((sprintf "%d" System.SByte.MinValue), "-128"); - ((sprintf "%d" 1un), "1"); - ((sprintf "%d" -1n), "-1"); - ] - -let res = List.forall (fun x -> (fst x) = (snd x)) test - -(if res then 0 else 1) |> exit diff --git a/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/FormatSpec_i_01.fs b/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/FormatSpec_i_01.fs deleted file mode 100644 index e5fa47c4143..00000000000 --- a/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/FormatSpec_i_01.fs +++ /dev/null @@ -1,32 +0,0 @@ -// #Regression #Libraries #LanguagePrimitives -// Regression test for FSHARP1.0:4120 -// format specifier %i does not work correctly with UInt64 values - -// -// This test covers the usage of %i -// All kinds of valid input are provided -// - -let test = [ ((sprintf "%i" System.UInt64.MaxValue), "18446744073709551615"); - ((sprintf "%i" System.UInt64.MinValue), "0"); - ((sprintf "%i" System.UInt32.MaxValue), "4294967295"); - ((sprintf "%i" System.UInt32.MinValue), "0"); - ((sprintf "%i" System.UInt16.MaxValue), "65535"); - ((sprintf "%i" System.UInt16.MinValue), "0"); - ((sprintf "%i" System.Byte.MaxValue), "255"); - ((sprintf "%i" System.Byte.MinValue), "0"); - ((sprintf "%i" System.Int64.MaxValue), "9223372036854775807"); - ((sprintf "%i" System.Int64.MinValue), "-9223372036854775808"); - ((sprintf "%i" System.Int32.MaxValue), "2147483647"); - ((sprintf "%i" System.Int32.MinValue), "-2147483648"); - ((sprintf "%i" System.Int16.MaxValue), "32767"); - ((sprintf "%i" System.Int16.MinValue), "-32768"); - ((sprintf "%i" System.SByte.MaxValue), "127"); - ((sprintf "%i" System.SByte.MinValue), "-128"); - ((sprintf "%i" 1un), "1"); - ((sprintf "%i" -1n), "-1"); - ] - -let res = List.forall (fun x -> (fst x) = (snd x)) test - -(if res then 0 else 1) |> exit diff --git a/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/FormatSpec_u_01.fs b/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/FormatSpec_u_01.fs deleted file mode 100644 index 240b9ef9a08..00000000000 --- a/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/FormatSpec_u_01.fs +++ /dev/null @@ -1,32 +0,0 @@ -// #Regression #Libraries #LanguagePrimitives -// Regression test for FSHARP1.0:4120 -// format specifier %u does not work correctly with UInt64 values - -// -// This test covers the usage of %u -// All kinds of valid input are provided -// - -let test = [ ((sprintf "%u" System.UInt64.MaxValue), "18446744073709551615"); - ((sprintf "%u" System.UInt64.MinValue), "0"); - ((sprintf "%u" System.UInt32.MaxValue), "4294967295"); - ((sprintf "%u" System.UInt32.MinValue), "0"); - ((sprintf "%u" System.UInt16.MaxValue), "65535"); - ((sprintf "%u" System.UInt16.MinValue), "0"); - ((sprintf "%u" System.Byte.MaxValue), "255"); - ((sprintf "%u" System.Byte.MinValue), "0"); - ((sprintf "%u" System.Int64.MaxValue), "9223372036854775807"); - ((sprintf "%u" System.Int64.MinValue), "9223372036854775808"); - ((sprintf "%u" System.Int32.MaxValue), "2147483647"); - ((sprintf "%u" System.Int32.MinValue), "2147483648"); - ((sprintf "%u" System.Int16.MaxValue), "32767"); - ((sprintf "%u" System.Int16.MinValue), "32768"); - ((sprintf "%u" System.SByte.MaxValue), "127"); - ((sprintf "%u" System.SByte.MinValue), "128"); - ((sprintf "%u" 1un), "1"); - ((sprintf "%u" -1n), if System.IntPtr.Size = 4 then "4294967295" else "18446744073709551615"); - ] - -let res = List.forall (fun x -> (fst x) = (snd x)) test - -(if res then 0 else 1) |> exit diff --git a/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/env.lst b/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/env.lst index 16d6bcc4799..3275cb25182 100644 --- a/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/env.lst +++ b/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/env.lst @@ -3,7 +3,3 @@ NoMT SOURCE=anytostring01.fsx FSIMODE=PIPE COMPILE_ONLY=1 # anytostring01.fsx SOURCE=compare01.fs # compare01.fs NoMT SOURCE=compare01.fsx FSIMODE=PIPE COMPILE_ONLY=1 # compare01.fsx - - SOURCE=FormatSpec_d_01.fs # FormatSpec_d_01.fs - SOURCE=FormatSpec_i_01.fs # FormatSpec_i_01.fs - SOURCE=FormatSpec_u_01.fs # FormatSpec_u_01.fs From 4634e6d6b0451d86218fe13a8cdfe131a30d8b9e Mon Sep 17 00:00:00 2001 From: "Thorsten (Gerbrunn)" Date: Thu, 4 Jun 2020 18:45:34 +0200 Subject: [PATCH 2/7] Migrated string constructor test cases to NUnit --- .../LanguagePrimitives/StringFormatTests.fs | 167 ++++++++++++------ 1 file changed, 113 insertions(+), 54 deletions(-) diff --git a/tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/StringFormatTests.fs b/tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/StringFormatTests.fs index 665701f98fd..fd080d02d95 100644 --- a/tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/StringFormatTests.fs +++ b/tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/StringFormatTests.fs @@ -11,69 +11,128 @@ module ``String Format Tests`` = // Regression test for FSHARP1.0:4120 // format specifier %d does not work correctly with UInt64 values - Assert.areEqual ((sprintf "%d" System.UInt64.MaxValue), "18446744073709551615") |> ignore - Assert.areEqual ((sprintf "%d" System.UInt64.MinValue), "0") |> ignore - Assert.areEqual ((sprintf "%d" System.UInt32.MaxValue), "4294967295") |> ignore - Assert.areEqual ((sprintf "%d" System.UInt32.MinValue), "0") |> ignore - Assert.areEqual ((sprintf "%d" System.UInt16.MaxValue), "65535") |> ignore - Assert.areEqual ((sprintf "%d" System.UInt16.MinValue), "0") |> ignore - Assert.areEqual ((sprintf "%d" System.Byte.MaxValue), "255") |> ignore - Assert.areEqual ((sprintf "%d" System.Byte.MinValue), "0") |> ignore - Assert.areEqual ((sprintf "%d" System.Int64.MaxValue), "9223372036854775807") |> ignore - Assert.areEqual ((sprintf "%d" System.Int64.MinValue), "-9223372036854775808") |> ignore - Assert.areEqual ((sprintf "%d" System.Int32.MaxValue), "2147483647") |> ignore - Assert.areEqual ((sprintf "%d" System.Int32.MinValue), "-2147483648") |> ignore - Assert.areEqual ((sprintf "%d" System.Int16.MaxValue), "32767") |> ignore - Assert.areEqual ((sprintf "%d" System.Int16.MinValue), "-32768") |> ignore - Assert.areEqual ((sprintf "%d" System.SByte.MaxValue), "127") |> ignore - Assert.areEqual ((sprintf "%d" System.SByte.MinValue), "-128") |> ignore - Assert.areEqual ((sprintf "%d" 1un), "1") |> ignore - Assert.areEqual ((sprintf "%d" -1n), "-1") |> ignore + Assert.areEqual (sprintf "%d" System.UInt64.MaxValue) "18446744073709551615" + Assert.areEqual (sprintf "%d" System.UInt64.MinValue) "0" + Assert.areEqual (sprintf "%d" System.UInt32.MaxValue) "4294967295" + Assert.areEqual (sprintf "%d" System.UInt32.MinValue) "0" + Assert.areEqual (sprintf "%d" System.UInt16.MaxValue) "65535" + Assert.areEqual (sprintf "%d" System.UInt16.MinValue) "0" + Assert.areEqual (sprintf "%d" System.Byte.MaxValue) "255" + Assert.areEqual (sprintf "%d" System.Byte.MinValue) "0" + Assert.areEqual (sprintf "%d" System.Int64.MaxValue) "9223372036854775807" + Assert.areEqual (sprintf "%d" System.Int64.MinValue) "-9223372036854775808" + Assert.areEqual (sprintf "%d" System.Int32.MaxValue) "2147483647" + Assert.areEqual (sprintf "%d" System.Int32.MinValue) "-2147483648" + Assert.areEqual (sprintf "%d" System.Int16.MaxValue) "32767" + Assert.areEqual (sprintf "%d" System.Int16.MinValue) "-32768" + Assert.areEqual (sprintf "%d" System.SByte.MaxValue) "127" + Assert.areEqual (sprintf "%d" System.SByte.MinValue) "-128" + Assert.areEqual (sprintf "%d" 1un) "1" + Assert.areEqual (sprintf "%d" -1n) "-1" [] let ``sprintf with %i format specifier``() = // Regression test for FSHARP1.0:4120 // format specifier %i does not work correctly with UInt64 values - Assert.areEqual ((sprintf "%i" System.UInt64.MaxValue), "18446744073709551615") |> ignore - Assert.areEqual ((sprintf "%i" System.UInt64.MinValue), "0") |> ignore - Assert.areEqual ((sprintf "%i" System.UInt32.MaxValue), "4294967295") |> ignore - Assert.areEqual ((sprintf "%i" System.UInt32.MinValue), "0") |> ignore - Assert.areEqual ((sprintf "%i" System.UInt16.MaxValue), "65535") |> ignore - Assert.areEqual ((sprintf "%i" System.UInt16.MinValue), "0") |> ignore - Assert.areEqual ((sprintf "%i" System.Byte.MaxValue), "255") |> ignore - Assert.areEqual ((sprintf "%i" System.Byte.MinValue), "0") |> ignore - Assert.areEqual ((sprintf "%i" System.Int64.MaxValue), "9223372036854775807") |> ignore - Assert.areEqual ((sprintf "%i" System.Int64.MinValue), "-9223372036854775808") |> ignore - Assert.areEqual ((sprintf "%i" System.Int32.MaxValue), "2147483647") |> ignore - Assert.areEqual ((sprintf "%i" System.Int32.MinValue), "-2147483648") |> ignore - Assert.areEqual ((sprintf "%i" System.Int16.MaxValue), "32767") |> ignore - Assert.areEqual ((sprintf "%i" System.Int16.MinValue), "-32768") |> ignore - Assert.areEqual ((sprintf "%i" System.SByte.MaxValue), "127") |> ignore - Assert.areEqual ((sprintf "%i" System.SByte.MinValue), "-128") |> ignore - Assert.areEqual ((sprintf "%i" 1un), "1") |> ignore - Assert.areEqual ((sprintf "%i" -1n), "-1") |> ignore + Assert.areEqual (sprintf "%i" System.UInt64.MaxValue) "18446744073709551615" + Assert.areEqual (sprintf "%i" System.UInt64.MinValue) "0" + Assert.areEqual (sprintf "%i" System.UInt32.MaxValue) "4294967295" + Assert.areEqual (sprintf "%i" System.UInt32.MinValue) "0" + Assert.areEqual (sprintf "%i" System.UInt16.MaxValue) "65535" + Assert.areEqual (sprintf "%i" System.UInt16.MinValue) "0" + Assert.areEqual (sprintf "%i" System.Byte.MaxValue) "255" + Assert.areEqual (sprintf "%i" System.Byte.MinValue) "0" + Assert.areEqual (sprintf "%i" System.Int64.MaxValue) "9223372036854775807" + Assert.areEqual (sprintf "%i" System.Int64.MinValue) "-9223372036854775808" + Assert.areEqual (sprintf "%i" System.Int32.MaxValue) "2147483647" + Assert.areEqual (sprintf "%i" System.Int32.MinValue) "-2147483648" + Assert.areEqual (sprintf "%i" System.Int16.MaxValue) "32767" + Assert.areEqual (sprintf "%i" System.Int16.MinValue) "-32768" + Assert.areEqual (sprintf "%i" System.SByte.MaxValue) "127" + Assert.areEqual (sprintf "%i" System.SByte.MinValue) "-128" + Assert.areEqual (sprintf "%i" 1un) "1" + Assert.areEqual (sprintf "%i" -1n) "-1" [] let ``sprintf with %u format specifier``() = // Regression test for FSHARP1.0:4120 // format specifier %u does not work correctly with UInt64 values - Assert.areEqual ((sprintf "%u" System.UInt64.MaxValue), "18446744073709551615") |> ignore - Assert.areEqual ((sprintf "%u" System.UInt64.MinValue), "0") |> ignore - Assert.areEqual ((sprintf "%u" System.UInt32.MaxValue), "4294967295") |> ignore - Assert.areEqual ((sprintf "%u" System.UInt32.MinValue), "0") |> ignore - Assert.areEqual ((sprintf "%u" System.UInt16.MaxValue), "65535") |> ignore - Assert.areEqual ((sprintf "%u" System.UInt16.MinValue), "0") |> ignore - Assert.areEqual ((sprintf "%u" System.Byte.MaxValue), "255") |> ignore - Assert.areEqual ((sprintf "%u" System.Byte.MinValue), "0") |> ignore - Assert.areEqual ((sprintf "%u" System.Int64.MaxValue), "9223372036854775807") |> ignore - Assert.areEqual ((sprintf "%u" System.Int64.MinValue), "9223372036854775808") |> ignore - Assert.areEqual ((sprintf "%u" System.Int32.MaxValue), "2147483647") |> ignore - Assert.areEqual ((sprintf "%u" System.Int32.MinValue), "2147483648") |> ignore - Assert.areEqual ((sprintf "%u" System.Int16.MaxValue), "32767") |> ignore - Assert.areEqual ((sprintf "%u" System.Int16.MinValue), "32768") |> ignore - Assert.areEqual ((sprintf "%u" System.SByte.MaxValue), "127") |> ignore - Assert.areEqual ((sprintf "%u" System.SByte.MinValue), "128") |> ignore - Assert.areEqual ((sprintf "%u" 1un), "1") |> ignore - Assert.areEqual ((sprintf "%u" -1n), if System.IntPtr.Size = 4 then "4294967295" else "18446744073709551615") |> ignore + Assert.areEqual (sprintf "%u" System.UInt64.MaxValue) "18446744073709551615" + Assert.areEqual (sprintf "%u" System.UInt64.MinValue) "0" + Assert.areEqual (sprintf "%u" System.UInt32.MaxValue) "4294967295" + Assert.areEqual (sprintf "%u" System.UInt32.MinValue) "0" + Assert.areEqual (sprintf "%u" System.UInt16.MaxValue) "65535" + Assert.areEqual (sprintf "%u" System.UInt16.MinValue) "0" + Assert.areEqual (sprintf "%u" System.Byte.MaxValue) "255" + Assert.areEqual (sprintf "%u" System.Byte.MinValue) "0" + Assert.areEqual (sprintf "%u" System.Int64.MaxValue) "9223372036854775807" + Assert.areEqual (sprintf "%u" System.Int64.MinValue) "9223372036854775808" + Assert.areEqual (sprintf "%u" System.Int32.MaxValue) "2147483647" + Assert.areEqual (sprintf "%u" System.Int32.MinValue) "2147483648" + Assert.areEqual (sprintf "%u" System.Int16.MaxValue) "32767" + Assert.areEqual (sprintf "%u" System.Int16.MinValue) "32768" + Assert.areEqual (sprintf "%u" System.SByte.MaxValue) "127" + Assert.areEqual (sprintf "%u" System.SByte.MinValue) "128" + Assert.areEqual (sprintf "%u" 1un) "1" + Assert.areEqual (sprintf "%u" -1n) (if System.IntPtr.Size = 4 then "4294967295" else "18446744073709551615") + + [] + let ``string constructor``() = + // Regression test for FSHARP1.0:5894 + + Assert.areEqual (string 1.0f) "1" + Assert.areEqual (string 1.00001f) "1.00001" + Assert.areEqual (string -1.00001f) "-1.00001" + Assert.areEqual (string 1.0) "1" + Assert.areEqual (string 1.00001) "1.00001" + Assert.areEqual (string -1.00001) "-1.00001" + Assert.areEqual (string System.SByte.MaxValue) "127" + Assert.areEqual (string System.SByte.MinValue) "-128" + Assert.areEqual (string 0y) "0" + Assert.areEqual (string -1y) "-1" + Assert.areEqual (string 1y) "1" + Assert.areEqual (string System.Byte.MaxValue) "255" + Assert.areEqual (string System.Byte.MinValue) "0" + Assert.areEqual (string 0uy) "0" + Assert.areEqual (string 1uy) "1" + Assert.areEqual (string System.Int16.MaxValue) "32767" + Assert.areEqual (string System.Int16.MinValue) "-32768" + Assert.areEqual (string 0s) "0" + Assert.areEqual (string -10s) "-10" + Assert.areEqual (string 10s) "10" + Assert.areEqual (string System.UInt16.MaxValue) "65535" + Assert.areEqual (string System.UInt16.MinValue) "0" + Assert.areEqual (string 0us) "0" + Assert.areEqual (string 110us) "110" + Assert.areEqual (string System.Int32.MaxValue) "2147483647" + Assert.areEqual (string System.Int32.MinValue) "-2147483648" + Assert.areEqual (string 0) "0" + Assert.areEqual (string -10) "-10" + Assert.areEqual (string 10) "10" + Assert.areEqual (string System.UInt32.MaxValue) "4294967295" + Assert.areEqual (string System.UInt32.MinValue) "0" + Assert.areEqual (string 0u) "0" + Assert.areEqual (string 10u) "10" + Assert.areEqual (string System.Int64.MaxValue) "9223372036854775807" + Assert.areEqual (string System.Int64.MinValue) "-9223372036854775808" + Assert.areEqual (string 0L) "0" + Assert.areEqual (string -10L) "-10" + Assert.areEqual (string 10L) "10" + Assert.areEqual (string System.UInt64.MaxValue) "18446744073709551615" + Assert.areEqual (string System.UInt64.MinValue) "0" + Assert.areEqual (string 0UL) "0" + Assert.areEqual (string 10UL) "10" + Assert.areEqual (string System.Decimal.MaxValue) "79228162514264337593543950335" + Assert.areEqual (string System.Decimal.MinValue) "-79228162514264337593543950335" + Assert.areEqual (string System.Decimal.Zero) "0" + Assert.areEqual (string 12345678M) "12345678" + Assert.areEqual (string -12345678M) "-12345678" + Assert.areEqual (string -infinity) "-Infinity" + Assert.areEqual (string infinity) "Infinity" + Assert.areEqual (string nan) "NaN" + Assert.areEqual (string -infinityf) "-Infinity" + Assert.areEqual (string infinityf) "Infinity" + Assert.areEqual (string nanf) "NaN" + Assert.areEqual (string (new System.Guid("210f4d6b-cb42-4b09-baa1-f1aa8e59d4b0"))) "210f4d6b-cb42-4b09-baa1-f1aa8e59d4b0" From cba1bd7f5f49cdee102d844cfa0d660fe3a9d107 Mon Sep 17 00:00:00 2001 From: "Thorsten (Gerbrunn)" Date: Thu, 4 Jun 2020 18:47:57 +0200 Subject: [PATCH 3/7] Unlisted migrated test cases from env.lst --- .../Core/LanguagePrimitives/anytostring01.fs | 87 ------------------- .../Libraries/Core/LanguagePrimitives/env.lst | 2 +- 2 files changed, 1 insertion(+), 88 deletions(-) delete mode 100644 tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/anytostring01.fs diff --git a/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/anytostring01.fs b/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/anytostring01.fs deleted file mode 100644 index 59ff2ee3409..00000000000 --- a/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/anytostring01.fs +++ /dev/null @@ -1,87 +0,0 @@ -// #Regression #Libraries #LanguagePrimitives #ReqNOMT -// Regression test for FSHARP1.0:5894 -// - -let v = [ - (string 1.0f); - (string 1.00001f); - (string -1.00001f); - - (string 1.0); - (string 1.00001); - (string -1.00001); - - (string System.SByte.MaxValue); - (string System.SByte.MinValue); - (string 0y); - (string -1y); - (string 1y); - - (string System.Byte.MaxValue); - (string System.Byte.MinValue); - (string 0uy); - (string 1uy); - - (string System.Int16.MaxValue); - (string System.Int16.MinValue); - (string 0s); - (string -10s); - (string 10s); - - (string System.UInt16.MaxValue); - (string System.UInt16.MinValue); - (string 0us); - (string 110us); - - (string System.Int32.MaxValue); - (string System.Int32.MinValue); - (string 0); - (string -10); - (string 10); - - (string System.UInt32.MaxValue); - (string System.UInt32.MinValue); - (string 0u); - (string 10u); - - (string System.Int64.MaxValue); - (string System.Int64.MinValue); - (string 0L); - (string -10L); - (string 10L); - - (string System.UInt64.MaxValue); - (string System.UInt64.MinValue); - (string 0UL); - (string 10UL); - - (string System.Decimal.MaxValue); - (string System.Decimal.MinValue); - (string System.Decimal.Zero); - (string 12345678M); - (string -12345678M); - - (string -infinity); - (string infinity); - (string nan); - - (string -infinityf); - (string infinityf); - (string nanf); - - (string (new System.Guid("210f4d6b-cb42-4b09-baa1-f1aa8e59d4b0"))) - - ] - -let expected = ["1"; "1.00001"; "-1.00001"; "1"; "1.00001"; "-1.00001"; "127"; "-128"; "0"; - "-1"; "1"; "255"; "0"; "0"; "1"; "32767"; "-32768"; "0"; "-10"; "10"; - "65535"; "0"; "0"; "110"; "2147483647"; "-2147483648"; "0"; "-10"; "10"; - "4294967295"; "0"; "0"; "10"; "9223372036854775807"; "-9223372036854775808"; - "0"; "-10"; "10"; "18446744073709551615"; "0"; "0"; "10"; - "79228162514264337593543950335"; "-79228162514264337593543950335"; "0"; - "12345678"; "-12345678"; "-Infinity"; "Infinity"; "NaN"; "-Infinity"; - "Infinity"; "NaN"; - "210f4d6b-cb42-4b09-baa1-f1aa8e59d4b0"] - -exit <| if v = expected then 0 else 1 - diff --git a/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/env.lst b/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/env.lst index 3275cb25182..0baa06294fe 100644 --- a/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/env.lst +++ b/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/env.lst @@ -1,4 +1,4 @@ - SOURCE=anytostring01.fs # anytostring01.fs + NoMT SOURCE=anytostring01.fsx FSIMODE=PIPE COMPILE_ONLY=1 # anytostring01.fsx SOURCE=compare01.fs # compare01.fs From c9d16fea16249a6871f28c74d3c470856ab68c5f Mon Sep 17 00:00:00 2001 From: "Thorsten (Gerbrunn)" Date: Thu, 4 Jun 2020 18:56:12 +0200 Subject: [PATCH 4/7] Migrated comparison test cases to NUnit --- .../Core/LanguagePrimitives/ComparisonTests.fs | 18 ++++++++++++++++++ tests/fsharp/FSharpSuite.Tests.fsproj | 1 + .../Core/LanguagePrimitives/compare01.fs | 11 ----------- .../Libraries/Core/LanguagePrimitives/env.lst | 3 --- 4 files changed, 19 insertions(+), 14 deletions(-) create mode 100644 tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/ComparisonTests.fs delete mode 100644 tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/compare01.fs diff --git a/tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/ComparisonTests.fs b/tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/ComparisonTests.fs new file mode 100644 index 00000000000..de00fbcb974 --- /dev/null +++ b/tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/ComparisonTests.fs @@ -0,0 +1,18 @@ +// 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 ``Comparison Tests`` = + + type 'a www = W of 'a + + [] + let ``Comparisons with wrapped NaN``() = + // Regression test for FSHARP1.0:5640 + // This is a sanity test: more coverage in FSHARP suite... + + Assert.IsFalse (W System.Double.NaN = W System.Double.NaN) + Assert.IsTrue ((W System.Double.NaN).Equals(W System.Double.NaN)) + Assert.areEqual (compare (W System.Double.NaN) (W System.Double.NaN)) 0 \ No newline at end of file diff --git a/tests/fsharp/FSharpSuite.Tests.fsproj b/tests/fsharp/FSharpSuite.Tests.fsproj index c9bb3841a10..847e06ab32b 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/LanguagePrimitives/compare01.fs b/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/compare01.fs deleted file mode 100644 index 4ff6d56b57c..00000000000 --- a/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/compare01.fs +++ /dev/null @@ -1,11 +0,0 @@ -// #Regression #Libraries #LanguagePrimitives #ReqNOMT -// Regression test for FSHARP1.0:5640 -// This is a sanity test: more coverage in FSHARP suite... -// - -type 'a www = W of 'a -let p = W System.Double.NaN = W System.Double.NaN // false (PER semantic) -let q = (W System.Double.NaN).Equals(W System.Double.NaN) // true (ER semantic) -let z = compare (W System.Double.NaN) (W System.Double.NaN) // 0 - -(if (not p) && q && (z=0) then 0 else 1) |> exit diff --git a/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/env.lst b/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/env.lst index 0baa06294fe..7e5badf8903 100644 --- a/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/env.lst +++ b/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/env.lst @@ -1,5 +1,2 @@ - NoMT SOURCE=anytostring01.fsx FSIMODE=PIPE COMPILE_ONLY=1 # anytostring01.fsx - - SOURCE=compare01.fs # compare01.fs NoMT SOURCE=compare01.fsx FSIMODE=PIPE COMPILE_ONLY=1 # compare01.fsx From f18242f81bbbbb11e371c5543ad23e23cd4e250c Mon Sep 17 00:00:00 2001 From: "Thorsten (Gerbrunn)" Date: Thu, 4 Jun 2020 19:08:59 +0200 Subject: [PATCH 5/7] Migrated cast to units test cases to NUnit --- .../LanguagePrimitives/CastToUnitsTests.fs | 29 +++++++++++++++++++ tests/fsharp/FSharpSuite.Tests.fsproj | 1 + .../Core/LanguagePrimitives/CastToUnits01.fs | 20 ------------- 3 files changed, 30 insertions(+), 20 deletions(-) create mode 100644 tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/CastToUnitsTests.fs delete mode 100644 tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/CastToUnits01.fs diff --git a/tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/CastToUnitsTests.fs b/tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/CastToUnitsTests.fs new file mode 100644 index 00000000000..d53f23d6ab0 --- /dev/null +++ b/tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/CastToUnitsTests.fs @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. + +namespace FSharp.Compiler.UnitTests + +open NUnit.Framework +open FSharp.TestHelpers + +[] +module ``Cast to Units Tests`` = + + [] + let ``Casting to Measures should compile``() = + CompilerAssert.Pass + """ +module M + +open Microsoft.FSharp.Core.LanguagePrimitives + +[] +type M + +let r1 = SByteWithMeasure 1y + 2y +let r2 = Int16WithMeasure 2s - 2s +let r3 = Int32WithMeasure 3 * 3 +let r4 = Int64WithMeasure 5L / 5L +let r5 = FloatWithMeasure 11.11 + 1.1 +let r6 = Float32WithMeasure 22.22f - 11.11f +let r7 = DecimalWithMeasure 33.33M * 44.44M + """ \ No newline at end of file diff --git a/tests/fsharp/FSharpSuite.Tests.fsproj b/tests/fsharp/FSharpSuite.Tests.fsproj index 847e06ab32b..46cab3c2a27 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/LanguagePrimitives/CastToUnits01.fs b/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/CastToUnits01.fs deleted file mode 100644 index 571c788c397..00000000000 --- a/tests/fsharpqa/Source/Libraries/Core/LanguagePrimitives/CastToUnits01.fs +++ /dev/null @@ -1,20 +0,0 @@ -// #Regression #Libraries #LanguagePrimitives -// Regression for FSHARP1.0:5794 -// New functions to cast dimensionless value to unitful value - -module M - -open Microsoft.FSharp.Core.LanguagePrimitives - -[] -type M - -let r1 = SByteWithMeasure 1y + 2y -let r2 = Int16WithMeasure 2s - 2s -let r3 = Int32WithMeasure 3 * 3 -let r4 = Int64WithMeasure 5L / 5L -let r5 = FloatWithMeasure 11.11 + 1.1 -let r6 = Float32WithMeasure 22.22f - 11.11f -let r7 = DecimalWithMeasure 33.33M * 44.44M - -exit 0 From 5fa2569be8301ae0dd09375347aa845671a43fa7 Mon Sep 17 00:00:00 2001 From: "Thorsten (Gerbrunn)" Date: Thu, 4 Jun 2020 19:09:29 +0200 Subject: [PATCH 6/7] Cleanup --- .../Libraries/Core/LanguagePrimitives/ComparisonTests.fs | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/ComparisonTests.fs b/tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/ComparisonTests.fs index de00fbcb974..c4547842f40 100644 --- a/tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/ComparisonTests.fs +++ b/tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/ComparisonTests.fs @@ -4,6 +4,7 @@ namespace FSharp.Compiler.UnitTests open NUnit.Framework +[] module ``Comparison Tests`` = type 'a www = W of 'a From f4c1a10fc88735c613ee5a709a0c02206d4f0be9 Mon Sep 17 00:00:00 2001 From: "Thorsten (Gerbrunn)" Date: Thu, 4 Jun 2020 20:59:55 +0200 Subject: [PATCH 7/7] Cleanup --- .../Libraries/Core/LanguagePrimitives/StringFormatTests.fs | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/StringFormatTests.fs b/tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/StringFormatTests.fs index fd080d02d95..c2ad00ab3fb 100644 --- a/tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/StringFormatTests.fs +++ b/tests/fsharp/Compiler/Libraries/Core/LanguagePrimitives/StringFormatTests.fs @@ -4,6 +4,7 @@ namespace FSharp.Compiler.UnitTests open NUnit.Framework +[] module ``String Format Tests`` = []