poulpy/poulpy-core/src/tests/mod.rs
poulpy-core/src/tests/mod.rsRaw
1pub mod test_suite;
2
3#[cfg(test)]
4mod serialization;
5
6#[allow(unused_imports)]
7use poulpy_hal::backend_test_suite;
8
9#[cfg(test)]
10backend_test_suite!(
11 mod cpu_spqlios,
12 backend = poulpy_backend::cpu_spqlios::FFT64Spqlios,
13 size = 1<<8,
14 tests = {
15 // GLWE Encryption
16 glwe_encrypt_sk => crate::tests::test_suite::encryption::test_glwe_encrypt_sk,
17 glwe_compressed_encrypt_sk => crate::tests::test_suite::encryption::test_glwe_compressed_encrypt_sk,
18 glwe_encrypt_zero_sk => crate::tests::test_suite::encryption::test_glwe_encrypt_zero_sk,
19 glwe_encrypt_pk => crate::tests::test_suite::encryption::test_glwe_encrypt_pk,
20 // GLWE Keyswitch
21 glwe_keyswitch => crate::tests::test_suite::keyswitch::test_glwe_keyswitch,
22 glwe_keyswitch_inplace => crate::tests::test_suite::keyswitch::test_glwe_keyswitch_inplace,
23 // GLWE Automorphism
24 glwe_automorphism => crate::tests::test_suite::automorphism::test_glwe_automorphism,
25 glwe_automorphism_inplace => crate::tests::test_suite::automorphism::test_glwe_automorphism_inplace,
26 // GLWE External Product
27 glwe_external_product => crate::tests::test_suite::external_product::test_glwe_external_product,
28 glwe_external_product_inplace => crate::tests::test_suite::external_product::test_glwe_external_product_inplace,
29 // GLWE Trace
30 glwe_trace_inplace => crate::tests::test_suite::test_glwe_trace_inplace,
31 glwe_packing => crate::tests::test_suite::test_glwe_packing,
32 // GGLWE Encryption
33 gglwe_switching_key_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_switching_key_encrypt_sk,
34 gglwe_switching_key_compressed_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_switching_key_compressed_encrypt_sk,
35 gglwe_automorphisk_key_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_automorphisk_key_encrypt_sk,
36 gglwe_automorphisk_key_compressed_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_automorphisk_key_compressed_encrypt_sk,
37 gglwe_tensor_key_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_tensor_key_encrypt_sk,
38 gglwe_tensor_key_compressed_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_tensor_key_compressed_encrypt_sk,
39 // GGLWE Keyswitching
40 gglwe_switching_key_keyswitch => crate::tests::test_suite::keyswitch::test_gglwe_switching_key_keyswitch,
41 gglwe_switching_key_keyswitch_inplace => crate::tests::test_suite::keyswitch::test_gglwe_switching_key_keyswitch_inplace,
42 // GGLWE External Product
43 gglwe_switching_key_external_product => crate::tests::test_suite::external_product::test_gglwe_switching_key_external_product,
44 gglwe_switching_key_external_product_inplace => crate::tests::test_suite::external_product::test_gglwe_switching_key_external_product_inplace,
45 // GGLWE Automorphism
46 gglwe_automorphism_key_automorphism => crate::tests::test_suite::automorphism::test_gglwe_automorphism_key_automorphism,
47 gglwe_automorphism_key_automorphism_inplace => crate::tests::test_suite::automorphism::test_gglwe_automorphism_key_automorphism_inplace,
48 // GGSW Encryption
49 ggsw_encrypt_sk => crate::tests::test_suite::encryption::test_ggsw_encrypt_sk,
50 ggsw_compressed_encrypt_sk => crate::tests::test_suite::encryption::test_ggsw_compressed_encrypt_sk,
51 // GGSW Keyswitching
52 ggsw_keyswitch => crate::tests::test_suite::keyswitch::test_ggsw_keyswitch,
53 ggsw_keyswitch_inplace => crate::tests::test_suite::keyswitch::test_ggsw_keyswitch_inplace,
54 // GGSW External Product
55 ggsw_external_product => crate::tests::test_suite::external_product::test_ggsw_external_product,
56 ggsw_external_product_inplace => crate::tests::test_suite::external_product::test_ggsw_external_product_inplace,
57 // GGSW Automorphism
58 ggsw_automorphism => crate::tests::test_suite::automorphism::test_ggsw_automorphism,
59 ggsw_automorphism_inplace => crate::tests::test_suite::automorphism::test_ggsw_automorphism_inplace,
60 // LWE
61 lwe_keyswitch => crate::tests::test_suite::keyswitch::test_lwe_keyswitch,
62 glwe_to_lwe => crate::tests::test_suite::test_glwe_to_lwe,
63 lwe_to_glwe => crate::tests::test_suite::test_lwe_to_glwe,
64 }
65);
66
67#[cfg(test)]
68backend_test_suite!(
69 mod cpu_ref,
70 backend = poulpy_backend::cpu_fft64_ref::FFT64Ref,
71 size = 1<<8,
72 tests = {
73 // GLWE Encryption
74 glwe_encrypt_sk => crate::tests::test_suite::encryption::test_glwe_encrypt_sk,
75 glwe_compressed_encrypt_sk => crate::tests::test_suite::encryption::test_glwe_compressed_encrypt_sk,
76 glwe_encrypt_zero_sk => crate::tests::test_suite::encryption::test_glwe_encrypt_zero_sk,
77 glwe_encrypt_pk => crate::tests::test_suite::encryption::test_glwe_encrypt_pk,
78 // GLWE Keyswitch
79 glwe_keyswitch => crate::tests::test_suite::keyswitch::test_glwe_keyswitch,
80 glwe_keyswitch_inplace => crate::tests::test_suite::keyswitch::test_glwe_keyswitch_inplace,
81 // GLWE Automorphism
82 glwe_automorphism => crate::tests::test_suite::automorphism::test_glwe_automorphism,
83 glwe_automorphism_inplace => crate::tests::test_suite::automorphism::test_glwe_automorphism_inplace,
84 // GLWE External Product
85 glwe_external_product => crate::tests::test_suite::external_product::test_glwe_external_product,
86 glwe_external_product_inplace => crate::tests::test_suite::external_product::test_glwe_external_product_inplace,
87 // GLWE Trace
88 glwe_trace_inplace => crate::tests::test_suite::test_glwe_trace_inplace,
89 glwe_packing => crate::tests::test_suite::test_glwe_packing,
90 // GGLWE Encryption
91 gglwe_switching_key_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_switching_key_encrypt_sk,
92 gglwe_switching_key_compressed_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_switching_key_compressed_encrypt_sk,
93 gglwe_automorphisk_key_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_automorphisk_key_encrypt_sk,
94 gglwe_automorphisk_key_compressed_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_automorphisk_key_compressed_encrypt_sk,
95 gglwe_tensor_key_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_tensor_key_encrypt_sk,
96 gglwe_tensor_key_compressed_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_tensor_key_compressed_encrypt_sk,
97 // GGLWE Keyswitching
98 gglwe_switching_key_keyswitch => crate::tests::test_suite::keyswitch::test_gglwe_switching_key_keyswitch,
99 gglwe_switching_key_keyswitch_inplace => crate::tests::test_suite::keyswitch::test_gglwe_switching_key_keyswitch_inplace,
100 // GGLWE External Product
101 gglwe_switching_key_external_product => crate::tests::test_suite::external_product::test_gglwe_switching_key_external_product,
102 gglwe_switching_key_external_product_inplace => crate::tests::test_suite::external_product::test_gglwe_switching_key_external_product_inplace,
103 // GGLWE Automorphism
104 gglwe_automorphism_key_automorphism => crate::tests::test_suite::automorphism::test_gglwe_automorphism_key_automorphism,
105 gglwe_automorphism_key_automorphism_inplace => crate::tests::test_suite::automorphism::test_gglwe_automorphism_key_automorphism_inplace,
106 // GGSW Encryption
107 ggsw_encrypt_sk => crate::tests::test_suite::encryption::test_ggsw_encrypt_sk,
108 ggsw_compressed_encrypt_sk => crate::tests::test_suite::encryption::test_ggsw_compressed_encrypt_sk,
109 // GGSW Keyswitching
110 ggsw_keyswitch => crate::tests::test_suite::keyswitch::test_ggsw_keyswitch,
111 ggsw_keyswitch_inplace => crate::tests::test_suite::keyswitch::test_ggsw_keyswitch_inplace,
112 // GGSW External Product
113 ggsw_external_product => crate::tests::test_suite::external_product::test_ggsw_external_product,
114 ggsw_external_product_inplace => crate::tests::test_suite::external_product::test_ggsw_external_product_inplace,
115 // GGSW Automorphism
116 ggsw_automorphism => crate::tests::test_suite::automorphism::test_ggsw_automorphism,
117 ggsw_automorphism_inplace => crate::tests::test_suite::automorphism::test_ggsw_automorphism_inplace,
118 // LWE
119 lwe_keyswitch => crate::tests::test_suite::keyswitch::test_lwe_keyswitch,
120 glwe_to_lwe => crate::tests::test_suite::test_glwe_to_lwe,
121 lwe_to_glwe => crate::tests::test_suite::test_lwe_to_glwe,
122 }
123);
124
125#[cfg(any(target_arch = "x86_64", target_arch = "x86"))]
126#[cfg(test)]
127backend_test_suite!(
128 mod cpu_avx,
129 backend = poulpy_backend::cpu_fft64_avx::FFT64Avx,
130 size = 1<<8,
131 tests = {
132 // GLWE Encryption
133 glwe_encrypt_sk => crate::tests::test_suite::encryption::test_glwe_encrypt_sk,
134 glwe_compressed_encrypt_sk => crate::tests::test_suite::encryption::test_glwe_compressed_encrypt_sk,
135 glwe_encrypt_zero_sk => crate::tests::test_suite::encryption::test_glwe_encrypt_zero_sk,
136 glwe_encrypt_pk => crate::tests::test_suite::encryption::test_glwe_encrypt_pk,
137 // GLWE Keyswitch
138 glwe_keyswitch => crate::tests::test_suite::keyswitch::test_glwe_keyswitch,
139 glwe_keyswitch_inplace => crate::tests::test_suite::keyswitch::test_glwe_keyswitch_inplace,
140 // GLWE Automorphism
141 glwe_automorphism => crate::tests::test_suite::automorphism::test_glwe_automorphism,
142 glwe_automorphism_inplace => crate::tests::test_suite::automorphism::test_glwe_automorphism_inplace,
143 // GLWE External Product
144 glwe_external_product => crate::tests::test_suite::external_product::test_glwe_external_product,
145 glwe_external_product_inplace => crate::tests::test_suite::external_product::test_glwe_external_product_inplace,
146 // GLWE Trace
147 glwe_trace_inplace => crate::tests::test_suite::test_glwe_trace_inplace,
148 glwe_packing => crate::tests::test_suite::test_glwe_packing,
149 // GGLWE Encryption
150 gglwe_switching_key_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_switching_key_encrypt_sk,
151 gglwe_switching_key_compressed_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_switching_key_compressed_encrypt_sk,
152 gglwe_automorphisk_key_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_automorphisk_key_encrypt_sk,
153 gglwe_automorphisk_key_compressed_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_automorphisk_key_compressed_encrypt_sk,
154 gglwe_tensor_key_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_tensor_key_encrypt_sk,
155 gglwe_tensor_key_compressed_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_tensor_key_compressed_encrypt_sk,
156 // GGLWE Keyswitching
157 gglwe_switching_key_keyswitch => crate::tests::test_suite::keyswitch::test_gglwe_switching_key_keyswitch,
158 gglwe_switching_key_keyswitch_inplace => crate::tests::test_suite::keyswitch::test_gglwe_switching_key_keyswitch_inplace,
159 // GGLWE External Product
160 gglwe_switching_key_external_product => crate::tests::test_suite::external_product::test_gglwe_switching_key_external_product,
161 gglwe_switching_key_external_product_inplace => crate::tests::test_suite::external_product::test_gglwe_switching_key_external_product_inplace,
162 // GGLWE Automorphism
163 gglwe_automorphism_key_automorphism => crate::tests::test_suite::automorphism::test_gglwe_automorphism_key_automorphism,
164 gglwe_automorphism_key_automorphism_inplace => crate::tests::test_suite::automorphism::test_gglwe_automorphism_key_automorphism_inplace,
165 // GGSW Encryption
166 ggsw_encrypt_sk => crate::tests::test_suite::encryption::test_ggsw_encrypt_sk,
167 ggsw_compressed_encrypt_sk => crate::tests::test_suite::encryption::test_ggsw_compressed_encrypt_sk,
168 // GGSW Keyswitching
169 ggsw_keyswitch => crate::tests::test_suite::keyswitch::test_ggsw_keyswitch,
170 ggsw_keyswitch_inplace => crate::tests::test_suite::keyswitch::test_ggsw_keyswitch_inplace,
171 // GGSW External Product
172 ggsw_external_product => crate::tests::test_suite::external_product::test_ggsw_external_product,
173 ggsw_external_product_inplace => crate::tests::test_suite::external_product::test_ggsw_external_product_inplace,
174 // GGSW Automorphism
175 ggsw_automorphism => crate::tests::test_suite::automorphism::test_ggsw_automorphism,
176 ggsw_automorphism_inplace => crate::tests::test_suite::automorphism::test_ggsw_automorphism_inplace,
177 // LWE
178 lwe_keyswitch => crate::tests::test_suite::keyswitch::test_lwe_keyswitch,
179 glwe_to_lwe => crate::tests::test_suite::test_glwe_to_lwe,
180 lwe_to_glwe => crate::tests::test_suite::test_lwe_to_glwe,
181 }
182);