text: 'use strict'
  module.exports = [
    {
      should: 'Should auto rename selectors having no directional decl. unless forced to ignore. (autoRename:true)',
      expected: '.right .rtl .bright .ultra { display:block; }',
      input: '/*rtl:ignore*/ .right .rtl .bright .ultra { display:block; }',
      reversable: false,
      options: { autoRename: true }
    },
    {
      should: 'Should auto rename selectors having no directional decl. unless forced to ignore. (autoRename:true, clean: false)',
      expected: '/*rtl:ignore*/ .right .rtl .bright .ultra { display:block; }',
      input: '/*rtl:ignore*/ .right .rtl .bright .ultra { display:block; }',
      reversable: false,
      options: { autoRename: true, clean: false }
    },
    {
      should: 'Should auto rename selectors having no directional decl. unless forced to ignore. (autoRename:true, !important comment)',
      expected: '.right .rtl .bright .ultra { display:block; }',
      input: '/*!rtl:ignore*/ .right .rtl .bright .ultra { display:block; }',
      reversable: false,
      options: { autoRename: true }
    },
    {
      should: 'Should auto rename selectors having no directional decl. unless forced to ignore. (autoRename:true, clean:false, !important comment)',
      expected: '/*!rtl:ignore*/ .right .rtl .bright .ultra { display:block; }',
      input: '/*!rtl:ignore*/ .right .rtl .bright .ultra { display:block; }',
      reversable: false,
      options: { autoRename: true, clean: false }
    },
    {
      should: 'Should auto rename selectors having no directional decl. unless forced to ignore. (autoRename:true,greedy)',
      expected: '.right .rtl .bright .ultra { display:block; }',
      input: '/*rtl:ignore*/ .right .rtl .bright .ultra { display:block; }',
      reversable: false,
      options: { autoRename: true, greedy: true }
    },
    {
      should: 'Should auto rename selectors having no directional decl. unless forced to ignore. (autoRename:true, greedy, !important comment)',
      expected: '.right .rtl .bright .ultra { display:block; }',
      input: '/*!rtl:ignore*/ .right .rtl .bright .ultra { display:block; }',
      reversable: false,
      options: { autoRename: true, greedy: true }
    },
    {
      should: 'Should rename selectors when forced. (default)',
      expected: '.left .ltr .bright .ultra { display:block; }',
      input: '/*rtl:rename*/.right .rtl .bright .ultra { display:block; }',
      reversable: false
    },
    {
      should: 'Should rename selectors when forced. (clean:false)',
      expected: '/*rtl:rename*/.left .ltr .bright .ultra { display:block; left:0;}',
      input: '/*rtl:rename*/.right .rtl .bright .ultra { display:block; right:0;}',
      reversable: false,
      options: { clean: false }
    },
    {
      should: 'Should rename selectors when forced. (!important comment)',
      expected: '.left .ltr .bright .ultra { display:block; left:0; }',
      input: '/*!rtl:rename*/.right .rtl .bright .ultra { display:block; right:0; }',
      reversable: false
    },
    {
      should: 'Should rename selectors when forced. (clean:false, !important comment)',
      expected: '/*!rtl:rename*/.left .ltr .bright .ultra { display:block; left:0; }',
      input: '/*!rtl:rename*/.right .rtl .bright .ultra { display:block; right:0; }',
      reversable: false,
      options: { clean: false }
    },
    {
      should: 'Should rename selectors when forced. (greedy)',
      expected: '.left .ltr .bleft .urtla { display:block; left:0; }',
      input: '/*rtl:rename*/.right .rtl .bright .ultra { display:block; right:0; }',
      reversable: false,
      options: { greedy: true }
    },
    {
      should: 'Should rename selectors when forced. (greedy, !important comment)',
      expected: '.left .ltr .bleft .urtla { display:block; left:0; }',
      input: '/*!rtl:rename*/.right .rtl .bright .ultra { display:block; right:0; }',
      reversable: false,
      options: { greedy: true }
    },
    {
      should: 'Should prepend value. (default)',
      expected: 'div { font-family: "Droid Arabic Kufi", "Droid Sans", Tahoma }',
      input: 'div { font-family: /*rtl:prepend:"Droid Arabic Kufi", */"Droid Sans", Tahoma }',
      reversable: false
    },
    {
      should: 'Should prepend value. (clean:false)',
      expected: 'div { font-family: "Droid Arabic Kufi", "Droid Sans", Tahoma/*rtl:prepend:"Droid Arabic Kufi", */; }',
      input: 'div { font-family: "Droid Sans", Tahoma/*rtl:prepend:"Droid Arabic Kufi", */; }',
      reversable: false,
      options: { clean: false }
    },
    {
      should: 'Should prepend value (!important comment)',
      expected: 'div { font-family: "Droid Arabic Kufi", "Droid Sans", Tahoma!important; }',
      input: 'div { font-family: "Droid Sans", Tahoma!important/*!rtl:prepend:"Droid Arabic Kufi", */; }',
      reversable: false
    },
    {
      should: 'Should prepend value (clean:false, !important comment)',
      expected: 'div { font-family: "Droid Arabic Kufi", "Droid Sans", Tahoma/*!rtl:prepend:"Droid Arabic Kufi", */; }',
      input: 'div { font-family: "Droid Sans", Tahoma/*!rtl:prepend:"Droid Arabic Kufi", */; }',
      reversable: false,
      options: { clean: false }
    },
    {
      should: 'Should replace value.',
      expected: 'div { font-family: "Droid Arabic Kufi" }',
      input: 'div { font-family: /*rtl:"Droid Arabic Kufi"*/"Droid Sans", Tahoma }',
      reversable: false
    },
    {
      should: 'Should replace value.(clean:false)',
      expected: 'div { font-family: "Droid Arabic Kufi"/*rtl:"Droid Arabic Kufi"*/; }',
      input: 'div { font-family: "Droid Sans", Tahoma/*rtl:"Droid Arabic Kufi"*/; }',
      reversable: false,
      options: { clean: false }
    },
    {
      should: 'Should replace value. (!important comment)',
      expected: 'div { font-family: "Droid Arabic Kufi"; }',
      input: 'div { font-family: "Droid Sans", Tahoma/*!rtl:"Droid Arabic Kufi"*/; }',
      reversable: false
    },
    {
      should: 'Should replace value. (clean:false, !important comment)',
      expected: 'div { font-family: "Droid Arabic Kufi"/*!rtl:"Droid Arabic Kufi"*/; }',
      input: 'div { font-family: "Droid Sans", Tahoma/*!rtl:"Droid Arabic Kufi"*/; }',
      reversable: false,
      options: { clean: false }
    },
    {
      should: 'Should append value. (default)',
      expected: 'div { font-family: "Droid Sans", Tahoma, "Droid Arabic Kufi" }',
      input: 'div { font-family: /*rtl:append:, "Droid Arabic Kufi"*/"Droid Sans", Tahoma }',
      reversable: false
    },
    {
      should: 'Should append value. (clean:false)',
      expected: 'div { font-family: "Droid Sans", Tahoma/*rtl:append:, "Droid Arabic Kufi"*/, "Droid Arabic Kufi"; }',
      input: 'div { font-family: "Droid Sans", Tahoma/*rtl:append:, "Droid Arabic Kufi"*/; }',
      reversable: false,
      options: { clean: false }
    },
    {
      should: 'Should append value. (!important comment)',
      expected: 'div { font-family: "Droid Sans", Tahoma, "Droid Arabic Kufi"; }',
      input: 'div { font-family: "Droid Sans", Tahoma/*!rtl:append:, "Droid Arabic Kufi"*/; }',
      reversable: false
    },
    {
      should: 'Should append value. (clean:false, !important comment)',
      expected: 'div { font-family: "Droid Sans", Tahoma/*!rtl:append:, "Droid Arabic Kufi"*/, "Droid Arabic Kufi"; }',
      input: 'div { font-family: "Droid Sans", Tahoma/*!rtl:append:, "Droid Arabic Kufi"*/; }',
      reversable: false,
      options: { clean: false }
    },
    {
      should: 'Should insert value. (default)',
      expected: 'div { font-family: "Droid Arabic Kufi", "Droid Sans", Tahoma }',
      input: 'div { font-family: /*rtl:insert:"Droid Arabic Kufi", */"Droid Sans", Tahoma }',
      reversable: false
    },
    {
      should: 'Should insert value. (clean:false)',
      expected: 'div { font-family: "Droid Sans", "Droid Arabic Kufi"/*rtl:insert:, "Droid Arabic Kufi"*/, Tahoma; }',
      input: 'div { font-family: "Droid Sans"/*rtl:insert:, "Droid Arabic Kufi"*/, Tahoma; }',
      reversable: false,
      options: { clean: false }
    },
    {
      should: 'Should insert value. (!important comment)',
      expected: 'div { font-family: "Droid Sans", "Droid Arabic Kufi", Tahoma; }',
      input: 'div { font-family: "Droid Sans"/*!rtl:insert:, "Droid Arabic Kufi"*/, Tahoma; }',
      reversable: false
    },
    {
      should: 'Should insert value. (clean:false, !important comment)',
      expected: 'div { font-family: "Droid Sans", "Droid Arabic Kufi"/*!rtl:insert:, "Droid Arabic Kufi"*/, Tahoma; }',
      input: 'div { font-family: "Droid Sans"/*!rtl:insert:, "Droid Arabic Kufi"*/, Tahoma; }',
      reversable: false,
      options: { clean: false }
    },
    {
      should: 'Should ignore flipping - rule level (default)',
      expected: 'div { left:10px; text-align:right;}',
      input: '/*rtl:ignore*/div { left:10px; text-align:right;}',
      reversable: false
    },
    {
      should: 'Should ignore flipping - rule level (clean:false)',
      expected: '/*rtl:ignore*/div { left:10px; text-align:right;}',
      input: '/*rtl:ignore*/div { left:10px; text-align:right;}',
      reversable: false,
      options: { clean: false }
    },
    {
      should: 'Should ignore flipping - rule level (default, !important comment)',
      expected: 'div { left:10px; text-align:right;}',
      input: '/*!rtl:ignore*/div { left:10px; text-align:right;}',
      reversable: false
    },
    {
      should: 'Should ignore flipping - rule level (clean:false , !important comment)',
      expected: '/*!rtl:ignore*/div { left:10px; text-align:right;}',
      input: '/*!rtl:ignore*/div { left:10px; text-align:right;}',
      reversable: false,
      options: { clean: false }
    },
    {
      should: 'Should ignore flipping - decl. level (default)',
      expected: 'div { left:10px;text-align:right}',
      input: 'div { left:10px/*rtl:ignore*/;text-align:/*rtl:ignore*/right}',
      reversable: false
    },
    {
      should: 'Should ignore flipping - decl. level (clean:false)',
      expected: 'div { left:10px/*rtl:ignore*/;text-align:left;}',
      input: 'div { left:10px/*rtl:ignore*/;text-align:right;}',
      reversable: false,
      options: { clean: false }
    },
    {
      should: 'Should ignore flipping - decl. level (default, !important comment)',
      expected: 'div { left:10px;text-align:left;}',
      input: 'div { left:10px/*!rtl:ignore*/;text-align:right;}',
      reversable: false
    },
    {
      should: 'Should ignore flipping - decl. level (clean:false, !important comment)',
      expected: 'div { left:10px/*!rtl:ignore*/;text-align:left;}',
      input: 'div { left:10px/*!rtl:ignore*/;text-align:right;}',
      options: { clean: false }
    },
    {
      should: 'Should add raw css rules',
      expected: 'div { left:10px;text-align:right;} a {display:block;}',
      input: '/*rtl:raw:div { left:10px;text-align:right;}*/ a {display:block;}',
      reversable: false
    },
    {
      should: 'Should add raw css declarations',
      expected: 'div { font-family: "Droid Kufi Arabic"; right:10px;text-align:left;}',
      input: 'div { /*rtl:raw: font-family: "Droid Kufi Arabic";*/ left:10px;text-align:right;}',
      reversable: false
    },
    {
      should: 'Should add raw css (clean:false)',
      expected: 'div { left:10px;text-align:right;} /*rtl:raw:div { left:10px;text-align:right;}*/ a {display:block;}',
      input: '/*rtl:raw:div { left:10px;text-align:right;}*/ a {display:block;}',
      reversable: false,
      options: { clean: false }
    },
    {
      should: 'Should add raw css declarations (clean:false)',
      expected: 'div { font-family: "Droid Kufi Arabic"; /*rtl:raw: font-family: "Droid Kufi Arabic";*/ right:10px;text-align:left;}',
      input: 'div { /*rtl:raw: font-family: "Droid Kufi Arabic";*/ left:10px;text-align:right;}',
      reversable: false,
      options: { clean: false }
    },
    {
      should: 'Should support block-style',
      expected: ' div {left:10px; text-align:right;}',
      input: ' div {/*rtl:begin:ignore*/left:10px;/*rtl:end:ignore*/ text-align:left;}',
      reversable: false
    },
    {
      should: 'Should support none block-style',
      expected: ' div {left:10px; text-align:left;}',
      input: ' /*rtl:ignore*/div {left:10px; text-align:left;}',
      reversable: false
    },
    {
      should: 'Should remove rules (block-style)',
      expected: ' b{float:right;}',
      input: ' /*rtl:begin:remove*/div {left:10px; text-align:left;} a { display:block;} /*rtl:end:remove*/ b{float:left;}',
      reversable: false
    },
    {
      should: 'Should remove rules',
      expected: ' a { display:block;} b{float:right;}',
      input: ' /*rtl:remove*/div {left:10px; text-align:left;} a { display:block;} b{float:left;}',
      reversable: false
    },
    {
      should: 'Should remove declarations',
      expected: ' div { text-align:right;}',
      input: ' div {/*rtl:remove*/left:10px; text-align:left;}',
      reversable: false
    },
    {
      should: 'Should remove declarations (block-style)',
      expected: ' div { display:inline;}',
      input: ' div {/*rtl:begin:remove*/left:10px; text-align:left;/*rtl:end:remove*/ display:inline;}',
      reversable: false
    },
    {
      should: 'Should override options',
      expected: '.right { display:inline;}',
      input: '/*rtl:options:{"autoRename":false}*/ .right { display:inline;}',
      reversable: false,
      options: { autoRename: true }
    },
    {
      should: 'Should support nested options override',
      expected: '.right { display:inline;}.bleft { display:inline;}',
      input: '/*rtl:begin:options:{"autoRename":false}*/ .right { display:inline;} /*rtl:begin:options:{"autoRename":true, "greedy": true}*/.bright { display:inline;}/*rtl:end:options*//*rtl:end:options*/',
      reversable: false,
      options: { autoRename: true }
    },
    {
      should: 'Should ignore the target node (decl)',
      expected: `
      .code {
        direction:ltr;
        text-align:left;
        float: right;
        text-align: left;
      }
      `,
      input: `
      .code {
        /*rtl:ignore*/
        direction:ltr;
        /*rtl:ignore*/
        text-align:left;
        /*rtl:ignore*/
        float: right;
        /*rtl:ignore*/
        text-align: left;
      }
      `,
      reversable: false
    },
    {
      should: 'Should ignore the target node (rule)',
      expected: `
        .example-1 {
          text-align:right;
          left:10px;
        }
        .example-2 {
          left:10px;
          text-align:right;
        }
        .example-3 {
          right:10px;
          text-align:left;
        }
      `,
      input: `
        /*rtl:ignore*/
        .example-1 {
          text-align:right;
          left:10px;
        }
        /*rtl:ignore*/
        .example-2 {
          left:10px;
          text-align:right;
        }
        .example-3 {
          left:10px;
          text-align:right;
        }
      `,
      reversable: false
    },
    {
      should: 'Should ignore the target node (atrule)',
      expected: `
        @media screen and (max-width: 568px) {
          .example {
            left:10px;
            text-align:right;
          }
        }
  
        @media screen and (max-width: 568px) {
          .example {
            right:10px;
            text-align:left;
          }
        }
      `,
      input: `
        /*rtl:ignore*/
        @media screen and (max-width: 568px) {
          .example {
            left:10px;
            text-align:right;
          }
        }
  
        @media screen and (max-width: 568px) {
          .example {
            left:10px;
            text-align:right;
          }
        }
      `,
      reversable: false
    },
    {
      should: 'Should ignore white spaces before value directive prefix',
      expected: ' div { direction:ltr; text-align:right;}',
      input: ' div { direction:ltr/*  rtl:ignore*/; text-align:left;}',
      reversable: false
    },
    {
      should: 'Should ignore white spaces before value directive perfix (!important comment)',
      expected: ' div { direction:ltr; text-align:right;}',
      input: ' div { direction:ltr/*  !rtl:ignore*/; text-align:left;}',
      reversable: false
    },
    {
      should: 'Should ignore white spaces before directive prefix (block-style) ',
      expected: ' div { direction:ltr; text-align:right;}',
      input: ' div {/*  rtl:begin:ignore*/ direction:ltr;/*  rtl:end:ignore*/ text-align:left;}',
      reversable: false
    },
    {
      should: 'Should ignore white spaces before directive prefix (block-style, !important comment) ',
      expected: ' div { direction:ltr; text-align:right;}',
      input: ' div {/*  !rtl:begin:ignore*/ direction:ltr;/*  ! rtl:end:ignore*/ text-align:left;}',
      reversable: false
    }
  ]
  