f7
f7 is a spreadsheet formula execution library
git clone https://git.vogt.world/f7.git
Log | Files | README.md | LICENSE.md
← All files
name: src/test/js/execution/ExecutorDependencyCheckingTest.ts
-rw-r--r--
3458
 1import { RefException } from "../../../main/js/errors/RefException";
 2import { runner, it, describe } from "../testutils/TestUtils";
 3
 4describe("Executor.execute - Dependency Checking", function () {
 5  it("should return REF error for cycles that occur from self-dependency", function () {
 6    runner()
 7      .addCell("Alpha", "J2", "= J2")
 8      .addExpectedValue("Alpha", "J2", new RefException())
 9      .run();
10    runner()
11      .addCell("Alpha", "J2", "= J2 + 1")
12      .addExpectedValue("Alpha", "J2", new RefException())
13      .run();
14  });
15
16  it("should return REF error for cycles that occur when two cells reference each other", function () {
17    runner()
18      .addCell("Alpha", "A1", "= J2")
19      .addCell("Alpha", "J2", "= A1")
20      .addExpectedValue("Alpha", "A1", new RefException())
21      .addExpectedValue("Alpha", "J2", new RefException())
22      .run();
23    runner()
24      .addCell("Alpha", "A1", "= J2 + 1")
25      .addCell("Alpha", "J2", "= A1 + 1")
26      .addExpectedValue("Alpha", "A1", new RefException())
27      .addExpectedValue("Alpha", "J2", new RefException())
28      .run();
29  });
30
31  it("should return REF error for cycles that occurred from indirect references (A -> B -> C -> A)", function () {
32    runner()
33      .addCell("Alpha", "A1", "= J2 + 1")
34      .addCell("Alpha", "J2", "= D8 + 1")
35      .addCell("Alpha", "D8", "= A1 + 1")
36      .addExpectedValue("Alpha", "A1", new RefException())
37      .addExpectedValue("Alpha", "J2", new RefException())
38      .addExpectedValue("Alpha", "D8", new RefException())
39      .run();
40    runner()
41      .addCell("Alpha", "D4", "= A1 + 1")
42      .addCell("Alpha", "A2", "= D4 + 1")
43      .addCell("Alpha", "A1", "= A2 + 1")
44      .addExpectedValue("Alpha", "D4", new RefException())
45      .addExpectedValue("Alpha", "A2", new RefException())
46      .addExpectedValue("Alpha", "A1", new RefException())
47      .run();
48  });
49
50  it("should return REF error for cycles that occur when two cells reference each other across grids", function () {
51    runner()
52      .addCell("Alpha", "A1", "= Beta!J2 + 1")
53      .addCell("Beta", "J2", "= Alpha!A1 + 1")
54      .addExpectedValue("Alpha", "A1", new RefException())
55      .addExpectedValue("Beta", "J2", new RefException())
56      .run();
57  });
58
59  it("should return REF error for cycles that occurred from indirect references (A -> B -> C -> A) across grids", function () {
60    runner()
61      .addCell("Alpha", "A1", "= Beta!J2 + 1")
62      .addCell("Beta", "J2", "= Charlie!D8 + 1")
63      .addCell("Charlie", "D8", "= Alpha!A1 + 1")
64      .addExpectedValue("Alpha", "A1", new RefException())
65      .addExpectedValue("Beta", "J2", new RefException())
66      .addExpectedValue("Charlie", "D8", new RefException())
67      .run();
68  });
69
70  it("should return REF error for cycles that occur when a range query contains itself", function () {
71    runner()
72      .addCell("Alpha", "A4", "= {A1:A8}")
73      .addExpectedValue("Alpha", "A4", new RefException())
74      .run();
75    runner()
76      .addCell("Alpha", "A4", "= A1:A8")
77      .addExpectedValue("Alpha", "A4", new RefException())
78      .run();
79  });
80
81  it("should return REF error for cycles that occur when a range query contains indirect references", function () {
82    runner()
83      .addCell("Alpha", "A1", "= D10")
84      .addCell("Alpha", "D10", "= {A1:A2}")
85      .addExpectedValue("Alpha", "A1", new RefException())
86      .addExpectedValue("Alpha", "D10", new RefException())
87      .run();
88  });
89});