poulpy_core/tests/
mod.rs

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(test)]
126backend_test_suite!(
127    mod cpu_avx,
128    backend = poulpy_backend::cpu_fft64_avx::FFT64Avx,
129    size = 1<<8,
130    tests = {
131        // GLWE Encryption
132        glwe_encrypt_sk => crate::tests::test_suite::encryption::test_glwe_encrypt_sk,
133        glwe_compressed_encrypt_sk => crate::tests::test_suite::encryption::test_glwe_compressed_encrypt_sk,
134        glwe_encrypt_zero_sk => crate::tests::test_suite::encryption::test_glwe_encrypt_zero_sk,
135        glwe_encrypt_pk => crate::tests::test_suite::encryption::test_glwe_encrypt_pk,
136        // GLWE Keyswitch
137        glwe_keyswitch => crate::tests::test_suite::keyswitch::test_glwe_keyswitch,
138        glwe_keyswitch_inplace => crate::tests::test_suite::keyswitch::test_glwe_keyswitch_inplace,
139        // GLWE Automorphism
140        glwe_automorphism => crate::tests::test_suite::automorphism::test_glwe_automorphism,
141        glwe_automorphism_inplace => crate::tests::test_suite::automorphism::test_glwe_automorphism_inplace,
142        // GLWE External Product
143        glwe_external_product => crate::tests::test_suite::external_product::test_glwe_external_product,
144        glwe_external_product_inplace => crate::tests::test_suite::external_product::test_glwe_external_product_inplace,
145        // GLWE Trace
146        glwe_trace_inplace => crate::tests::test_suite::test_glwe_trace_inplace,
147        glwe_packing => crate::tests::test_suite::test_glwe_packing,
148        // GGLWE Encryption
149        gglwe_switching_key_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_switching_key_encrypt_sk,
150        gglwe_switching_key_compressed_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_switching_key_compressed_encrypt_sk,
151        gglwe_automorphisk_key_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_automorphisk_key_encrypt_sk,
152        gglwe_automorphisk_key_compressed_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_automorphisk_key_compressed_encrypt_sk,
153        gglwe_tensor_key_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_tensor_key_encrypt_sk,
154        gglwe_tensor_key_compressed_encrypt_sk => crate::tests::test_suite::encryption::test_gglwe_tensor_key_compressed_encrypt_sk,
155        // GGLWE Keyswitching
156        gglwe_switching_key_keyswitch => crate::tests::test_suite::keyswitch::test_gglwe_switching_key_keyswitch,
157        gglwe_switching_key_keyswitch_inplace => crate::tests::test_suite::keyswitch::test_gglwe_switching_key_keyswitch_inplace,
158        // GGLWE External Product
159        gglwe_switching_key_external_product => crate::tests::test_suite::external_product::test_gglwe_switching_key_external_product,
160        gglwe_switching_key_external_product_inplace => crate::tests::test_suite::external_product::test_gglwe_switching_key_external_product_inplace,
161        // GGLWE Automorphism
162        gglwe_automorphism_key_automorphism => crate::tests::test_suite::automorphism::test_gglwe_automorphism_key_automorphism,
163        gglwe_automorphism_key_automorphism_inplace => crate::tests::test_suite::automorphism::test_gglwe_automorphism_key_automorphism_inplace,
164        // GGSW Encryption
165        ggsw_encrypt_sk => crate::tests::test_suite::encryption::test_ggsw_encrypt_sk,
166        ggsw_compressed_encrypt_sk => crate::tests::test_suite::encryption::test_ggsw_compressed_encrypt_sk,
167        // GGSW Keyswitching
168        ggsw_keyswitch => crate::tests::test_suite::keyswitch::test_ggsw_keyswitch,
169        ggsw_keyswitch_inplace => crate::tests::test_suite::keyswitch::test_ggsw_keyswitch_inplace,
170        // GGSW External Product
171        ggsw_external_product => crate::tests::test_suite::external_product::test_ggsw_external_product,
172        ggsw_external_product_inplace => crate::tests::test_suite::external_product::test_ggsw_external_product_inplace,
173        // GGSW Automorphism
174        ggsw_automorphism => crate::tests::test_suite::automorphism::test_ggsw_automorphism,
175        ggsw_automorphism_inplace => crate::tests::test_suite::automorphism::test_ggsw_automorphism_inplace,
176        // LWE
177        lwe_keyswitch => crate::tests::test_suite::keyswitch::test_lwe_keyswitch,
178        glwe_to_lwe => crate::tests::test_suite::test_glwe_to_lwe,
179        lwe_to_glwe => crate::tests::test_suite::test_lwe_to_glwe,
180    }
181);