text: // Copyright 2009 the Sputnik authors.  All rights reserved.
  // This code is governed by the BSD license found in the LICENSE file.
  
  /*---
  info: |
      Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
      The result can be used either in a backreference (\ followed by a nonzero decimal number),
      referenced in a replace string,
      or returned as part of an array from the regular expression matching function
  es5id: 15.10.2.8_A3_T12
  description: Execute /(a(b(c)))(d(e(f)))/.exec("xabcdefg") and check results
  ---*/
  
  var __executed = /(a(b(c)))(d(e(f)))/.exec("xabcdefg");
  
  var __expected = ["abcdef","abc","bc","c","def","ef","f"];
  __expected.index = 1;
  __expected.input = "xabcdefg";
  
  assert.sameValue(
    __executed.length,
    __expected.length,
    'The value of __executed.length is expected to equal the value of __expected.length'
  );
  
  assert.sameValue(
    __executed.index,
    __expected.index,
    'The value of __executed.index is expected to equal the value of __expected.index'
  );
  
  assert.sameValue(
    __executed.input,
    __expected.input,
    'The value of __executed.input is expected to equal the value of __expected.input'
  );
  
  for(var index=0; index<__expected.length; index++) {
    assert.sameValue(
      __executed[index],
      __expected[index],
      'The value of __executed[index] is expected to equal the value of __expected[index]'
    );
  }
  