|
1 | 1 | module Fantomas.Core.Tests.CodeFormatterTests
|
2 | 2 |
|
3 | 3 | open NUnit.Framework
|
| 4 | +open Fantomas.FCS.Text |
4 | 5 | open Fantomas.Core
|
| 6 | +open Fantomas.Core.SyntaxOak |
5 | 7 | open Fantomas.Core.Tests.TestHelpers
|
6 | 8 |
|
7 | 9 | [<Test>]
|
@@ -39,7 +41,7 @@ let main _ =
|
39 | 41 | |> ignore
|
40 | 42 |
|
41 | 43 | [<Test>]
|
42 |
| -let ``trivia is parsed for Oak`` () = |
| 44 | +let ``trivia is transformed to Oak`` () = |
43 | 45 | let oak =
|
44 | 46 | CodeFormatter.ParseOakAsync(false, "let a = 0\n // foo")
|
45 | 47 | |> Async.RunSynchronously
|
@@ -67,3 +69,61 @@ let ``parsed oak can be formatted back to source`` () =
|
67 | 69 | |> Async.RunSynchronously
|
68 | 70 |
|
69 | 71 | Assert.AreEqual(source, formatted)
|
| 72 | + |
| 73 | +[<Test>] |
| 74 | +let ``transform parsedInput to Oak`` () = |
| 75 | + let source = |
| 76 | + """ |
| 77 | +module A |
| 78 | +
|
| 79 | +#if DEBUG |
| 80 | +let b = 0 |
| 81 | +#endif |
| 82 | +""" |
| 83 | + |
| 84 | + let ast, _ = |
| 85 | + Fantomas.FCS.Parse.parseFile false (SourceText.ofString source) [ "DEBUG" ] |
| 86 | + |
| 87 | + let oak = CodeFormatter.TransformAST(ast, source) |
| 88 | + |
| 89 | + match oak.ModulesOrNamespaces.[0].Declarations.[0] with |
| 90 | + | ModuleDecl.TopLevelBinding _ -> Assert.Pass() |
| 91 | + | _ -> Assert.Fail() |
| 92 | + |
| 93 | +[<Test>] |
| 94 | +let ``transform parsedInput created with additional defines to Oak`` () = |
| 95 | + let source = |
| 96 | + """ |
| 97 | +module A |
| 98 | +
|
| 99 | +#if DEBUG |
| 100 | +let b = 0 |
| 101 | +#endif |
| 102 | +""" |
| 103 | + |
| 104 | + let ast, _ = |
| 105 | + Fantomas.FCS.Parse.parseFile false (SourceText.ofString source) [ "DEBUG"; "FOO"; "BAR" ] |
| 106 | + |
| 107 | + let oak = CodeFormatter.TransformAST ast |
| 108 | + |
| 109 | + match oak.ModulesOrNamespaces.[0].Declarations.[0] with |
| 110 | + | ModuleDecl.TopLevelBinding _ -> Assert.Pass() |
| 111 | + | _ -> Assert.Fail() |
| 112 | + |
| 113 | +[<Test>] |
| 114 | +let ``transform parsedInput contains trivia in Oak`` () = |
| 115 | + let source = |
| 116 | + """ |
| 117 | +module A |
| 118 | +
|
| 119 | +// foo |
| 120 | +let b = 0 |
| 121 | +""" |
| 122 | + |
| 123 | + let ast, _ = Fantomas.FCS.Parse.parseFile false (SourceText.ofString source) [] |
| 124 | + |
| 125 | + let oak = CodeFormatter.TransformAST(ast, source) |
| 126 | + |
| 127 | + match oak.ModulesOrNamespaces.[0].Declarations.[0] with |
| 128 | + | ModuleDecl.TopLevelBinding node -> Assert.True node.HasContentBefore |
| 129 | + | _ -> Assert.Fail() |
0 commit comments