squiggle/packages/squiggle-lang/__tests__/ReducerProject/ReducerProject_includes_test.res

112 lines
2.9 KiB
Plaintext
Raw Permalink Normal View History

2022-09-17 22:19:08 +00:00
@@warning("-44")
module Project = ForTS_ReducerProject
2022-08-23 09:48:22 +00:00
2022-09-17 22:19:08 +00:00
open Jest
open Expect
open Expect.Operators
2022-08-23 09:48:22 +00:00
2022-09-17 22:19:08 +00:00
describe("Parse includes", () => {
let project = Project.createProject()
Project.setSource(
project,
"main",
`
#include 'common'
x=1`,
)
Project.parseIncludes(project, "main")
test("dependencies", () => {
expect(Project.getDependencies(project, "main")) == ["common"]
})
test("dependents", () => {
expect(Project.getDependents(project, "main")) == []
})
test("getIncludes", () => {
let mainIncludes = Project.getIncludes(project, "main")
switch mainIncludes {
| Ok(includes) => expect(includes) == ["common"]
2022-10-05 01:17:30 +00:00
| Error(error) => fail(error->SqError.toString)
2022-09-17 22:19:08 +00:00
}
})
test("past chain", () => {
expect(project->Project.getPastChain("main")) == ["common"]
})
test("import as variables", () => {
expect(project->Project.Private.getIncludesAsVariables("main")) == []
})
})
2022-08-31 21:54:54 +00:00
2022-09-17 22:19:08 +00:00
describe("Parse includes", () => {
let project = Project.createProject()
Project.setSource(
project,
"main",
`
#include 'common'
#include 'myModule' as myVariable
x=1`,
)
Project.parseIncludes(project, "main")
2022-08-31 21:54:54 +00:00
2022-09-17 22:19:08 +00:00
test("dependencies", () => {
expect(Project.getDependencies(project, "main")) == ["common", "myModule"]
})
2022-08-31 21:54:54 +00:00
2022-09-17 22:19:08 +00:00
test("dependents", () => {
expect(Project.getDependents(project, "main")) == []
})
2022-08-31 21:54:54 +00:00
2022-09-17 22:19:08 +00:00
test("getIncludes", () => {
let mainIncludes = Project.getIncludes(project, "main")
switch mainIncludes {
| Ok(includes) => expect(includes) == ["common", "myModule"]
2022-10-05 01:17:30 +00:00
| Error(error) => fail(error->SqError.toString)
2022-09-17 22:19:08 +00:00
}
})
2022-08-31 21:54:54 +00:00
2022-09-17 22:19:08 +00:00
test("direct past chain", () => {
expect(project->Project.Private.getPastChain("main")) == ["common"]
})
2022-08-31 21:54:54 +00:00
2022-09-17 22:19:08 +00:00
test("direct includes", () => {
expect(project->Project.Private.getDirectIncludes("main")) == ["common"]
})
2022-08-31 21:54:54 +00:00
2022-09-17 22:19:08 +00:00
test("include as variables", () => {
expect(project->Project.Private.getIncludesAsVariables("main")) == [("myVariable", "myModule")]
2022-09-17 22:19:08 +00:00
})
})
2022-08-31 21:54:54 +00:00
2022-09-17 22:19:08 +00:00
describe("Parse multiple direct includes", () => {
let project = Project.createProject()
Project.setSource(
project,
"main",
`
#include 'common'
#include 'common2'
#include 'myModule' as myVariable
x=1`,
)
Project.parseIncludes(project, "main")
test("dependencies", () => {
expect(Project.getDependencies(project, "main")) == ["common", "common2", "myModule"]
})
test("dependents", () => {
expect(Project.getDependents(project, "main")) == []
})
test("getIncludes", () => {
let mainIncludes = Project.getIncludes(project, "main")
switch mainIncludes {
| Ok(includes) => expect(includes) == ["common", "common2", "myModule"]
2022-10-05 01:17:30 +00:00
| Error(error) => fail(error->SqError.toString)
2022-09-17 22:19:08 +00:00
}
})
test("direct past chain", () => {
expect(Project.getPastChain(project, "main")) == ["common", "common2"]
})
test("include as variables", () => {
expect(project->Project.Private.getIncludesAsVariables("main")) == [("myVariable", "myModule")]
2022-09-17 22:19:08 +00:00
})
})