diff --git a/tests/tests-skeletons/check-PER-UniversalString.c b/tests/tests-skeletons/check-PER-UniversalString.c
index 1513fc2..eeba584 100644
--- a/tests/tests-skeletons/check-PER-UniversalString.c
+++ b/tests/tests-skeletons/check-PER-UniversalString.c
@@ -9,13 +9,21 @@
 check_encode_failed(asn_TYPE_descriptor_t *td, const char *buf, size_t buflen) {
     uint8_t uper_output_buffer[32];
     UniversalString_t *st_in;
+    char error_buf[128];
+    size_t error_buf_len = sizeof(error_buf);
 
     st_in = OCTET_STRING_new_fromBuf(td, buf, buflen);
     assert(st_in);
     assert(st_in->size == buflen);
-    asn_enc_rval_t enc =
-        uper_encode_to_buffer(&asn_DEF_UniversalString, st_in,
-                              uper_output_buffer, sizeof(uper_output_buffer));
+
+    /* First signal that something is wrong with the length */
+    int st_in_ct = asn_check_constraints(td, st_in, error_buf, &error_buf_len);
+    assert(st_in_ct != 0);
+    fprintf(stderr, "%s\n", error_buf);
+
+    /* Second signal that something is wrong with the length */
+    asn_enc_rval_t enc = uper_encode_to_buffer(td, st_in, uper_output_buffer,
+                                               sizeof(uper_output_buffer));
     assert(enc.encoded == -1);
 
     ASN_STRUCT_FREE(*td, st_in);
@@ -31,14 +39,18 @@
     assert(st_in);
     assert(st_in->size == buflen);
 
+    int st_in_ct = asn_check_constraints(td, st_in, NULL, NULL);
+    assert(st_in_ct == 0);
     asn_enc_rval_t enc =
-        uper_encode_to_buffer(&asn_DEF_UniversalString, st_in,
+        uper_encode_to_buffer(td, st_in,
                               uper_output_buffer, sizeof(uper_output_buffer));
     assert(enc.encoded > 0);
 
     asn_dec_rval_t dec =
         uper_decode(0, &asn_DEF_UniversalString, (void **)&st_out,
                     uper_output_buffer, (enc.encoded + 7) / 8, 0, 0);
+    int st_out_ct = asn_check_constraints(td, st_out, NULL, NULL);
+    assert(st_out_ct == 0);
     assert(dec.consumed == enc.encoded);
     assert(st_in->size == st_out->size);
     assert(memcmp(st_in->buf, st_out->buf, st_in->size) == 0);
