1+ // 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.
2+
3+ namespace FSharp.Compiler.Unittests
4+
5+ open System
6+ open System.Text
7+
8+ open NUnit.Framework
9+
10+ open Microsoft.FSharp .Compiler
11+
12+ [<TestFixture>]
13+ type ManglelingNamesOfProvidedTypesWithSingleParameter () =
14+ [<Test>]
15+ member this.MangleWithNonDefaultValue () =
16+ let mangled = PrettyNaming.computeMangledNameWithoutDefaultArgValues( " MyNamespace.Test" ,[| " xyz" |],[| " Foo" , Some" abc" |])
17+ Assert.AreEqual( " MyNamespace.Test,Foo=\" xyz\" " , mangled)
18+
19+ [<Test>]
20+ member this.MangleWithDefaultValue () =
21+ let mangled = PrettyNaming.computeMangledNameWithoutDefaultArgValues( " MyNamespace.Test" ,[| " xyz" |],[| " Foo" , Some" xyz" |])
22+ Assert.AreEqual( " MyNamespace.Test," , mangled)
23+
24+ [<Test>]
25+ member this.DemangleNonDefaultValue () =
26+ let name , parameters = PrettyNaming.demangleProvidedTypeName" MyNamespace.Test,Foo=\" xyz\" "
27+ Assert.AreEqual( " MyNamespace.Test" , name)
28+ Assert.AreEqual([| " Foo" , " xyz" |], parameters)
29+
30+ [<TestFixture>]
31+ type ManglelingNamesOfProvidedTypesWithMultipleParameter () =
32+
33+ [<Test>]
34+ member this.MangleWithNonDefaultValue () =
35+ let mangled = PrettyNaming.computeMangledNameWithoutDefaultArgValues( " MyNamespace.Test" ,[| " xyz" ; " abc" |], [| " Foo" , Some" foo" ; " Foo2" , Some" foo2" |])
36+ Assert.AreEqual( " MyNamespace.Test,Foo=\" xyz\" ,Foo2=\" abc\" " , mangled)
37+
38+ [<Test>]
39+ member this.MangleWithDefaultValue () =
40+ let mangled = PrettyNaming.computeMangledNameWithoutDefaultArgValues( " MyNamespace.Test" ,[| " xyz" ; " abc" |], [| " Foo" , Some" xyz" ; " Foo2" , Some" abc" |])
41+ Assert.AreEqual( " MyNamespace.Test," , mangled)
42+
43+ [<Test>]
44+ member this.DemangleMultiParameter () =
45+ let name , parameters = PrettyNaming.demangleProvidedTypeName" TestType,Foo=\" xyz\" ,Foo2=\" abc\" "
46+ Assert.AreEqual( " TestType" , name)
47+ Assert.AreEqual([| " Foo" , " xyz" ; " Foo2" , " abc" |], parameters)