"use strict";

/* eslint-disable max-lines */
const ignore = require('ignore');

function checkIsPatternsMatchFilename(patterns, filename) {
  return patterns.length ? ignore({
    allowRelativePaths: true
  }).add(patterns).ignores(filename) : true;
}

const testCases = [{
  name: 'css selector',
  patterns: ['common.*', 'layout.*'],
  passtests: ['../../../client_build_tool/packages/client_build_tool/node_modules/react/common.css', '../../../client_build_tool/packages/client_build_tool/react/common.css', '../../../client_build_tool/packages/client_build_tool/node_modules/react/common/common.css', '../../../client_build_tool/packages/client_build_tool/node_modules/react/common/li/layout.css', '../../../client_build_tool/packages/client_build_tool/node_modules/react/common/li/common.css', '../../../client_build_tool/packages/client_build_tool/node_modules/react/layout.css', '../../../client_build_tool/packages/client_build_tool/react/layout.css', '../../../client_build_tool/packages/client_build_tool/node_modules/react/layout/layout.css', '../../../client_build_tool/packages/client_build_tool/node_modules/react/layout/li/common.css', '../../../client_build_tool/packages/client_build_tool/node_modules/react/layout/li/layout.css'],
  falltests: ['../../../client_build_tool/packages/client_build_tool/node_modules/react/common/locall.css', '../../../client_build_tool/packages/client_build_tool/node_modules/react/layout/locall.css', '../../../client_build_tool/packages/client_build_tool/node_modules/react/common/sdsd/locall.css', '../../../client_build_tool/packages/client_build_tool/node_modules/react/layout/sdfsdf/locall.css', '../../../client_build_tool/packages/client_build_tool/node_modules/react/klaklk.css']
}, {
  name: 'react.vendor',
  patterns: ['**/node_modules/react/', '**/node_modules/react-dom/'],
  passtests: ['../../../client_build_tool/packages/client_build_tool/node_modules/react/index.js', '../../../client_build_tool/packages/client_build_tool/node_modules/react/index.js', '../../../client_build_tool/packages/client_build_tool/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js', '../../../client_build_tool/packages/client_build_tool/node_modules/react-dom/index.js'],
  falltests: []
}, {
  name: 'vendor',
  patterns: ['node_modules', '!**/node_modules/react/', '!**/node_modules/react-dom/', '!*.css', '!**/publicPathConfig.js'],
  passtests: []
}, {
  name: 'src',
  patterns: ['**/src/**/*.css'],
  passtests: ['/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/index.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/One.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/As.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/A.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/AppearanceBox.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/components/IconContent/IconContent.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/components/Icon/Icon.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/components/Header/Header.css'],
  falltests: ['/Users/zohodesk-test/work/weirdo-components/examples/src/virtualizer/index.js', '/Users/zohodesk-test/work/client_build_tool/packages/client_build_tool/node_modules/scheduler/index.js', '/Users/zohodesk-test/work/client_build_tool/packages/client_build_tool/node_modules/scheduler/tracing.js', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/index.js', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/AppearanceBox.js', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/index.js', '/Users/zohodesk-test/work/weirdo-components/examples/src/virtualizer/index.js', '/Users/zohodesk-test/work/client_build_tool/packages/client_build_tool/node_modules/prop-types/index.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Container.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Box.js', './Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Container.js', './Users/zohodesk-test/work/weirdo-components/examples/node_modules/react-router-dom/esm/react-router-dom.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Box.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Container.module.cs', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Container.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Sub/Box.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Sub/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Sub/Container.module.cs', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Sub/Container.js'],
  // '.*@zohodesk\\/(icons)(?!.*\\/Appearance\\/).*\\.css$',
  size: 1
}, {
  name: 'icons',
  patterns: ['**/src/**/*.css', '**/@zohodesk/icons/**/*.css', '!**/@zohodesk/icons/**/Appearance/**'],
  passtests: ['/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Container.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/index.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/One.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/As.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/A.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/AppearanceBox.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/components/IconContent/IconContent.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/components/Icon/Icon.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/components/Header/Header.css'],
  falltests: ['/Users/zohodesk-test/work/weirdo-components/examples/src/virtualizer/index.js', '/Users/zohodesk-test/work/client_build_tool/packages/client_build_tool/node_modules/scheduler/index.js', '/Users/zohodesk-test/work/client_build_tool/packages/client_build_tool/node_modules/scheduler/tracing.js', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/index.js', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/index.js', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/AppearanceBox.js', '/Users/zohodesk-test/work/weirdo-components/examples/src/virtualizer/index.js', '/Users/zohodesk-test/work/client_build_tool/packages/client_build_tool/node_modules/prop-types/index.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Box.js', './Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Container.js', './Users/zohodesk-test/work/weirdo-components/examples/node_modules/react-router-dom/esm/react-router-dom.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Box.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Container.module.cs', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Container.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Sub/Box.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Sub/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Sub/Container.module.cs', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Sub/Container.js'],
  // '.*@zohodesk\\/(icons)(?!.*\\/Appearance\\/).*\\.css$',
  size: 1
}, {
  name: 'components|variables',
  patterns: ['**/@zohodesk/components/**/*.css', '**/@zohodesk/variables/**/*.css', '!**/@zohodesk/components/**/Appearance/**', '!**/@zohodesk/variables/**/Appearance/**'],
  passtests: ['/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/lib/components/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/lib/components/Container.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/es/components/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/es/components/Container.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/lib/components/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/lib/components/Container.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/es/components/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/es/components/Container.module.css'],
  falltests: ['/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/lib/components/Appearance/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/lib/components/Appearance/Container.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/es/components/Appearance/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/es/components/Appearance/Container.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/lib/components/Appearance/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/lib/components/Appearance/Container.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/es/components/Appearance/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/es/components/Appearance/Container.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/virtualizer/index.js', '/Users/zohodesk-test/work/client_build_tool/packages/client_build_tool/node_modules/scheduler/index.js', '/Users/zohodesk-test/work/client_build_tool/packages/client_build_tool/node_modules/scheduler/tracing.js', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/index.js', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/index.js', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/index.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/One.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/As.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/A.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/AppearanceBox.js', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/AppearanceBox.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/virtualizer/index.js', '/Users/zohodesk-test/work/client_build_tool/packages/client_build_tool/node_modules/prop-types/index.js', '/Users/zohodesk-test/work/weirdo-components/examples/src/components/IconContent/IconContent.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/components/Icon/Icon.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/components/Header/Header.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Box.js', './Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Container.js', './Users/zohodesk-test/work/weirdo-components/examples/node_modules/react-router-dom/esm/react-router-dom.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Box.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Container.module.cs', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Container.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Sub/Box.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Sub/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Sub/Container.module.cs', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Sub/Container.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/lib/components/Box.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/lib/components/Container.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/lib/components/Box.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/lib/components/Container.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Box.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/lib/components/Container.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/lib/components/Box.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Container.js'],
  // '.*@zohodesk\\/(icons)(?!.*\\/Appearance\\/).*\\.css$',
  size: 1
}, {
  name: 'styles',
  patterns: ['*.css', '!**/@zohodesk/components/**/*.css', '!**/@zohodesk/variables/**/*.css', '!**/@zohodesk/icons/**/*.css'],
  passtests: ['/Users/zohodesk-test/work/weirdo-components/examples/src/components/IconContent/IconContent.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/components/Icon/Icon.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/components/Header/Header.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/index.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/One.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/As.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/A.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/AppearanceBox.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/svg/lib/components/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/svg/lib/components/Container.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/svg/es/components/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/svg/es/components/Container.module.css'],
  falltests: ['/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/lib/components/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/lib/components/Container.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/es/components/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/es/components/Container.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/lib/components/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/lib/components/Container.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/es/components/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/es/components/Container.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/lib/components/Appearance/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/lib/components/Appearance/Container.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/es/components/Appearance/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/es/components/Appearance/Container.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/lib/components/Appearance/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/lib/components/Appearance/Container.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/es/components/Appearance/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/es/components/Appearance/Container.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/src/virtualizer/index.js', '/Users/zohodesk-test/work/client_build_tool/packages/client_build_tool/node_modules/scheduler/index.js', '/Users/zohodesk-test/work/client_build_tool/packages/client_build_tool/node_modules/scheduler/tracing.js', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/index.js', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/index.js', '/Users/zohodesk-test/work/weirdo-components/examples/src/Appearance/Header/SubHeader/AppearanceBox.js', '/Users/zohodesk-test/work/weirdo-components/examples/src/virtualizer/index.js', '/Users/zohodesk-test/work/client_build_tool/packages/client_build_tool/node_modules/prop-types/index.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Box.js', './Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Container.js', './Users/zohodesk-test/work/weirdo-components/examples/node_modules/react-router-dom/esm/react-router-dom.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Box.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Container.module.cs', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Container.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Sub/Box.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Sub/Box.module.css', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Sub/Container.module.cs', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Appearance/Sub/Container.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/lib/components/Box.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/lib/components/Container.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/components/lib/components/Box.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/lib/components/Container.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Box.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/lib/components/Container.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/variables/lib/components/Box.js', '/Users/zohodesk-test/work/weirdo-components/examples/node_modules/@zohodesk/icons/lib/components/Container.js'],
  // '.*@zohodesk\\/(icons)(?!.*\\/Appearance\\/).*\\.css$',
  size: 1
}];

function runTest(testSuite = testCases[0]) {
  describe(`test suite for '${testSuite.name}' patterns:${JSON.stringify(testSuite.patterns)}`, () => {
    const {
      patterns,
      passtests = [],
      falltests = []
    } = testSuite;
    it('passtests', () => {
      passtests.forEach(fileName => {
        const ans = checkIsPatternsMatchFilename(patterns, fileName); // we had made it as array for debug purpose

        expect([fileName, ans]).toStrictEqual([fileName, true]);
      });
    });
    it('falltests', () => {
      falltests.forEach(fileName => {
        const ans = checkIsPatternsMatchFilename(patterns, fileName); // we had made it as array for debug purpose

        expect([fileName, ans]).toStrictEqual([fileName, false]);
      });
    });
  });
}

testCases.forEach(runTest); // runTest(testCases[0]);