UNPKG

plaxtony

Version:

Static code analysis of SC2 Galaxy Script

88 lines 4.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); require("mocha"); const chai_1 = require("chai"); const definitions_1 = require("../../src/service/definitions"); const helpers_1 = require("../helpers"); const provider_1 = require("../../src/service/provider"); const utils_1 = require("../../src/service/utils"); const archive_1 = require("../../src/sc2mod/archive"); describe('Service Definition', () => { const refsDoc = helpers_1.mockupTextDocument('service', 'definition', 'refs.galaxy'); const headerDoc = helpers_1.mockupTextDocument('service', 'definition', 'header.galaxy'); const store = helpers_1.mockupStore(headerDoc, refsDoc); const defProvider = provider_1.createProvider(definitions_1.DefinitionProvider, store); before(async () => { await store.updateS2Workspace(new archive_1.SC2Workspace(new archive_1.SC2Archive('definition', helpers_1.fixtureFilePath('service', 'definition')))); }); function getDefLinks(document, line, character) { return defProvider.getDefinitionAt(document.uri, utils_1.getPositionOfLineAndCharacter(store.documents.get(document.uri), line, character)); } it('should fail gracefully for non identifiers', () => { chai_1.assert.isUndefined(getDefLinks(refsDoc, 0, 0)); }); it('should fail gracefully for undeclared symbols', () => { chai_1.assert.isUndefined(getDefLinks(headerDoc, 13, 0)); }); it('should locate declarations within the same file', () => { let loc; loc = getDefLinks(refsDoc, 4, 8); chai_1.assert.isAtLeast(loc.length, 1); chai_1.assert.equal(loc[0].targetUri, refsDoc.uri); chai_1.assert.deepEqual(loc[0].targetSelectionRange, { start: { line: 2, character: 16 }, end: { line: 2, character: 21 }, }, 'func param'); loc = getDefLinks(refsDoc, 14, 7); chai_1.assert.isAtLeast(loc.length, 1); chai_1.assert.equal(loc[0].targetUri, refsDoc.uri); chai_1.assert.deepEqual(loc[0].targetSelectionRange, { start: { line: 9, character: 9 }, end: { line: 9, character: 14 }, }, 'local variable: unit local'); loc = getDefLinks(refsDoc, 13, 7); chai_1.assert.isAtLeast(loc.length, 1); chai_1.assert.equal(loc[0].targetUri, refsDoc.uri); chai_1.assert.deepEqual(loc[0].targetSelectionRange, { start: { line: 2, character: 5 }, end: { line: 2, character: 9 }, }, 'function call: call'); }); it('should locate declarations within the same workspace', () => { let loc; loc = getDefLinks(refsDoc, 11, 4); chai_1.assert.isAtLeast(loc.length, 1); chai_1.assert.equal(loc[0].targetUri, headerDoc.uri); chai_1.assert.deepEqual(loc[0].targetSelectionRange, { start: { line: 9, character: 4 }, end: { line: 9, character: 9 }, }, 'global variable: aglob'); loc = getDefLinks(refsDoc, 16, 14); chai_1.assert.isAtLeast(loc.length, 1); chai_1.assert.equal(loc[0].targetUri, headerDoc.uri); chai_1.assert.deepEqual(loc[0].targetSelectionRange, { start: { line: 1, character: 11 }, end: { line: 1, character: 20 }, }, 'struct property access: submemeber'); }); it('should locate types of members in a struct', () => { let loc; loc = getDefLinks(headerDoc, 6, 4); chai_1.assert.isAtLeast(loc.length, 1); chai_1.assert.equal(loc[0].targetUri, headerDoc.uri); chai_1.assert.deepEqual(loc[0].targetSelectionRange, { start: { line: 0, character: 7 }, end: { line: 0, character: 21 }, }, 'struct decl member: container_t::sub'); }); it('include statement', () => { let loc; loc = getDefLinks(refsDoc, 0, 10); chai_1.assert.isAtLeast(loc.length, 1); chai_1.assert.deepEqual(loc[0].originSelectionRange, { start: { line: 0, character: 8 }, end: { line: 0, character: 16 }, }); }); }); //# sourceMappingURL=definitions.js.map