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});