import IGrammarProvider from "./IGrammarProvider"; import GTestContext from "./GTestContext"; import { ITypeManifest, IIterator, ArrayIterator } from "@cafetextual/util"; import Assert from "@cafetextual/util/dist/src/assert/Assert"; import SeepGrammar from "../parser/SeepGrammar"; /** * Context for all GrammarTestSuites * * - contains referenceable grammars etc * */ export default class GSuiteContext implements IGrammarProvider { constructor(manifest:ITypeManifest) { this._manifest = manifest; } private _manifest:ITypeManifest; private _ambientGrammars:{[uri:string]:SeepGrammar} = {}; // {[suri:string]:SeepGrammar} = {} private _testContexts:Array = [] getTestcontexts():Array { return this._testContexts } addTests(testContext:GTestContext):void { this._testContexts.push(testContext); } hasGrammar(suri:string):boolean { return (this._ambientGrammars[suri] != null); } registerGrammar(grammar:SeepGrammar):void { Assert.assert(grammar.isValid()); console.log(" registering grammar " + grammar.provUri) this._ambientGrammars[grammar.provUri] = grammar; } // registerGrammar getGrammar(suri:string):SeepGrammar { return this._ambientGrammars[suri]; } getManifest():ITypeManifest { return this._manifest; } it():IIterator { return new ArrayIterator(this._testContexts) } } // class