collab/mermaid/packages/parser/tests/test-util.tsblame
View source
6dd74de1import type { LangiumParser, ParseResult } from 'langium';
6dd74de2import { expect, vi } from 'vitest';
6dd74de3import type {
6dd74de4 Architecture,
6dd74de5 ArchitectureServices,
6dd74de6 Info,
6dd74de7 InfoServices,
6dd74de8 Pie,
6dd74de9 PieServices,
6dd74de10 Radar,
6dd74de11 RadarServices,
6dd74de12 Packet,
6dd74de13 PacketServices,
6dd74de14 GitGraph,
6dd74de15 GitGraphServices,
6dd74de16} from '../src/language/index.js';
6dd74de17import {
6dd74de18 createArchitectureServices,
6dd74de19 createInfoServices,
6dd74de20 createPieServices,
6dd74de21 createRadarServices,
6dd74de22 createPacketServices,
6dd74de23 createGitGraphServices,
6dd74de24} from '../src/language/index.js';
6dd74de25
6dd74de26const consoleMock = vi.spyOn(console, 'log').mockImplementation(() => undefined);
6dd74de27
6dd74de28/**
6dd74de29 * A helper test function that validate that the result doesn't have errors
6dd74de30 * or any ambiguous alternatives from chevrotain.
6dd74de31 *
6dd74de32 * @param result - the result `parse` function.
6dd74de33 */
6dd74de34export function expectNoErrorsOrAlternatives(result: ParseResult) {
6dd74de35 expect.soft(result.lexerErrors).toHaveLength(0);
6dd74de36 expect.soft(result.parserErrors).toHaveLength(0);
6dd74de37 // To see what the error is, in the logs.
6dd74de38 expect(result.lexerErrors[0]).toBeUndefined();
6dd74de39 expect(consoleMock).not.toHaveBeenCalled();
6dd74de40 consoleMock.mockReset();
6dd74de41}
6dd74de42
6dd74de43const infoServices: InfoServices = createInfoServices().Info;
6dd74de44const infoParser: LangiumParser = infoServices.parser.LangiumParser;
6dd74de45export function createInfoTestServices() {
6dd74de46 const parse = (input: string) => {
6dd74de47 return infoParser.parse<Info>(input);
6dd74de48 };
6dd74de49
6dd74de50 return { services: infoServices, parse };
6dd74de51}
6dd74de52export const infoParse = createInfoTestServices().parse;
6dd74de53
6dd74de54const architectureServices: ArchitectureServices = createArchitectureServices().Architecture;
6dd74de55const architectureParser: LangiumParser = architectureServices.parser.LangiumParser;
6dd74de56export function createArchitectureTestServices() {
6dd74de57 const parse = (input: string) => {
6dd74de58 return architectureParser.parse<Architecture>(input);
6dd74de59 };
6dd74de60
6dd74de61 return { services: architectureServices, parse };
6dd74de62}
6dd74de63export const architectureParse = createArchitectureTestServices().parse;
6dd74de64
6dd74de65const pieServices: PieServices = createPieServices().Pie;
6dd74de66const pieParser: LangiumParser = pieServices.parser.LangiumParser;
6dd74de67export function createPieTestServices() {
6dd74de68 const parse = (input: string) => {
6dd74de69 return pieParser.parse<Pie>(input);
6dd74de70 };
6dd74de71
6dd74de72 return { services: pieServices, parse };
6dd74de73}
6dd74de74export const pieParse = createPieTestServices().parse;
6dd74de75
6dd74de76const packetServices: PacketServices = createPacketServices().Packet;
6dd74de77const packetParser: LangiumParser = packetServices.parser.LangiumParser;
6dd74de78export function createPacketTestServices() {
6dd74de79 const parse = (input: string) => {
6dd74de80 return packetParser.parse<Packet>(input);
6dd74de81 };
6dd74de82
6dd74de83 return { services: packetServices, parse };
6dd74de84}
6dd74de85export const packetParse = createPacketTestServices().parse;
6dd74de86
6dd74de87const radarServices: RadarServices = createRadarServices().Radar;
6dd74de88const radarParser: LangiumParser = radarServices.parser.LangiumParser;
6dd74de89export function createRadarTestServices() {
6dd74de90 const parse = (input: string) => {
6dd74de91 return radarParser.parse<Radar>(input);
6dd74de92 };
6dd74de93
6dd74de94 return { services: radarServices, parse };
6dd74de95}
6dd74de96export const radarParse = createRadarTestServices().parse;
6dd74de97
6dd74de98const gitGraphServices: GitGraphServices = createGitGraphServices().GitGraph;
6dd74de99const gitGraphParser: LangiumParser = gitGraphServices.parser.LangiumParser;
6dd74de100export function createGitGraphTestServices() {
6dd74de101 const parse = (input: string) => {
6dd74de102 return gitGraphParser.parse<GitGraph>(input);
6dd74de103 };
6dd74de104
6dd74de105 return { services: gitGraphServices, parse };
6dd74de106}
6dd74de107export const gitGraphParse = createGitGraphTestServices().parse;