detect attempts to compare between labels (only with constants is possible)

This commit is contained in:
zadam
2020-07-20 23:27:30 +02:00
parent 4e5ddaf7d1
commit f03e4bc7d7
4 changed files with 47 additions and 4 deletions

View File

@@ -188,4 +188,41 @@ describe("Invalid tokens", () => {
expect(parsingContext.error).toEqual('Misplaced or incomplete expression "="')
});
it("comparison between labels is impossible", () => {
let parsingContext = new ParsingContext();
parser({
fulltextTokens: [],
expressionTokens: tokens("#first", "=", "#second"),
parsingContext
});
expect(parsingContext.error).toEqual(`Error near token "#second", it's possible to compare with constant only.`);
parsingContext = new ParsingContext();
parser({
fulltextTokens: [],
expressionTokens: tokens("#first", "=", "note", ".", "relations", "second"),
parsingContext
});
expect(parsingContext.error).toEqual(`Error near token "note", it's possible to compare with constant only.`);
const rootExp = parser({
fulltextTokens: [],
expressionTokens: [
{ token: "#first", inQuotes: false },
{ token: "=", inQuotes: false },
{ token: "#second", inQuotes: true },
],
parsingContext: new ParsingContext()
});
expect(rootExp.constructor.name).toEqual("LabelComparisonExp");
expect(rootExp.attributeType).toEqual("label");
expect(rootExp.attributeName).toEqual("first");
expect(rootExp.comparator).toBeTruthy();
});
});