Skip to content

Commit 43881d5

Browse files
committed
Try and type check scenarios.
1 parent a3a4958 commit 43881d5

File tree

4 files changed

+43
-11
lines changed

4 files changed

+43
-11
lines changed

tests/ParallelTypeCheckingTests/ParallelTypeCheckingTests.fsproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
<Compile Include="Code\ParallelTypeChecking.fs" />
4141
<Compile Include="Tests\Utils.fs" />
4242
<Compile Include="Tests\AssemblySetUp.fs" />
43-
<Compile Include="Tests\TestCompilation.fs" />
4443
<Compile Include="Tests\TestCompilationFromCmdlineArgs.fs" />
4544
<Content Include="Tests\FCS.args.txt" />
4645
<Content Include="Tests\FCS.prepare.ps1" />
@@ -53,6 +52,7 @@
5352
<Compile Include="Tests\FileContentMappingTests.fs" />
5453
<Compile Include="Tests\Scenarios.fs" />
5554
<Compile Include="Tests\DependencyResolutionTests.fs" />
55+
<Compile Include="Tests\TestCompilation.fs" />
5656
<Compile Include="Program.fs" />
5757
<Content Include="Docs.md" />
5858
</ItemGroup>

tests/ParallelTypeCheckingTests/Tests/DependencyResolutionTests.fs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@ let scenarios = codebases
1010

1111
[<TestCaseSource(nameof scenarios)>]
1212
let ``Supported scenario`` (scenario: Scenario) =
13-
let graph = mkGraph (Array.map fst scenario.Files)
13+
let graph = mkGraph (Array.map (fun f -> f.FileWithAST) scenario.Files)
1414

15-
for file, expectedDeps in scenario.Files do
16-
let actualDeps = graph.[file.Idx]
17-
Assert.AreEqual(expectedDeps, actualDeps, $"Dependencies don't match for {System.IO.Path.GetFileName file.File}")
15+
for file in scenario.Files do
16+
let expectedDeps = file.ExpectedDependencies
17+
let actualDeps = graph.[file.FileWithAST.Idx]
18+
Assert.AreEqual(expectedDeps, actualDeps, $"Dependencies don't match for {System.IO.Path.GetFileName file.FileWithAST.File}")
1819

1920
// =============================================================================================================
2021
// =============================================================================================================

tests/ParallelTypeCheckingTests/Tests/Scenarios.fs

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,36 @@ open ParallelTypeCheckingTests
66
type Scenario =
77
{
88
Name: string
9-
Files: (FileWithAST * Set<int>) array
9+
Files: FileInScenario array
1010
}
1111

1212
override x.ToString() = x.Name
1313

14+
and FileInScenario =
15+
{
16+
FileWithAST: FileWithAST
17+
ExpectedDependencies: Set<int>
18+
Content: string
19+
}
20+
1421
let scenario name files =
1522
let files = files |> List.toArray |> Array.mapi (fun idx f -> f idx)
1623
{ Name = name; Files = files }
1724

1825
let sourceFile fileName content (dependencies: Set<int>) =
1926
fun idx ->
27+
let fileWithAST =
28+
{
29+
Idx = idx
30+
AST = parseSourceCode (fileName, content)
31+
File = fileName
32+
}
33+
2034
{
21-
Idx = idx
22-
AST = parseSourceCode (fileName, content)
23-
File = fileName
24-
},
25-
dependencies
35+
FileWithAST = fileWithAST
36+
ExpectedDependencies = dependencies
37+
Content = content
38+
}
2639

2740
let codebases =
2841
[

tests/ParallelTypeCheckingTests/Tests/TestCompilation.fs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ open FSharp.Test
44
open FSharp.Test.Compiler
55
open NUnit.Framework
66
open ParallelTypeCheckingTests.TestUtils
7+
open ParallelTypeCheckingTests.Tests.Scenarios
78

89
type FProject =
910
{
@@ -257,3 +258,20 @@ let ``Compile a valid project using sequential type-checking`` (project: FProjec
257258
Method = Method.Sequential
258259
Project = project
259260
}
261+
262+
//...
263+
let scenarios = ParallelTypeCheckingTests.Tests.Scenarios.codebases
264+
265+
[<TestCaseSource(nameof scenarios)>]
266+
let ``Compile a valid scenario using graph-based type-checking`` (scenario: Scenario) =
267+
let project =
268+
scenario.Files
269+
|> Array.map (fun (f: FileInScenario) -> f.FileWithAST.File, f.Content)
270+
|> List.ofArray
271+
|> FProject.Make CompileOutput.Library
272+
273+
compileAValidProject
274+
{
275+
Method = Method.Graph
276+
Project = project
277+
}

0 commit comments

Comments
 (0)