Skip to content

Commit f55f88c

Browse files
committed
Added more tests
1 parent c81eef1 commit f55f88c

File tree

2 files changed

+37
-3
lines changed

2 files changed

+37
-3
lines changed

test/circom-template-inputs-visitor.test.ts

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,7 @@ describe("Circom Template Inputs Visitor", () => {
3838
mainComponentData,
3939
);
4040

41-
const parser = getCircomParser(`test/data/curve.circom`);
42-
43-
visitor.visit(parser.circuit());
41+
visitor.startParse();
4442

4543
expect(visitor.errors.length).to.equal(0);
4644

@@ -91,4 +89,32 @@ describe("Circom Template Inputs Visitor", () => {
9189
expect(visitor.templateInputs.pkIdentityHash.type).to.equal("output");
9290
expect(visitor.templateInputs.pkIdentityHash.dimension).to.deep.equal([]);
9391
});
92+
93+
it("should analyse the MainComponent.circom circuit", () => {
94+
const mainComponentData: VariableContext = {
95+
p1: 2n,
96+
p2: 8n,
97+
};
98+
99+
const data = getData("MainComponent.circom");
100+
101+
const visitor = new CircomTemplateInputsVisitor(
102+
"MainComponent.circom",
103+
data["C"].context,
104+
mainComponentData,
105+
);
106+
107+
visitor.startParse();
108+
109+
expect(visitor.errors.length).to.equal(0);
110+
111+
expect(visitor.templateInputs.in1.type).to.equal("input");
112+
expect(visitor.templateInputs.in1.dimension).to.deep.equal([]);
113+
114+
expect(visitor.templateInputs.in2.type).to.equal("input");
115+
expect(visitor.templateInputs.in2.dimension).to.deep.equal([3n, 2n]);
116+
117+
expect(visitor.templateInputs.out.type).to.equal("output");
118+
expect(visitor.templateInputs.out.dimension).to.deep.equal([]);
119+
});
94120
});

test/mocks/CircomTemplateInputsVisitor.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ export class CircomTemplateInputsVisitor extends CircomVisitor<void> {
5555
this._validateVariableContext();
5656
}
5757

58+
startParse = () => {
59+
this.visit(this.templateContext);
60+
};
61+
5862
visitVarDeclaration = (ctx: VarDeclarationContext) => {
5963
if (ctx.LP() && ctx.RP()) {
6064
this.errors.push({
@@ -295,6 +299,10 @@ export class CircomTemplateInputsVisitor extends CircomVisitor<void> {
295299
};
296300

297301
visitSubsLeftAssignment = (ctx: SubsLeftAssignmentContext) => {
302+
if (ctx.LEFT_ASSIGNMENT() || ctx.LEFT_CONSTRAINT()) {
303+
return;
304+
}
305+
298306
const primaryExpression = ctx._lhs.primaryExpression();
299307

300308
if (!primaryExpression) {

0 commit comments

Comments
 (0)