text: /* eslint max-len: 0, no-magic-numbers: 0 */
  
  import assert from 'assert';
  import {eachTestCases, useSettingsWith} from '../util';
  
  /**
   * wrapper
   *
   * @param {Array} args arguments
   * @param {Array} settings settings of defaults
   * @return {String}
   */
  const wrapper = (args = [], settings = []) => `
  ${useSettingsWith(settings)}
  @use "src/lib/mixin";
  
  .selector {
    @include mixin.use-font-advanced-settings(${args.filter((arg) => arg !== false).join(', ')});
  }
  `;
  
  describe('@mixin use-font-advanced-settings(...)', () => {
  
    it('should out default properties if arguments not set.', async () => {
      const cases = [
        {
          params: [[]],
          expected:
  `.selector {
    font-feature-settings: "palt";
    -ms-font-feature-settings: normal;
  }`
        }
      ];
  
      await eachTestCases(
        cases,
        wrapper,
        ({error, result, expected}, {resolve, reject}) => {
          if (error) {
            return reject(error);
          }
  
          const actual = result.css.toString().trim();
  
          assert(actual === expected);
          return resolve();
        },
        {outputStyle: 'expanded'}
      );
    });
  
    it('should out properties with specified value if arguments is set.', async () => {
      const cases = [
        {
          params: [
            ['$feature-settings: "pkna"']
          ],
          expected:
  `.selector {
    font-feature-settings: "pkna";
    -ms-font-feature-settings: normal;
  }`
        }
      ];
  
      await eachTestCases(
        cases,
        wrapper,
        ({error, result, expected}, {resolve, reject}) => {
          if (error) {
            return reject(error);
          }
  
          const actual = result.css.toString().trim();
  
          assert(actual === expected);
          return resolve();
        },
        {outputStyle: 'expanded'}
      );
    });
  
  });
  