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
use crate::event_set::{Event, EventSet, Link};
use rand::Rng;
pub struct EiffelVocabulary;
const EVENT_TYPES: [&str; 23] = [
"EiffelActivityStartedEvent",
"EiffelActivityTriggeredEvent",
"EiffelActivityCanceledEvent",
"EiffelActivityFinishedEvent",
"EiffelArtifactCreatedEvent",
"EiffelArtifactPublishedEvent",
"EiffelArtifactReusedEvent",
"EiffelTestCaseStartedEvent",
"EiffelTestCaseTriggeredEvent",
"EiffelTestCaseCanceledEvent",
"EiffelTestCaseFinishedEvent",
"EiffelTestSuiteStartedEvent",
"EiffelTestExecutionRecipeCollectionCreatedEvent",
"EiffelTestSuiteFinishedEvent",
"EiffelAnnouncementPublishedEvent",
"EiffelCompositionDefinedEvent",
"EiffelConfidenceLevelModifiedEvent",
"EiffelEnvironmentDefinedEvent",
"EiffelFlowContextDefinedEvent",
"EiffelIssueDefinedEvent",
"EiffelIssueVerifiedEvent",
"EiffelSourceChangeCreatedEvent",
"EiffelSourceChangeSubmittedEvent",
];
impl From<EiffelVocabulary> for EventSet {
fn from(_: EiffelVocabulary) -> Self {
let mut builder = EventSet::build();
for eventtype in EVENT_TYPES {
let mut event = Event::new(eventtype.to_string(), "1.0.0");
let _randomrange = rand::thread_rng().gen_range(1..3);
for linknumber in 0.._randomrange {
event = event.with_link(format!("Link{linknumber}"));
}
builder = builder.add_event(event);
}
builder
.add_link(Link::new("Link0", true))
.add_link(Link::new("Link1", true))
.add_event(
Event::new("Event", "1.0.0")
.with_link("Link0")
.with_link("Link1"),
)
.build()
.expect("This should work")
}
}