You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
pegjs/test/spec/unit/compiler/passes/remove-proxy-rules.spec.js

70 lines
1.9 KiB
JavaScript

"use strict";
const chai = require( "chai" );
const helpers = require( "./helpers" );
const pass = require( "pegjs-dev" ).compiler.passes.transform.removeProxyRules;
chai.use( helpers );
const expect = chai.expect;
describe( "compiler pass |removeProxyRules|", function () {
describe( "when a proxy rule isn't listed in |allowedStartRules|", function () {
it( "updates references and removes it", function () {
expect( pass ).to.changeAST(
[
"start = proxy",
"proxy = proxied",
"proxied = 'a'"
].join( "\n" ),
{
rules: [
{
name: "start",
expression: { type: "rule_ref", name: "proxied" }
},
{ name: "proxied" }
]
},
{ allowedStartRules: [ "start" ] }
);
} );
} );
describe( "when a proxy rule is listed in |allowedStartRules|", function () {
it( "updates references but doesn't remove it", function () {
expect( pass ).to.changeAST(
[
"start = proxy",
"proxy = proxied",
"proxied = 'a'"
].join( "\n" ),
{
rules: [
{
name: "start",
expression: { type: "rule_ref", name: "proxied" }
},
{
name: "proxy",
expression: { type: "rule_ref", name: "proxied" }
},
{ name: "proxied" }
]
},
{ allowedStartRules: [ "start", "proxy" ] }
);
} );
} );
} );