Skip to content

Commit

Permalink
test(query): add test for resolve-value query - #1107
Browse files Browse the repository at this point in the history
  • Loading branch information
gigalasr committed Jan 28, 2025
1 parent d970a1c commit fd534fa
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,19 +25,15 @@ export function executeResolveValueQuery({ dataflow: { graph, environment } }: B
log.warn(`Duplicate Key for slicing-query: ${key}, skipping...`);
}

const ids = query.criteria.map(criteria => slicingCriterionToId(criteria, idMap));
const values = new Set<unknown>();
const values = query.criteria
.map(criteria => recoverName(slicingCriterionToId(criteria, idMap), idMap))
.flatMap(ident => resolveToValues(ident, environment, graph))

for(const id of ids) {
resolveToValues(recoverName(id, idMap), environment, graph)
?.forEach(v => values.add(v));
}

results[key] = {
values: [...values]
values: [... new Set(values)]
};
}

return {
'.meta': {
timing: Date.now() - start
Expand Down
42 changes: 42 additions & 0 deletions test/functionality/dataflow/query/resolve-value-query.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import { assertQuery } from '../../_helper/query';
import { label } from '../../_helper/label';
import type { DataflowQuery } from '../../../../src/queries/catalog/dataflow-query/dataflow-query-format';
import { withShell } from '../../_helper/shell';
import { assert, describe } from 'vitest';
import { ResolveValueQuery, ResolveValueQueryResult } from '../../../../src/queries/catalog/resolve-value-query/resolve-value-query-format';
import { fingerPrintOfQuery } from '../../../../src/queries/catalog/resolve-value-query/resolve-value-query-executor';
import { resolveToValues } from '../../../../src/dataflow/environments/resolve-by-name';
import { slicingCriterionToId } from '../../../../src/slicing/criterion/parse';
import { recoverName } from '../../../../src/r-bridge/lang-4.x/ast/model/processing/node-id';

describe.sequential('Resolve Value Query', withShell(shell => {
function testQuery(name: string, code: string, queries: readonly ResolveValueQuery[]) {
assertQuery(label(name), shell, code, queries, ({dataflow}) => {
const results: ResolveValueQueryResult['results'] = {};

const idMap = dataflow.graph.idMap;
assert(idMap !== undefined);

for (const query of queries) {
const key = fingerPrintOfQuery(query);
const identifiers = query.criteria
.map(criteria => slicingCriterionToId(criteria, idMap))
.map(id => recoverName(id, idMap));

const values = identifiers
.flatMap(id => resolveToValues(id, dataflow.environment, dataflow.graph));

results[key] = {
values: [... new Set(values)]
}
}

return {
'resolve-value': { results }
}
});
}

testQuery('Single dataflow', 'x <- 1', [{ type: 'resolve-value', criteria: ["1@x"] }]);
testQuery('Multiple Queries', 'x <- 1', [{ type: 'resolve-value', criteria: ["1@x"] }, { type: 'resolve-value', criteria: ["1@x"] }, { type: 'resolve-value', criteria: ["1@x"] }]);
}));

0 comments on commit fd534fa

Please sign in to comment.