rs_teststand/expression/function/
array.rs1#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
7pub enum ArrayFunction {
8 Contains,
10 FindIndex,
12 FindOffset,
14 GetArrayBounds,
16 GetNumElements,
18 IndexToOffset,
20 InsertElements,
22 OffsetToIndex,
24 RemoveElements,
26 SetArrayBounds,
28 SetElements,
30 SetNumElements,
32 Sort,
34}
35
36impl ArrayFunction {
37 pub const ALL: [Self; 13] = [
39 Self::Contains,
40 Self::FindIndex,
41 Self::FindOffset,
42 Self::GetArrayBounds,
43 Self::GetNumElements,
44 Self::IndexToOffset,
45 Self::InsertElements,
46 Self::OffsetToIndex,
47 Self::RemoveElements,
48 Self::SetArrayBounds,
49 Self::SetElements,
50 Self::SetNumElements,
51 Self::Sort,
52 ];
53
54 #[must_use]
56 pub const fn name(self) -> &'static str {
57 match self {
58 Self::Contains => "Contains",
59 Self::FindIndex => "FindIndex",
60 Self::FindOffset => "FindOffset",
61 Self::GetArrayBounds => "GetArrayBounds",
62 Self::GetNumElements => "GetNumElements",
63 Self::IndexToOffset => "IndexToOffset",
64 Self::InsertElements => "InsertElements",
65 Self::OffsetToIndex => "OffsetToIndex",
66 Self::RemoveElements => "RemoveElements",
67 Self::SetArrayBounds => "SetArrayBounds",
68 Self::SetElements => "SetElements",
69 Self::SetNumElements => "SetNumElements",
70 Self::Sort => "Sort",
71 }
72 }
73}
74
75#[cfg(test)]
76mod tests {
77 use super::ArrayFunction;
78
79 #[test]
80 fn every_name_is_distinct() {
81 let mut names: Vec<&str> = ArrayFunction::ALL.iter().map(|f| f.name()).collect();
82 names.sort_unstable();
83 let count = names.len();
84 names.dedup();
85 assert_eq!(names.len(), count);
86 }
87}