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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#![allow(missing_docs)]
use crate::header::NewEntryHeader;
use crate::prelude::*;
use ::fixt::prelude::*;
use rand::seq::IteratorRandom;
use std::iter::Iterator;
pub use holochain_zome_types::fixt::*;
fixturator!(
Permission;
unit variants [ Allow Deny ] empty Deny;
);
fixturator!(
HostFnAccess;
constructor fn new(Permission, Permission, Permission, Permission, Permission, Permission, Permission, Permission, Permission, Permission);
);
fixturator!(
CellId;
constructor fn new(DnaHash, AgentPubKey);
);
fixturator!(
NewEntryHeader;
variants [
Create(Create)
Update(Update)
];
curve PublicCurve {
match fixt!(NewEntryHeader) {
NewEntryHeader::Create(_) => NewEntryHeader::Create(fixt!(Create, PublicCurve)),
NewEntryHeader::Update(_) => NewEntryHeader::Update(fixt!(Update, PublicCurve)),
}
};
curve EntryType {
match fixt!(NewEntryHeader) {
NewEntryHeader::Create(_) => {
let ec = CreateFixturator::new_indexed(get_fixt_curve!(), get_fixt_index!()).next().unwrap();
NewEntryHeader::Create(ec)
},
NewEntryHeader::Update(_) => {
let eu = UpdateFixturator::new_indexed(get_fixt_curve!(), get_fixt_index!()).next().unwrap();
NewEntryHeader::Update(eu)
},
}
};
);
fn new_entry_element(entry: Entry, header_type: HeaderType, index: usize) -> Element {
let et = match entry {
Entry::App(_) | Entry::CounterSign(_, _) => EntryType::App(
AppEntryTypeFixturator::new_indexed(Unpredictable, index)
.next()
.unwrap(),
),
Entry::Agent(_) => EntryType::AgentPubKey,
Entry::CapClaim(_) => EntryType::CapClaim,
Entry::CapGrant(_) => EntryType::CapGrant,
};
match header_type {
HeaderType::Create => {
let c = CreateFixturator::new_indexed(et, index).next().unwrap();
let c = NewEntryHeader::Create(c);
let element: Element = ElementFixturator::new_indexed(c, index).next().unwrap();
let (shh, _) = element.into_inner();
Element::new(shh, Some(entry))
}
HeaderType::Update => {
let u = UpdateFixturator::new_indexed(et, index).next().unwrap();
let u = NewEntryHeader::Update(u);
let element: Element = ElementFixturator::new_indexed(u, index).next().unwrap();
let (shh, _) = element.into_inner();
Element::new(shh, Some(entry))
}
_ => panic!("You choose {:?} for an Element with en Entry", header_type),
}
}
type NewEntryElement = (Entry, HeaderType);
fixturator!(
Element;
vanilla fn element_with_no_entry(Signature, Header);
curve NewEntryHeader {
let s = SignatureFixturator::new_indexed(Unpredictable, get_fixt_index!()).next().unwrap();
element_with_no_entry(s, get_fixt_curve!().into())
};
curve Entry {
let et = match get_fixt_curve!() {
Entry::App(_) | Entry::CounterSign(_, _) => EntryType::App(AppEntryTypeFixturator::new_indexed(Unpredictable, get_fixt_index!()).next().unwrap()),
Entry::Agent(_) => EntryType::AgentPubKey,
Entry::CapClaim(_) => EntryType::CapClaim,
Entry::CapGrant(_) => EntryType::CapGrant,
};
let new = NewEntryHeaderFixturator::new_indexed(et, get_fixt_index!()).next().unwrap();
let (shh, _) = ElementFixturator::new_indexed(new, get_fixt_index!()).next().unwrap().into_inner();
Element::new(shh, Some(get_fixt_curve!()))
};
curve NewEntryElement {
new_entry_element(get_fixt_curve!().0, get_fixt_curve!().1, get_fixt_index!())
};
);
fixturator!(
ValidateData;
constructor fn new_element_only (Element);
);