diff --git a/tests/main.c b/tests/main.c
index 3cf5bfbce94459f39263a9bc566258bb21243aee..ed326969164a6f07343e99e49cca13e4e015f7ff 100644
--- a/tests/main.c
+++ b/tests/main.c
@@ -248,6 +248,8 @@ int main() {
                    test_ngtcp2_conn_recv_version_negotiation) ||
       !CU_add_test(pSuite, "conn_send_initial_token",
                    test_ngtcp2_conn_send_initial_token) ||
+      !CU_add_test(pSuite, "conn_set_remote_transport_params",
+                   test_ngtcp2_conn_set_remote_transport_params) ||
       !CU_add_test(pSuite, "pkt_write_connection_close",
                    test_ngtcp2_pkt_write_connection_close) ||
       !CU_add_test(pSuite, "map", test_ngtcp2_map) ||
diff --git a/tests/ngtcp2_conn_test.c b/tests/ngtcp2_conn_test.c
index 8b64f3853d2bedef23d004c433d2815e075aaa11..39e39c1c42722dfa787d6ee10b6ea8502df13b6a 100644
--- a/tests/ngtcp2_conn_test.c
+++ b/tests/ngtcp2_conn_test.c
@@ -5128,6 +5128,106 @@ void test_ngtcp2_conn_send_initial_token(void) {
   ngtcp2_conn_del(conn);
 }
 
+void test_ngtcp2_conn_set_remote_transport_params(void) {
+  ngtcp2_conn *conn;
+  ngtcp2_transport_params params;
+  int rv;
+  ngtcp2_cid dcid;
+
+  dcid_init(&dcid);
+
+  /* client: Successful case */
+  setup_handshake_client(&conn);
+
+  memset(&params, 0, sizeof(params));
+  params.active_connection_id_limit = NGTCP2_DEFAULT_ACTIVE_CONNECTION_ID_LIMIT;
+  params.initial_scid = conn->dcid.current.cid;
+  params.original_dcid = conn->rcid;
+
+  rv = ngtcp2_conn_set_remote_transport_params(conn, &params);
+
+  CU_ASSERT(0 == rv);
+
+  ngtcp2_conn_del(conn);
+
+  /* client: Wrong original_dcid */
+  setup_handshake_client(&conn);
+
+  memset(&params, 0, sizeof(params));
+  params.active_connection_id_limit = NGTCP2_DEFAULT_ACTIVE_CONNECTION_ID_LIMIT;
+  params.initial_scid = conn->dcid.current.cid;
+
+  rv = ngtcp2_conn_set_remote_transport_params(conn, &params);
+
+  CU_ASSERT(NGTCP2_ERR_PROTO == rv);
+
+  ngtcp2_conn_del(conn);
+
+  /* client: Wrong initial_scid */
+  setup_handshake_client(&conn);
+
+  memset(&params, 0, sizeof(params));
+  params.active_connection_id_limit = NGTCP2_DEFAULT_ACTIVE_CONNECTION_ID_LIMIT;
+  params.original_dcid = conn->rcid;
+
+  rv = ngtcp2_conn_set_remote_transport_params(conn, &params);
+
+  CU_ASSERT(NGTCP2_ERR_PROTO == rv);
+
+  ngtcp2_conn_del(conn);
+
+  /* client: Receiving retry_scid when retry is not attempted */
+  setup_handshake_client(&conn);
+
+  memset(&params, 0, sizeof(params));
+  params.active_connection_id_limit = NGTCP2_DEFAULT_ACTIVE_CONNECTION_ID_LIMIT;
+  params.initial_scid = conn->dcid.current.cid;
+  params.original_dcid = conn->rcid;
+  params.retry_scid_present = 1;
+
+  rv = ngtcp2_conn_set_remote_transport_params(conn, &params);
+
+  CU_ASSERT(NGTCP2_ERR_PROTO == rv);
+
+  ngtcp2_conn_del(conn);
+
+  /* client: Receiving retry_scid */
+  setup_handshake_client(&conn);
+
+  conn->flags |= NGTCP2_CONN_FLAG_RECV_RETRY;
+  conn->retry_scid = dcid;
+
+  memset(&params, 0, sizeof(params));
+  params.active_connection_id_limit = NGTCP2_DEFAULT_ACTIVE_CONNECTION_ID_LIMIT;
+  params.initial_scid = conn->dcid.current.cid;
+  params.original_dcid = conn->rcid;
+  params.retry_scid_present = 1;
+  params.retry_scid = dcid;
+
+  rv = ngtcp2_conn_set_remote_transport_params(conn, &params);
+
+  CU_ASSERT(0 == rv);
+
+  ngtcp2_conn_del(conn);
+
+  /* client: Not receiving retry_scid when retry is attempted */
+  setup_handshake_client(&conn);
+
+  conn->flags |= NGTCP2_CONN_FLAG_RECV_RETRY;
+  conn->retry_scid = dcid;
+
+  memset(&params, 0, sizeof(params));
+  params.active_connection_id_limit = NGTCP2_DEFAULT_ACTIVE_CONNECTION_ID_LIMIT;
+  params.initial_scid = conn->dcid.current.cid;
+  params.original_dcid = conn->rcid;
+
+  rv = ngtcp2_conn_set_remote_transport_params(conn, &params);
+
+  CU_ASSERT(NGTCP2_ERR_PROTO == rv);
+
+  ngtcp2_conn_del(conn);
+}
+
 void test_ngtcp2_pkt_write_connection_close(void) {
   ngtcp2_ssize spktlen;
   uint8_t buf[1200];
diff --git a/tests/ngtcp2_conn_test.h b/tests/ngtcp2_conn_test.h
index cc992245bcf2ffe74d1a90ff8a262b275750ecbb..cb0d134a31f2a325813fa94b7b7ce39e4c3b6f7d 100644
--- a/tests/ngtcp2_conn_test.h
+++ b/tests/ngtcp2_conn_test.h
@@ -71,6 +71,7 @@ void test_ngtcp2_conn_recv_client_initial_token(void);
 void test_ngtcp2_conn_get_active_dcid(void);
 void test_ngtcp2_conn_recv_version_negotiation(void);
 void test_ngtcp2_conn_send_initial_token(void);
+void test_ngtcp2_conn_set_remote_transport_params(void);
 void test_ngtcp2_pkt_write_connection_close(void);
 
 #endif /* NGTCP2_CONN_TEST_H */