diff --git a/firmware/test/card_emu_tests.c b/firmware/test/card_emu_tests.c
index 120748e..03dcf60 100644
--- a/firmware/test/card_emu_tests.c
+++ b/firmware/test/card_emu_tests.c
@@ -144,11 +144,42 @@
 	}
 }
 
+static void get_and_verify_rctx(int state, const char *data, unsigned int len)
+{
+	struct req_ctx *rctx;
+	struct cardemu_usb_msg_tx_data *td;
+	struct cardemu_usb_msg_rx_data *rd;
+
+	rctx = req_ctx_find_get(0, state, RCTX_S_USB_TX_BUSY);
+	assert(rctx);
+	dump_rctx(rctx);
+
+	/* verify the contents of the rctx */
+	switch (state) {
+	case RCTX_S_USB_TX_PENDING:
+		td = (struct cardemu_usb_msg_tx_data *) rctx->data;
+		assert(td->hdr.msg_type == CEMU_USB_MSGT_DO_RX_DATA);
+		assert(td->hdr.data_len == len);
+		assert(!memcmp(td->data, data, len));
+		break;
+#if 0
+	case RCTX_S_UART_RX_PENDING:
+		rd = (struct cardemu_usb_msg_rx_data *) rctx->data;
+		assert(rd->hdr.data_len == len);
+		assert(!memcmp(rd->data, data, len));
+		break;
+#endif
+	default:
+		assert(0);
+	}
+
+	/* free the req_ctx, indicating it has fully arrived on the host */
+	req_ctx_set_state(rctx, RCTX_S_FREE);
+}
+
 /* emulate a TPDU header being sent by the reader/phone */
 static void rdr_send_tpdu_hdr(struct card_handle *ch, const uint8_t *tpdu_hdr)
 {
-	struct req_ctx *rctx;
-
 	/* we don't want a receive context to become available during
 	 * the first four bytes */
 	reader_send_bytes(ch, tpdu_hdr, 4);
@@ -157,12 +188,7 @@
 	reader_send_bytes(ch, tpdu_hdr+4, 1);
 	/* but then after the final byte of the TPDU header, we want a
 	 * receive context to be available for USB transmission */
-	rctx = req_ctx_find_get(0, RCTX_S_USB_TX_PENDING, RCTX_S_USB_TX_BUSY);
-	assert(rctx);
-	dump_rctx(rctx);
-
-	/* free the req_ctx, indicating it has fully arrived on the host */
-	req_ctx_set_state(rctx, RCTX_S_FREE);
+	get_and_verify_rctx(RCTX_S_USB_TX_PENDING, tpdu_hdr, 5);
 }
 
 /* emulate a CEMU_USB_MSGT_DT_TX_DATA received from USB */
@@ -206,14 +232,13 @@
 static void
 test_tpdu_reader2card(struct card_handle *ch, const uint8_t *hdr, const uint8_t *body, uint8_t body_len)
 {
-	struct req_ctx *rctx;
-
 	printf("\n==> transmitting APDU (HDR + PB + card-RX)\n");
 
 	/* emulate the reader sending a TPDU header */
 	rdr_send_tpdu_hdr(ch, hdr);
 	/* we shouldn't have any pending card-TX yet */
 	assert(!card_tx_print_chars(ch));
+
 	/* card emulator PC sends a singly byte PB response via USB */
 	host_to_device_data(hdr+1, 1, CEMU_DATA_F_FINAL | CEMU_DATA_F_PB_AND_RX);
 	/* card actually sends that single PB */
@@ -223,10 +248,7 @@
 	reader_send_bytes(ch, body, body_len);
 
 	/* check if we have received them on the USB side */
-	rctx = req_ctx_find_get(0, RCTX_S_USB_TX_PENDING, RCTX_S_USB_TX_BUSY);
-	assert(rctx);
-	dump_rctx(rctx);
-	req_ctx_set_state(rctx, RCTX_S_FREE);
+	get_and_verify_rctx(RCTX_S_USB_TX_PENDING, body, body_len);
 
 	/* ensure there is no extra data received on usb */
 	assert(!req_ctx_find_get(0, RCTX_S_USB_TX_PENDING, RCTX_S_USB_TX_BUSY));
