title: How to test that an intent has been broadcasted
body: <p>I am broadcasting an intent when a "record" button is clicked. a boolean variable is passed, that shows whether the recording is started or not. The code to generate an intent is:</p>
  
  <pre><code>Intent recordIntent = new Intent(ACTION_RECORDING_STATUS_CHANGED);
  recordIntent.putExtra(RECORDING_STARTED, getIsRecordingStarted());
  sendBroadcast(recordIntent);
  </code></pre>
  
  <p>To test this code I have registered a receiver in test. The intent is received but the variable passed is not the same. If I debug the code, I can see that the value is same as it is sent, but when I get it, its not the same value.</p>
  
  <pre><code>@Test
  public void pressingRecordButtonOnceGenerateStartRecordingIntent()
          throws Exception {
      // Assign
      AppActivity activity = new AppActivity();
      activity.onCreate(null);
      activity.onResume();
  
      activity.registerReceiver(new BroadcastReceiver() {
          @Override
          public void onReceive(Context arg0, Intent intent) {
              // Assert
              ShadowIntent shadowIntent = Robolectric.shadowOf(intent);
              assertThat(shadowIntent
                      .hasExtra(AppActivity.RECORDING_STARTED),
                      equalTo(true));
              Boolean expected = true;
              Boolean actual = shadowIntent.getExtras().getBoolean(
                      AppActivity.RECORDING_STARTED, false);
              assertThat(actual, equalTo(expected));
  
          }
      }, new IntentFilter(
              AppActivity.ACTION_RECORDING_STATUS_CHANGED));
  
      ImageButton recordButton = (ImageButton) activity
              .findViewById(R.id.recordBtn);
  
      // Act
      recordButton.performClick();
      ShadowHandler.idleMainLooper();
  
  }
  </code></pre>
  
  <p>I have also tested against the actual intent instead of its shadow, but same result</p>