1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#[cfg(test)]
#[test]
fn test2() {
use rand::distributions::{Distribution, Uniform};
use versatile_data::*;
let dir = "./vd-test2/";
if std::path::Path::new(dir).exists() {
std::fs::remove_dir_all(dir).unwrap();
}
let mut data = Data::new(dir, DataOption::default());
let field_a = FieldName::new("a".into());
let field_b = FieldName::new("b".into());
let field_c = FieldName::new("c".into());
let mut rng = rand::thread_rng();
let die = Uniform::from(0..=100);
futures::executor::block_on(async {
for _ in 0..100 {
let a = die.sample(&mut rng);
let b = die.sample(&mut rng);
let c = die.sample(&mut rng);
data.insert(
Activity::Active,
Term::Default,
Term::Default,
[
(field_a.clone(), a.to_string().into()),
(field_b.clone(), b.to_string().into()),
(field_c.clone(), c.to_string().into()),
]
.into(),
)
.await;
}
/*
let r = {
let field_a = field_a.clone();
let field_b = field_b.clone();
let field_c = field_c.clone();
data.search_default()
.result_with_sort(vec![Order::Desc(OrderKey::CustomCmp(Box::new(
move |data, a, b| {
let a = (data.field_num(*a, &field_a)
+ data.field_num(*a, &field_b)
+ data.field_num(*a, &field_c))
/ 3.0;
let b = (data.field_num(*b, &field_a)
+ data.field_num(*b, &field_b)
+ data.field_num(*b, &field_c))
/ 3.0;
return a.partial_cmp(&b).unwrap();
},
)))])
.await
};
for r in r {
let a = data.field_num(r, &field_a);
let b = data.field_num(r, &field_b);
let c = data.field_num(r, &field_c);
println!("{} : {} : {} : {} / {}", r, a, b, c, (a + b + c) / 3.0);
} */
});
}