forked from dotnet/fsharp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathManglingNameOfProvidedTypes.fs
More file actions
68 lines (57 loc) · 2.7 KB
/
ManglingNameOfProvidedTypes.fs
File metadata and controls
68 lines (57 loc) · 2.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// Copyright (c) Microsoft Corporation. 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
[<TestFixture>]
type ManglingNamesOfProvidedTypesWithSingleParameter() =
[<Test>]
member this.MangleWithNonDefaultValue() =
let mangled =
PrettyNaming.computeMangledNameWithoutDefaultArgValues("MyNamespace.Test", [| "xyz" |], [| "Foo", Some "abc" |])
Assert.AreEqual("MyNamespace.Test,Foo=\"xyz\"", mangled)
[<Test>]
member this.MangleWithDefaultValue() =
let mangled =
PrettyNaming.computeMangledNameWithoutDefaultArgValues("MyNamespace.Test", [| "xyz" |], [| "Foo", Some "xyz" |])
Assert.AreEqual("MyNamespace.Test", mangled)
[<Test>]
member this.DemangleNonDefaultValue() =
let name, parameters = PrettyNaming.demangleProvidedTypeName "MyNamespace.Test,Foo=\"xyz\""
Assert.AreEqual("MyNamespace.Test", name)
Assert.AreEqual([| "Foo", "xyz" |], parameters)
[<Test>]
member this.DemangleDefaultValue() =
let name, parameters = PrettyNaming.demangleProvidedTypeName "MyNamespace.Test,"
Assert.AreEqual("MyNamespace.Test", name)
Assert.AreEqual([||], parameters)
[<Test>]
member this.DemangleNewDefaultValue() =
let name, parameters = PrettyNaming.demangleProvidedTypeName "MyNamespace.Test"
Assert.AreEqual("MyNamespace.Test", name)
Assert.AreEqual([||], parameters)
[<TestFixture>]
type ManglingNamesOfProvidedTypesWithMultipleParameter() =
[<Test>]
member this.MangleWithNonDefaultValue() =
let mangled =
PrettyNaming.computeMangledNameWithoutDefaultArgValues
("MyNamespace.Test", [| "xyz"; "abc" |],
[| "Foo", Some "foo"
"Foo2", Some "foo2" |])
Assert.AreEqual("MyNamespace.Test,Foo=\"xyz\",Foo2=\"abc\"", mangled)
[<Test>]
member this.MangleWithDefaultValue() =
let mangled =
PrettyNaming.computeMangledNameWithoutDefaultArgValues
("MyNamespace.Test", [| "xyz"; "abc" |],
[| "Foo", Some "xyz"
"Foo2", Some "abc" |])
Assert.AreEqual("MyNamespace.Test", mangled)
[<Test>]
member this.DemangleMultiParameter() =
let name, parameters = PrettyNaming.demangleProvidedTypeName "TestType,Foo=\"xyz\",Foo2=\"abc\""
Assert.AreEqual("TestType", name)
Assert.AreEqual([| "Foo", "xyz"
"Foo2", "abc" |], parameters)