Skip to content

Commit

Permalink
Add a failing test for dotnet#212
Browse files Browse the repository at this point in the history
  • Loading branch information
forki committed Feb 4, 2015
1 parent 6119e11 commit 882d3c0
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="NUnitFrameworkShims.fs" Condition="'$(TargetFramework)' == 'sl3-wp'" />
<Compile Include="RecordInitialisation.fs" />
<Compile Include="HashIfExpression.fs" />
</ItemGroup>
<ItemGroup>
Expand Down
87 changes: 87 additions & 0 deletions src/fsharp/FSharp.Compiler.Unittests/RecordInitialisation.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
// Copyright (c) Microsoft Open Technologies, Inc. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
namespace FSharp.Compiler.Unittests

open System
open System.Text
open NUnit.Framework
open Microsoft.FSharp.Compiler

type Foo =
{ A : int
B : int
C : int }


[<TestFixture>]
type OrderOfRecordInitialisation() =

let expected =
{ A = 1
B = 2
C = 3 }

[<Test>]
member this.ShouldInitialzeInGivenOrder1() =
let order = ref ""
let actual =
{ A = let _ = order := !order + "1" in 1
B = let _ = order := !order + "2" in 2
C = let _ = order := !order + "3" in 3 }

Assert.AreEqual(expected, actual)
Assert.AreEqual("123", !order)

[<Test>]
member this.ShouldInitialzeInGivenOrder2() =
let order = ref ""
let actual =
{ A = let _ = order := !order + "1" in 1
C = let _ = order := !order + "2" in 3
B = let _ = order := !order + "3" in 2 }

Assert.AreEqual(expected, actual)
Assert.AreEqual("123", !order)

[<Test>]
member this.ShouldInitialzeInGivenOrder3() =
let order = ref ""
let actual =
{ B = let _ = order := !order + "1" in 2
A = let _ = order := !order + "2" in 1
C = let _ = order := !order + "3" in 3 }

Assert.AreEqual(expected, actual)
Assert.AreEqual("123", !order)

[<Test>]
member this.ShouldInitialzeInGivenOrder4() =
let order = ref ""
let actual =
{ B = let _ = order := !order + "1" in 2
C = let _ = order := !order + "2" in 3
A = let _ = order := !order + "3" in 1 }

Assert.AreEqual(expected, actual)
Assert.AreEqual("123", !order)

[<Test>]
member this.ShouldInitialzeInGivenOrder5() =
let order = ref ""
let actual =
{ C = let _ = order := !order + "1" in 3
A = let _ = order := !order + "2" in 1
B = let _ = order := !order + "3" in 2 }

Assert.AreEqual(expected, actual)
Assert.AreEqual("123", !order)

[<Test>]
member this.ShouldInitialzeInGivenOrder6() =
let order = ref ""
let actual =
{ C = let _ = order := !order + "1" in 3
B = let _ = order := !order + "2" in 2
A = let _ = order := !order + "3" in 1 }

Assert.AreEqual(expected, actual)
Assert.AreEqual("123", !order)

0 comments on commit 882d3c0

Please sign in to comment.