public function Twig_Tests_TemplateTest::getGetAttributeTests in Zircon Profile 8        
                          
                  
                        Same name and namespace in other branches
- 8.0 vendor/twig/twig/test/Twig/Tests/TemplateTest.php \Twig_Tests_TemplateTest::getGetAttributeTests()
 
 
File
 
   - vendor/twig/twig/test/Twig/Tests/TemplateTest.php, line 281
 
  
  Class
  
  - Twig_Tests_TemplateTest 
 
  
Code
public function getGetAttributeTests() {
  $array = array(
    'defined' => 'defined',
    'zero' => 0,
    'null' => null,
    '1' => 1,
    'bar' => true,
    '09' => '09',
    '+4' => '+4',
  );
  $objectArray = new Twig_TemplateArrayAccessObject();
  $stdObject = (object) $array;
  $magicPropertyObject = new Twig_TemplateMagicPropertyObject();
  $propertyObject = new Twig_TemplatePropertyObject();
  $propertyObject1 = new Twig_TemplatePropertyObjectAndIterator();
  $propertyObject2 = new Twig_TemplatePropertyObjectAndArrayAccess();
  $propertyObject3 = new Twig_TemplatePropertyObjectDefinedWithUndefinedValue();
  $methodObject = new Twig_TemplateMethodObject();
  $magicMethodObject = new Twig_TemplateMagicMethodObject();
  $anyType = Twig_Template::ANY_CALL;
  $methodType = Twig_Template::METHOD_CALL;
  $arrayType = Twig_Template::ARRAY_CALL;
  $basicTests = array(
    
    array(
      true,
      'defined',
      'defined',
    ),
    array(
      false,
      null,
      'undefined',
    ),
    array(
      false,
      null,
      'protected',
    ),
    array(
      true,
      0,
      'zero',
    ),
    array(
      true,
      1,
      1,
    ),
    array(
      true,
      1,
      1.0,
    ),
    array(
      true,
      null,
      'null',
    ),
    array(
      true,
      true,
      'bar',
    ),
    array(
      true,
      '09',
      '09',
    ),
    array(
      true,
      '+4',
      '+4',
    ),
  );
  $testObjects = array(
    
    array(
      $array,
      $arrayType,
    ),
    array(
      $objectArray,
      $arrayType,
    ),
    array(
      $stdObject,
      $anyType,
    ),
    array(
      $magicPropertyObject,
      $anyType,
    ),
    array(
      $methodObject,
      $methodType,
    ),
    array(
      $methodObject,
      $anyType,
    ),
    array(
      $propertyObject,
      $anyType,
    ),
    array(
      $propertyObject1,
      $anyType,
    ),
    array(
      $propertyObject2,
      $anyType,
    ),
  );
  $tests = array();
  foreach ($testObjects as $testObject) {
    foreach ($basicTests as $test) {
      
      if (($testObject[0] instanceof stdClass || $testObject[0] instanceof Twig_TemplatePropertyObject) && is_numeric($test[2])) {
        continue;
      }
      if ('+4' === $test[2] && $methodObject === $testObject[0]) {
        continue;
      }
      $tests[] = array(
        $test[0],
        $test[1],
        $testObject[0],
        $test[2],
        array(),
        $testObject[1],
      );
    }
  }
  
  $tests = array_merge($tests, array(
    array(
      true,
      null,
      $propertyObject3,
      'foo',
      array(),
      $anyType,
    ),
  ));
  
  $tests = array_merge($tests, array(
    array(
      true,
      'defined',
      $methodObject,
      'defined',
      array(),
      $methodType,
    ),
    array(
      true,
      'defined',
      $methodObject,
      'DEFINED',
      array(),
      $methodType,
    ),
    array(
      true,
      'defined',
      $methodObject,
      'getDefined',
      array(),
      $methodType,
    ),
    array(
      true,
      'defined',
      $methodObject,
      'GETDEFINED',
      array(),
      $methodType,
    ),
    array(
      true,
      'static',
      $methodObject,
      'static',
      array(),
      $methodType,
    ),
    array(
      true,
      'static',
      $methodObject,
      'getStatic',
      array(),
      $methodType,
    ),
    array(
      true,
      '__call_undefined',
      $magicMethodObject,
      'undefined',
      array(),
      $methodType,
    ),
    array(
      true,
      '__call_UNDEFINED',
      $magicMethodObject,
      'UNDEFINED',
      array(),
      $methodType,
    ),
  ));
  
  foreach ($tests as $test) {
    if ($anyType !== $test[5]) {
      $test[5] = $anyType;
      $tests[] = $test;
    }
  }
  $methodAndPropObject = new Twig_TemplateMethodAndPropObject();
  
  $tests = array_merge($tests, array(
    array(
      true,
      'a',
      $methodAndPropObject,
      'a',
      array(),
      $anyType,
    ),
    array(
      true,
      'a',
      $methodAndPropObject,
      'a',
      array(),
      $methodType,
    ),
    array(
      false,
      null,
      $methodAndPropObject,
      'a',
      array(),
      $arrayType,
    ),
    array(
      true,
      'b_prop',
      $methodAndPropObject,
      'b',
      array(),
      $anyType,
    ),
    array(
      true,
      'b',
      $methodAndPropObject,
      'B',
      array(),
      $anyType,
    ),
    array(
      true,
      'b',
      $methodAndPropObject,
      'b',
      array(),
      $methodType,
    ),
    array(
      true,
      'b',
      $methodAndPropObject,
      'B',
      array(),
      $methodType,
    ),
    array(
      false,
      null,
      $methodAndPropObject,
      'b',
      array(),
      $arrayType,
    ),
    array(
      false,
      null,
      $methodAndPropObject,
      'c',
      array(),
      $anyType,
    ),
    array(
      false,
      null,
      $methodAndPropObject,
      'c',
      array(),
      $methodType,
    ),
    array(
      false,
      null,
      $methodAndPropObject,
      'c',
      array(),
      $arrayType,
    ),
  ));
  
  $tests = array_merge($tests, array(
    array(
      false,
      null,
      42,
      'a',
      array(),
      $anyType,
      false,
      'Impossible to access an attribute ("a") on a integer variable ("42")',
    ),
    array(
      false,
      null,
      'string',
      'a',
      array(),
      $anyType,
      false,
      'Impossible to access an attribute ("a") on a string variable ("string")',
    ),
    array(
      false,
      null,
      array(),
      'a',
      array(),
      $anyType,
      false,
      'Key "a" does not exist as the array is empty',
    ),
  ));
  
  if (function_exists('twig_template_get_attributes')) {
    foreach (array_slice($tests, 0) as $test) {
      $test = array_pad($test, 7, null);
      $test[6] = true;
      $tests[] = $test;
    }
  }
  return $tests;
}