diff --git a/test/number_format_compact_icu_test.dart b/test/number_format_compact_icu_test.dart
index 250b580..5227795 100644
--- a/test/number_format_compact_icu_test.dart
+++ b/test/number_format_compact_icu_test.dart
@@ -159,14 +159,14 @@
   //     unumf_openForSkeletonAndLocale(u"precision-integer", -1, "en", &ec);
   // UFormattedNumber* uresult = unumf_openResult(&ec);
   // if (U_FAILURE(ec)) { return; }
-  final cLocale = Utf8.toUtf8(locale);
-  final cSkeleton = Utf16.toUtf16(skeleton);
-  final cErrorCode = allocate<Int32>(count: 1);
+  final cLocale = locale.toNativeUtf8();
+  final cSkeleton = skeleton.toNativeUtf16();
+  final cErrorCode = calloc<Int32>();
   cErrorCode.value = 0;
   final uformatter =
       unumf_openForSkeletonAndLocale!(cSkeleton, -1, cLocale, cErrorCode);
-  free(cSkeleton);
-  free(cLocale);
+  calloc.free(cSkeleton);
+  calloc.free(cLocale);
   var errorCode = cErrorCode.value;
   expect(errorCode, lessThanOrEqualTo(0),
       reason: u_errorName!(errorCode).toString());
@@ -201,7 +201,7 @@
   expect(errorCode, equals(15), // U_BUFFER_OVERFLOW_ERROR
       reason: u_errorName!(errorCode).toString());
   cErrorCode.value = 0;
-  final buffer = allocate<Utf16>(count: reqLen + 1);
+  final buffer = calloc<Uint16>(reqLen + 1).cast<Utf16>();
   unumf_resultToString!(uresult, buffer, reqLen + 1, cErrorCode);
   errorCode = cErrorCode.value;
   expect(errorCode, lessThanOrEqualTo(0),
@@ -211,11 +211,11 @@
   // // Cleanup:
   // unumf_close(uformatter);
   // unumf_closeResult(uresult);
-  // free(buffer);
+  // calloc.free(buffer);
   unumf_close!(uformatter);
   unumf_closeResult!(uresult);
-  free(buffer);
-  free(cErrorCode);
+  calloc.free(buffer);
+  calloc.free(cErrorCode);
 
   return result;
 }
