Skip to content

Commit a898c41

Browse files
willieyzmkannwischer
authored andcommitted
Backend unit tests: (mld_polyz_unpack/_c)
- Create test_unit.c and implement unit tests for mld_polyz_unpack and mld_polyz_unpack_c Signed-off-by: willieyz <willie.zhao@chelpis.com>
1 parent 61b69de commit a898c41

1 file changed

Lines changed: 51 additions & 4 deletions

File tree

test/test_unit.c

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ void mld_poly_pointwise_montgomery_c(mld_poly *c, const mld_poly *a,
4343
const mld_poly *b);
4444
void mld_polyvecl_pointwise_acc_montgomery_c(mld_poly *w, const mld_polyvecl *u,
4545
const mld_polyvecl *v);
46+
void mld_polyz_unpack_c(mld_poly *r, const uint8_t a[MLDSA_POLYZ_PACKEDBYTES]);
4647
#if defined(MLD_USE_NATIVE_NTT) || defined(MLD_USE_NATIVE_INTT) || \
4748
defined(MLD_USE_NATIVE_POLY_DECOMPOSE_32) || \
4849
defined(MLD_USE_NATIVE_POLY_DECOMPOSE_88) || \
@@ -53,7 +54,9 @@ void mld_polyvecl_pointwise_acc_montgomery_c(mld_poly *w, const mld_polyvecl *u,
5354
defined(MLD_USE_NATIVE_POINTWISE_MONTGOMERY) || \
5455
defined(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L4) || \
5556
defined(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L5) || \
56-
defined(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L7)
57+
defined(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L7) || \
58+
defined(MLD_USE_NATIVE_POLYZ_UNPACK_17) || \
59+
defined(MLD_USE_NATIVE_POLYZ_UNPACK_19)
5760
/* Backend unit test helper functions */
5861
static void print_i32_array(const char *label, const int32_t *array, size_t len)
5962
{
@@ -481,6 +484,41 @@ static int test_native_polyvecl_pointwise_acc_montgomery(void)
481484
MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L7 */
482485

483486

487+
#if defined(MLD_USE_NATIVE_POLYZ_UNPACK_17) || \
488+
defined(MLD_USE_NATIVE_POLYZ_UNPACK_19)
489+
static int test_mld_polyz_unpack_core(const uint8_t *input,
490+
const char *test_name)
491+
{
492+
mld_poly test_poly, ref_poly;
493+
494+
mld_polyz_unpack(&test_poly, input);
495+
mld_polyz_unpack_c(&ref_poly, input);
496+
497+
CHECK(compare_i32_arrays(test_poly.coeffs, ref_poly.coeffs, MLDSA_N,
498+
test_name, NULL));
499+
return 0;
500+
}
501+
502+
static int test_native_polyz_unpack(void)
503+
{
504+
uint8_t test_bytes[MLDSA_POLYZ_PACKEDBYTES];
505+
int i;
506+
507+
memset(test_bytes, 0, MLDSA_POLYZ_PACKEDBYTES);
508+
CHECK(test_mld_polyz_unpack_core(test_bytes, "polyz_unpack_zeros") == 0);
509+
510+
511+
for (i = 0; i < NUM_RANDOM_TESTS; i++)
512+
{
513+
randombytes(test_bytes, MLDSA_POLYZ_PACKEDBYTES);
514+
CHECK(test_mld_polyz_unpack_core(test_bytes, "polyz_unpack_random") == 0);
515+
}
516+
517+
return 0;
518+
}
519+
#endif /* MLD_USE_NATIVE_POLYZ_UNPACK_17 || MLD_USE_NATIVE_POLYZ_UNPACK_19 */
520+
521+
484522
static int test_backend_units(void)
485523
{
486524
/* Set fixed seed for reproducible tests */
@@ -523,6 +561,11 @@ static int test_backend_units(void)
523561
CHECK(test_native_polyvecl_pointwise_acc_montgomery() == 0);
524562
#endif
525563

564+
#if defined(MLD_USE_NATIVE_POLYZ_UNPACK_17) || \
565+
defined(MLD_USE_NATIVE_POLYZ_UNPACK_19)
566+
CHECK(test_native_polyz_unpack() == 0);
567+
#endif
568+
526569
return 0;
527570
}
528571
#endif /* MLD_USE_NATIVE_NTT || MLD_USE_NATIVE_INTT || \
@@ -532,7 +575,8 @@ static int test_backend_units(void)
532575
MLD_USE_NATIVE_POINTWISE_MONTGOMERY || \
533576
MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L4 || \
534577
MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L5 || \
535-
MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L7 */
578+
MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L7 || \
579+
MLD_USE_NATIVE_POLYZ_UNPACK_17 || MLD_USE_NATIVE_POLYZ_UNPACK_19 */
536580

537581
int main(void)
538582
{
@@ -551,7 +595,9 @@ int main(void)
551595
defined(MLD_USE_NATIVE_POINTWISE_MONTGOMERY) || \
552596
defined(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L4) || \
553597
defined(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L5) || \
554-
defined(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L7)
598+
defined(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L7) || \
599+
defined(MLD_USE_NATIVE_POLYZ_UNPACK_17) || \
600+
defined(MLD_USE_NATIVE_POLYZ_UNPACK_19)
555601
CHECK(test_backend_units() == 0);
556602
#endif /* MLD_USE_NATIVE_NTT || MLD_USE_NATIVE_INTT || \
557603
MLD_USE_NATIVE_POLY_DECOMPOSE_32 || MLD_USE_NATIVE_POLY_DECOMPOSE_88 \
@@ -560,7 +606,8 @@ int main(void)
560606
MLD_USE_NATIVE_POINTWISE_MONTGOMERY || \
561607
MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L4 || \
562608
MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L5 || \
563-
MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L7 */
609+
MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L7 || \
610+
MLD_USE_NATIVE_POLYZ_UNPACK_17 || MLD_USE_NATIVE_POLYZ_UNPACK_19 */
564611

565612

566613
return 0;

0 commit comments

Comments
 (0)