Test picture formatters on node display.
public function _testPictureFieldFormatters($scheme) {
  $field_name = drupal_strtolower($this
    ->randomName());
  $this
    ->createImageField($field_name, 'article', array(
    'uri_scheme' => $scheme,
  ));
  // Create a new node with an image attached.
  $test_image = current($this
    ->drupalGetTestFiles('image'));
  $nid = $this
    ->uploadNodeImage($test_image, $field_name, 'article');
  $node = node_load($nid, TRUE);
  // Test that the default formatter is being used.
  $image_uri = file_load($node->{$field_name}[Language::LANGCODE_NOT_SPECIFIED][0]['fid'])->uri;
  $image_info = array(
    'uri' => $image_uri,
    'width' => 40,
    'height' => 20,
  );
  $default_output = theme('image', $image_info);
  $this
    ->assertRaw($default_output, 'Default formatter displaying correctly on full node view.');
  // Use the picture formatter linked to file formatter.
  $display_options = array(
    'type' => 'picture',
    'module' => 'picture',
    'settings' => array(
      'image_link' => 'file',
    ),
  );
  $display = entity_get_display('node', 'article', 'default');
  $display
    ->setComponent($field_name, $display_options)
    ->save();
  $default_output = l(theme('image', $image_info), file_create_url($image_uri), array(
    'html' => TRUE,
  ));
  $this
    ->drupalGet('node/' . $nid);
  $this
    ->assertRaw($default_output, 'Image linked to file formatter displaying correctly on full node view.');
  // Verify that the image can be downloaded.
  $this
    ->assertEqual(file_get_contents($test_image->uri), $this
    ->drupalGet(file_create_url($image_uri)), 'File was downloaded successfully.');
  if ($scheme == 'private') {
    // Only verify HTTP headers when using private scheme and the headers are
    // sent by Drupal.
    $this
      ->assertEqual($this
      ->drupalGetHeader('Content-Type'), 'image/png', 'Content-Type header was sent.');
    $this
      ->assertTrue(strstr($this
      ->drupalGetHeader('Cache-Control'), 'private') !== FALSE, 'Cache-Control header was sent.');
    // Log out and try to access the file.
    $this
      ->drupalLogout();
    $this
      ->drupalGet(file_create_url($image_uri));
    $this
      ->assertResponse('403', 'Access denied to original image as anonymous user.');
    // Log in again.
    $this
      ->drupalLogin($this->admin_user);
  }
  // Use the picture formatter with a picture mapping.
  $display_options['settings']['picture_mapping'] = 'mapping_one';
  $display
    ->setComponent($field_name, $display_options)
    ->save();
  // Output should contain all image styles and all breakpoints.
  $this
    ->drupalGet('node/' . $nid);
  $this
    ->assertRaw('/styles/thumbnail/');
  $this
    ->assertRaw('/styles/medium/');
  $this
    ->assertRaw('/styles/large/');
  $this
    ->assertRaw('media="(min-width: 200px)"');
  $this
    ->assertRaw('media="(min-width: 400px)"');
  $this
    ->assertRaw('media="(min-width: 600px)"');
  // Test the fallback image style.
  $display_options['settings']['image_link'] = '';
  $display_options['settings']['fallback_image_style'] = 'large';
  $display
    ->setComponent($field_name, $display_options)
    ->save();
  $this
    ->drupalGet(image_style_url('large', $image_uri));
  $image_info['uri'] = $image_uri;
  $image_info['width'] = 480;
  $image_info['height'] = 240;
  $image_info['style_name'] = 'large';
  $default_output = '<noscript>' . theme('image_style', $image_info) . '</noscript>';
  $this
    ->drupalGet('node/' . $nid);
  $this
    ->assertRaw($default_output, 'Image style thumbnail formatter displaying correctly on full node view.');
  if ($scheme == 'private') {
    // Log out and try to access the file.
    $this
      ->drupalLogout();
    $this
      ->drupalGet(image_style_url('large', $image_uri));
    $this
      ->assertResponse('403', 'Access denied to image style thumbnail as anonymous user.');
  }
}