react / wstein / node_modules / browserify / node_modules / insert-module-globals / node_modules / combine-source-map / node_modules / inline-source-map / node_modules / source-map / test / source-map / util.js
80620 views/* -*- Mode: js; js-indent-level: 2; -*- */1/*2* Copyright 2011 Mozilla Foundation and contributors3* Licensed under the New BSD license. See LICENSE or:4* http://opensource.org/licenses/BSD-3-Clause5*/6if (typeof define !== 'function') {7var define = require('amdefine')(module, require);8}9define(function (require, exports, module) {1011var util = require('../../lib/source-map/util');1213// This is a test mapping which maps functions from two different files14// (one.js and two.js) to a minified generated source.15//16// Here is one.js:17//18// ONE.foo = function (bar) {19// return baz(bar);20// };21//22// Here is two.js:23//24// TWO.inc = function (n) {25// return n + 1;26// };27//28// And here is the generated code (min.js):29//30// ONE.foo=function(a){return baz(a);};31// TWO.inc=function(a){return a+1;};32exports.testGeneratedCode = " ONE.foo=function(a){return baz(a);};\n"+33" TWO.inc=function(a){return a+1;};";34exports.testMap = {35version: 3,36file: 'min.js',37names: ['bar', 'baz', 'n'],38sources: ['one.js', 'two.js'],39sourceRoot: '/the/root',40mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA'41};42exports.testMapNoSourceRoot = {43version: 3,44file: 'min.js',45names: ['bar', 'baz', 'n'],46sources: ['one.js', 'two.js'],47mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA'48};49exports.testMapEmptySourceRoot = {50version: 3,51file: 'min.js',52names: ['bar', 'baz', 'n'],53sources: ['one.js', 'two.js'],54sourceRoot: '',55mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA'56};57// This mapping is identical to above, but uses the indexed format instead.58exports.indexedTestMap = {59version: 3,60file: 'min.js',61sections: [62{63offset: {64line: 0,65column: 066},67map: {68version: 3,69sources: [70"one.js"71],72sourcesContent: [73' ONE.foo = function (bar) {\n' +74' return baz(bar);\n' +75' };',76],77names: [78"bar",79"baz"80],81mappings: "CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID",82file: "min.js",83sourceRoot: "/the/root"84}85},86{87offset: {88line: 1,89column: 090},91map: {92version: 3,93sources: [94"two.js"95],96sourcesContent: [97' TWO.inc = function (n) {\n' +98' return n + 1;\n' +99' };'100],101names: [102"n"103],104mappings: "CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOA",105file: "min.js",106sourceRoot: "/the/root"107}108}109]110};111exports.indexedTestMapDifferentSourceRoots = {112version: 3,113file: 'min.js',114sections: [115{116offset: {117line: 0,118column: 0119},120map: {121version: 3,122sources: [123"one.js"124],125sourcesContent: [126' ONE.foo = function (bar) {\n' +127' return baz(bar);\n' +128' };',129],130names: [131"bar",132"baz"133],134mappings: "CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID",135file: "min.js",136sourceRoot: "/the/root"137}138},139{140offset: {141line: 1,142column: 0143},144map: {145version: 3,146sources: [147"two.js"148],149sourcesContent: [150' TWO.inc = function (n) {\n' +151' return n + 1;\n' +152' };'153],154names: [155"n"156],157mappings: "CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOA",158file: "min.js",159sourceRoot: "/different/root"160}161}162]163};164exports.testMapWithSourcesContent = {165version: 3,166file: 'min.js',167names: ['bar', 'baz', 'n'],168sources: ['one.js', 'two.js'],169sourcesContent: [170' ONE.foo = function (bar) {\n' +171' return baz(bar);\n' +172' };',173' TWO.inc = function (n) {\n' +174' return n + 1;\n' +175' };'176],177sourceRoot: '/the/root',178mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA'179};180exports.testMapRelativeSources = {181version: 3,182file: 'min.js',183names: ['bar', 'baz', 'n'],184sources: ['./one.js', './two.js'],185sourcesContent: [186' ONE.foo = function (bar) {\n' +187' return baz(bar);\n' +188' };',189' TWO.inc = function (n) {\n' +190' return n + 1;\n' +191' };'192],193sourceRoot: '/the/root',194mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA'195};196exports.emptyMap = {197version: 3,198file: 'min.js',199names: [],200sources: [],201mappings: ''202};203204205function assertMapping(generatedLine, generatedColumn, originalSource,206originalLine, originalColumn, name, map, assert,207dontTestGenerated, dontTestOriginal) {208if (!dontTestOriginal) {209var origMapping = map.originalPositionFor({210line: generatedLine,211column: generatedColumn212});213assert.equal(origMapping.name, name,214'Incorrect name, expected ' + JSON.stringify(name)215+ ', got ' + JSON.stringify(origMapping.name));216assert.equal(origMapping.line, originalLine,217'Incorrect line, expected ' + JSON.stringify(originalLine)218+ ', got ' + JSON.stringify(origMapping.line));219assert.equal(origMapping.column, originalColumn,220'Incorrect column, expected ' + JSON.stringify(originalColumn)221+ ', got ' + JSON.stringify(origMapping.column));222223var expectedSource;224225if (originalSource && map.sourceRoot && originalSource.indexOf(map.sourceRoot) === 0) {226expectedSource = originalSource;227} else if (originalSource) {228expectedSource = map.sourceRoot229? util.join(map.sourceRoot, originalSource)230: originalSource;231} else {232expectedSource = null;233}234235assert.equal(origMapping.source, expectedSource,236'Incorrect source, expected ' + JSON.stringify(expectedSource)237+ ', got ' + JSON.stringify(origMapping.source));238}239240if (!dontTestGenerated) {241var genMapping = map.generatedPositionFor({242source: originalSource,243line: originalLine,244column: originalColumn245});246assert.equal(genMapping.line, generatedLine,247'Incorrect line, expected ' + JSON.stringify(generatedLine)248+ ', got ' + JSON.stringify(genMapping.line));249assert.equal(genMapping.column, generatedColumn,250'Incorrect column, expected ' + JSON.stringify(generatedColumn)251+ ', got ' + JSON.stringify(genMapping.column));252}253}254exports.assertMapping = assertMapping;255256function assertEqualMaps(assert, actualMap, expectedMap) {257assert.equal(actualMap.version, expectedMap.version, "version mismatch");258assert.equal(actualMap.file, expectedMap.file, "file mismatch");259assert.equal(actualMap.names.length,260expectedMap.names.length,261"names length mismatch: " +262actualMap.names.join(", ") + " != " + expectedMap.names.join(", "));263for (var i = 0; i < actualMap.names.length; i++) {264assert.equal(actualMap.names[i],265expectedMap.names[i],266"names[" + i + "] mismatch: " +267actualMap.names.join(", ") + " != " + expectedMap.names.join(", "));268}269assert.equal(actualMap.sources.length,270expectedMap.sources.length,271"sources length mismatch: " +272actualMap.sources.join(", ") + " != " + expectedMap.sources.join(", "));273for (var i = 0; i < actualMap.sources.length; i++) {274assert.equal(actualMap.sources[i],275expectedMap.sources[i],276"sources[" + i + "] length mismatch: " +277actualMap.sources.join(", ") + " != " + expectedMap.sources.join(", "));278}279assert.equal(actualMap.sourceRoot,280expectedMap.sourceRoot,281"sourceRoot mismatch: " +282actualMap.sourceRoot + " != " + expectedMap.sourceRoot);283assert.equal(actualMap.mappings, expectedMap.mappings,284"mappings mismatch:\nActual: " + actualMap.mappings + "\nExpected: " + expectedMap.mappings);285if (actualMap.sourcesContent) {286assert.equal(actualMap.sourcesContent.length,287expectedMap.sourcesContent.length,288"sourcesContent length mismatch");289for (var i = 0; i < actualMap.sourcesContent.length; i++) {290assert.equal(actualMap.sourcesContent[i],291expectedMap.sourcesContent[i],292"sourcesContent[" + i + "] mismatch");293}294}295}296exports.assertEqualMaps = assertEqualMaps;297298});299300301