1#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
12pub enum UserPrivilege {
13 Abort,
15 ConfigAdapter,
17 ConfigApp,
19 ConfigDatabase,
21 ConfigEngine,
23 ConfigModel,
25 ConfigReport,
27 Configure,
29 CtrlExecFlow,
31 Debug,
33 Develop,
35 EditProcessModelFiles,
37 EditRuntimeVariables,
39 EditSequenceFiles,
41 EditStationGlobals,
43 EditTemplates,
45 EditTypes,
47 EditUsers,
49 EditWorkspace,
51 Execute,
53 GrantAll,
55 LoopSelectedTests,
57 Operate,
59 RunAnySequence,
61 RunSelectedTests,
63 SaveSequenceFiles,
65 SinglePass,
67 Terminate,
69 UseSourceControl,
71}
72
73impl UserPrivilege {
74 pub const ALL: [Self; 29] = [
76 Self::Abort,
77 Self::ConfigAdapter,
78 Self::ConfigApp,
79 Self::ConfigDatabase,
80 Self::ConfigEngine,
81 Self::ConfigModel,
82 Self::ConfigReport,
83 Self::Configure,
84 Self::CtrlExecFlow,
85 Self::Debug,
86 Self::Develop,
87 Self::EditProcessModelFiles,
88 Self::EditRuntimeVariables,
89 Self::EditSequenceFiles,
90 Self::EditStationGlobals,
91 Self::EditTemplates,
92 Self::EditTypes,
93 Self::EditUsers,
94 Self::EditWorkspace,
95 Self::Execute,
96 Self::GrantAll,
97 Self::LoopSelectedTests,
98 Self::Operate,
99 Self::RunAnySequence,
100 Self::RunSelectedTests,
101 Self::SaveSequenceFiles,
102 Self::SinglePass,
103 Self::Terminate,
104 Self::UseSourceControl,
105 ];
106
107 #[must_use]
112 pub const fn name(self) -> &'static str {
113 match self {
114 Self::Abort => "Abort",
115 Self::ConfigAdapter => "ConfigAdapter",
116 Self::ConfigApp => "ConfigApp",
117 Self::ConfigDatabase => "ConfigDatabase",
118 Self::ConfigEngine => "ConfigEngine",
119 Self::ConfigModel => "ConfigModel",
120 Self::ConfigReport => "ConfigReport",
121 Self::Configure => "Configure",
122 Self::CtrlExecFlow => "ControlExecFlow",
123 Self::Debug => "Debug",
124 Self::Develop => "Develop",
125 Self::EditProcessModelFiles => "EditProcessModelFiles",
126 Self::EditRuntimeVariables => "EditRuntimeVariables",
127 Self::EditSequenceFiles => "EditSequenceFiles",
128 Self::EditStationGlobals => "EditStationGlobals",
129 Self::EditTemplates => "EditTemplates",
130 Self::EditTypes => "EditTypes",
131 Self::EditUsers => "EditUsers",
132 Self::EditWorkspace => "EditWorkspace",
133 Self::Execute => "Execute",
134 Self::GrantAll => "GrantAll",
135 Self::LoopSelectedTests => "LoopSelectedTests",
136 Self::Operate => "Operate",
137 Self::RunAnySequence => "RunAnySequence",
138 Self::RunSelectedTests => "RunSelectedTests",
139 Self::SaveSequenceFiles => "SaveSequenceFiles",
140 Self::SinglePass => "SinglePass",
141 Self::Terminate => "Terminate",
142 Self::UseSourceControl => "UseSourceControl",
143 }
144 }
145}
146
147#[cfg(test)]
148mod tests {
149 use super::UserPrivilege;
150
151 #[test]
152 fn every_privilege_name_is_distinct() {
153 let mut names: Vec<&str> = UserPrivilege::ALL.iter().map(|p| p.name()).collect();
154 names.sort_unstable();
155 let count = names.len();
156 names.dedup();
157 assert_eq!(names.len(), count);
158 }
159
160 #[test]
161 fn the_constant_and_its_value_can_differ() {
162 assert_eq!(UserPrivilege::CtrlExecFlow.name(), "ControlExecFlow");
165 assert_eq!(UserPrivilege::Debug.name(), "Debug");
166 }
167}