@@warning("-44") module InternalExpressionValue = ReducerInterface_InternalExpressionValue module Project = ForTS_ReducerProject module Bindings = Reducer_Bindings open Jest open Expect open Expect.Operators 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"] | Error(error) => fail(error->Reducer_ErrorValue.errorToString) } }) let internalProject = project->Project.T.Private.castToInternalProject test("past chain", () => { expect(Project.Private.getPastChain(internalProject, "main")) == ["common"] }) test("import as variables", () => { expect(Project.Private.getIncludesAsVariables(internalProject, "main")) == [] }) }) describe("Parse includes", () => { let project = Project.createProject() Project.setSource( project, "main", ` #include 'common' #include 'myModule' as myVariable x=1`, ) Project.parseIncludes(project, "main") test("dependencies", () => { expect(Project.getDependencies(project, "main")) == ["common", "myModule"] }) test("dependents", () => { expect(Project.getDependents(project, "main")) == [] }) test("getIncludes", () => { let mainIncludes = Project.getIncludes(project, "main") switch mainIncludes { | Ok(includes) => expect(includes) == ["common", "myModule"] | Error(error) => fail(error->Reducer_ErrorValue.errorToString) } }) let internalProject = project->Project.T.Private.castToInternalProject test("direct past chain", () => { expect(Project.Private.getPastChain(internalProject, "main")) == ["common"] }) test("direct includes", () => { expect(Project.Private.getDirectIncludes(internalProject, "main")) == ["common"] }) test("include as variables", () => { expect(Project.Private.getIncludesAsVariables(internalProject, "main")) == [ ("myVariable", "myModule"), ] }) }) 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"] | Error(error) => fail(error->Reducer_ErrorValue.errorToString) } }) let internalProject = project->Project.T.Private.castToInternalProject test("direct past chain", () => { expect(Project.getPastChain(project, "main")) == ["common", "common2"] }) test("include as variables", () => { expect(Project.Private.getIncludesAsVariables(internalProject, "main")) == [ ("myVariable", "myModule"), ] }) })