suite('forEachExt / formatResult (large-project/results):', () =>
         {
            const largeProjectJSON = require('typhonjs-escomplex-test-data/files/large-project/json/project');

            const projectResult = ProjectReport.parse(largeProjectJSON).finalize();

            TransformFormat.forEachExt('xml', (format, formatName) =>
            {
               test(`formatName: ${formatName}`, () =>
               {
                  const output = format.formatResult(projectResult);

                  const original = fs.readFileSync(
                   `./test/fixture/files/large-project/project-${formatName}.${format.extension}`, 'utf8');

                  assert.strictEqual(output, original);
               });
            });
         });
         suite('forEachExt / formatReport (large-module/report):', () =>
         {
            const largeModuleJSON = require('typhonjs-escomplex-test-data/files/large-module/json/module');

            const moduleReport = ModuleReport.parse(largeModuleJSON).finalize();

            TransformFormat.forEachExt('xml', (format, formatName) =>
            {
               test(`formatName: ${formatName}`, () =>
               {
                  const output = format.formatReport(moduleReport);

                  const original = fs.readFileSync(
                   `./test/fixture/files/large-module/module-${formatName}.${format.extension}`, 'utf8');

                  assert.strictEqual(output, original);
               });
            });
         });
import TransformFormat     from 'typhonjs-escomplex-commons/src/transform/TransformFormat';

import FormatXML           from './FormatXML';
import FormatXMLCheckstyle from './FormatXMLCheckstyle';

/**
 * Iterates through all `json` formats creating a FormatXML instance for each one. `checkstyle` format types need to
 * be transformed and are processed by `FormatXMLCheckstyle`.
 */
TransformFormat.forEachExt('json', (jsonFormat, jsonFormatName) =>
{
   // Create format name by substituting any leading `json` string for `xml`.
   let formatName = jsonFormatName.replace(/^json/, 'xml');

   // If the format name isn't prepended with `xml` then add it.
   if (!formatName.startsWith('xml')) { formatName = `xml-${formatName}`; }

   switch (jsonFormat.type)
   {
      case 'checkstyle':
         TransformFormat.addFormat(new FormatXMLCheckstyle(formatName, jsonFormat.type, jsonFormatName));
         break;

      default:
         TransformFormat.addFormat(new FormatXML(formatName, jsonFormat.type, jsonFormatName));
         break;
   }
});