1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4
5include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
6
7#[cfg(test)]
8mod tests {
9 use std::ffi::c_void;
10
11 use super::*;
12
13 const scalar_b: [u8; 16] = [4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128];
14 const scalar_a: [u8; 16] = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128];
15
16 #[test]
17 fn xsb233_add_looks_reasonable() {
18 unsafe {
19 let mut point_a: xsb233_point = xsb233_neutral.clone();
20 let mut point_b: xsb233_point = xsb233_neutral.clone();
21 let mut point_ab: xsb233_point = xsb233_neutral.clone();
22 let mut point_ba: xsb233_point = xsb233_neutral.clone();
23
24 xsb233_mulgen(&mut point_a, scalar_a.as_ptr() as *const c_void, 16);
25 xsb233_mulgen(&mut point_b, scalar_b.as_ptr() as *const c_void, 16);
26
27 xsb233_add(&mut point_ab, &point_a, &point_b);
28 xsb233_add(&mut point_ba, &point_b, &point_a);
29
30 assert_eq!(xsb233_equals(&point_a, &point_b), 0);
31 assert_eq!(xsb233_equals(&point_a, &point_ba), 0);
32 assert_eq!(xsb233_equals(&point_b, &point_ba), 0);
33 assert_eq!(xsb233_equals(&point_a, &point_ab), 0);
34 assert_eq!(xsb233_equals(&point_b, &point_ab), 0);
35 assert_eq!(xsb233_equals(&point_ab, &point_ba), 0xFFFFFFFF);
36 }
37 }
38
39 #[test]
40 fn xsk233_add_looks_reasonable() {
41 unsafe {
42 let mut point_a: xsk233_point = xsk233_neutral.clone();
43 let mut point_b: xsk233_point = xsk233_neutral.clone();
44 let mut point_ab: xsk233_point = xsk233_neutral.clone();
45 let mut point_ba: xsk233_point = xsk233_neutral.clone();
46
47 xsk233_mulgen(&mut point_a, scalar_a.as_ptr() as *const c_void, 16);
48 xsk233_mulgen(&mut point_b, scalar_b.as_ptr() as *const c_void, 16);
49
50 xsk233_add(&mut point_ab, &point_a, &point_b);
51 xsk233_add(&mut point_ba, &point_b, &point_a);
52
53 assert_eq!(xsk233_equals(&point_a, &point_b), 0);
54 assert_eq!(xsk233_equals(&point_a, &point_ba), 0);
55 assert_eq!(xsk233_equals(&point_b, &point_ba), 0);
56 assert_eq!(xsk233_equals(&point_a, &point_ab), 0);
57 assert_eq!(xsk233_equals(&point_b, &point_ab), 0);
58 assert_eq!(xsk233_equals(&point_ab, &point_ba), 0xFFFFFFFF);
59 }
60 }
61}