/*
 * Copyright 2012, Mozilla Foundation and contributors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

'use strict';

// THIS FILE IS GENERATED FROM SOURCE IN THE GCLI PROJECT
// PLEASE TALK TO SOMEONE IN DEVELOPER TOOLS BEFORE EDITING IT

const exports = {};

function test() {
  helpers.runTestModule(exports, "browser_gcli_string.js");
}

// var helpers = require('./helpers');

exports.testNewLine = function(options) {
  return helpers.audit(options, [
    {
      setup:    'echo a\\nb',
      check: {
        input:  'echo a\\nb',
        hints:            '',
        markup: 'VVVVVVVVV',
        cursor: 9,
        current: 'message',
        status: 'VALID',
        args: {
          command: { name: 'echo' },
          message: {
            value: 'a\nb',
            arg: ' a\\nb',
            status: 'VALID',
            message: ''
          }
        }
      }
    }
  ]);
};

exports.testTab = function(options) {
  return helpers.audit(options, [
    {
      setup:    'echo a\\tb',
      check: {
        input:  'echo a\\tb',
        hints:            '',
        markup: 'VVVVVVVVV',
        cursor: 9,
        current: 'message',
        status: 'VALID',
        args: {
          command: { name: 'echo' },
          message: {
            value: 'a\tb',
            arg: ' a\\tb',
            status: 'VALID',
            message: ''
          }
        }
      }
    }
  ]);
};

exports.testEscape = function(options) {
  return helpers.audit(options, [
    {
      // What's typed is actually:
      //         tsrsrsr a\\ b c
      setup:    'tsrsrsr a\\\\ b c',
      check: {
        input:  'tsrsrsr a\\\\ b c',
        hints:                 '',
        markup: 'VVVVVVVVVVVVVVV',
        status: 'VALID',
        message: '',
        args: {
          command: { name: 'tsrsrsr' },
          p1: { value: 'a\\', arg: ' a\\\\', status: 'VALID', message: '' },
          p2: { value: 'b', arg: ' b', status: 'VALID', message: '' },
          p3: { value: 'c', arg: ' c', status: 'VALID', message: '' },
        }
      }
    },
    {
      // What's typed is actually:
      //         tsrsrsr abc\\ndef asd asd
      setup:    'tsrsrsr abc\\\\ndef asd asd',
      check: {
        input:  'tsrsrsr abc\\\\ndef asd asd',
        hints:                           '',
        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVV',
        status: 'VALID',
        message: '',
        args: {
          command: { name: 'tsrsrsr' },
          p1: {
            value: 'abc\\ndef',
            arg: ' abc\\\\ndef',
            status: 'VALID',
            message: ''
          },
          p2: { value: 'asd', arg: ' asd', status: 'VALID', message: '' },
          p3: { value: 'asd', arg: ' asd', status: 'VALID', message: '' },
        }
      }
    }
  ]);
};

exports.testBlank = function(options) {
  return helpers.audit(options, [
    {
      setup:    'tsrsrsr a "" c',
      check: {
        input:  'tsrsrsr a "" c',
        hints:                '',
        markup: 'VVVVVVVVVVVVVV',
        cursor: 14,
        current: 'p3',
        status: 'ERROR',
        message: '',
        args: {
          command: { name: 'tsrsrsr' },
          p1: {
            value: 'a',
            arg: ' a',
            status: 'VALID',
            message: ''
          },
          p2: {
            value: undefined,
            arg: ' ""',
            status: 'INCOMPLETE'
          },
          p3: {
            value: 'c',
            arg: ' c',
            status: 'VALID',
            message: ''
          }
        }
      }
    },
    {
      setup:    'tsrsrsr a b ""',
      check: {
        input:  'tsrsrsr a b ""',
        hints:                '',
        markup: 'VVVVVVVVVVVVVV',
        cursor: 14,
        current: 'p3',
        status: 'VALID',
        message: '',
        args: {
          command: { name: 'tsrsrsr' },
          p1: {
            value: 'a',
            arg: ' a',
            status:'VALID',
            message: '' },
          p2: {
            value: 'b',
            arg: ' b',
            status: 'VALID',
            message: ''
          },
          p3: {
            value: '',
            arg: ' ""',
            status: 'VALID',
            message: ''
          }
        }
      }
    }
  ]);
};

exports.testBlankWithParam = function(options) {
  return helpers.audit(options, [
    {
      setup:    'tsrsrsr  a --p3',
      check: {
        input:  'tsrsrsr  a --p3',
        hints:                 ' <string> <p2>',
        markup: 'VVVVVVVVVVVVVVV',
        cursor: 15,
        current: 'p3',
        status: 'ERROR',
        message: '',
        args: {
          command: { name: 'tsrsrsr' },
          p1: { value: 'a', arg: '  a', status: 'VALID', message: '' },
          p2: { value: undefined, arg: '', status: 'INCOMPLETE' },
          p3: { value: '', arg: ' --p3', status: 'VALID', message: '' },
        }
      }
    },
    {
      setup:    'tsrsrsr  a --p3 ',
      check: {
        input:  'tsrsrsr  a --p3 ',
        hints:                  '<string> <p2>',
        markup: 'VVVVVVVVVVVVVVVV',
        cursor: 16,
        current: 'p3',
        status: 'ERROR',
        message: '',
        args: {
          command: { name: 'tsrsrsr' },
          p1: { value: 'a', arg: '  a', status: 'VALID', message: '' },
          p2: { value: undefined, arg: '', status: 'INCOMPLETE' },
          p3: { value: '', arg: ' --p3 ', status: 'VALID', message: '' },
        }
      }
    },
    {
      setup:    'tsrsrsr  a --p3 "',
      check: {
        input:  'tsrsrsr  a --p3 "',
        hints:                   ' <p2>',
        markup: 'VVVVVVVVVVVVVVVVV',
        cursor: 17,
        current: 'p3',
        status: 'ERROR',
        message: '',
        args: {
          command: { name: 'tsrsrsr' },
          p1: { value: 'a', arg: '  a', status: 'VALID', message: '' },
          p2: { value: undefined, arg: '', status: 'INCOMPLETE' },
          p3: { value: '', arg: ' --p3 "', status: 'VALID', message: '' },
        }
      }
    },
    {
      setup:    'tsrsrsr  a --p3 ""',
      check: {
        input:  'tsrsrsr  a --p3 ""',
        hints:                    ' <p2>',
        markup: 'VVVVVVVVVVVVVVVVVV',
        cursor: 18,
        current: 'p3',
        status: 'ERROR',
        message: '',
        args: {
          command: { name: 'tsrsrsr' },
          p1: { value: 'a', arg: '  a', status: 'VALID', message: '' },
          p2: { value: undefined, arg: '', status: 'INCOMPLETE' },
          p3: { value: '', arg: ' --p3 ""', status: 'VALID', message: '' },
        }
      }
    }
  ]);
};
