gpui_query/core/
network_mode.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
10pub enum NetworkMode {
11 #[default]
13 Online,
14 Always,
16 OfflineFirst,
18}
19
20impl NetworkMode {
21 pub fn label(self) -> &'static str {
23 match self {
24 Self::Online => "Online",
25 Self::Always => "Always",
26 Self::OfflineFirst => "Offline first",
27 }
28 }
29}
30
31#[cfg(test)]
32mod tests {
33 use super::*;
34
35 #[test]
36 fn network_mode_labels() {
37 assert_eq!(NetworkMode::Online.label(), "Online");
38 assert_eq!(NetworkMode::Always.label(), "Always");
39 assert_eq!(NetworkMode::OfflineFirst.label(), "Offline first");
40 }
41
42 #[test]
43 fn network_mode_default_is_online() {
44 assert_eq!(NetworkMode::default(), NetworkMode::Online);
45 }
46
47 #[test]
48 fn network_mode_serde_roundtrip() {
49 for mode in [
50 NetworkMode::Online,
51 NetworkMode::Always,
52 NetworkMode::OfflineFirst,
53 ] {
54 let json = serde_json::to_string(&mode).unwrap();
55 let back: NetworkMode = serde_json::from_str(&json).unwrap();
56 assert_eq!(back, mode);
57 }
58 }
59
60 #[test]
61 fn network_mode_equality() {
62 assert_eq!(NetworkMode::Online, NetworkMode::Online);
63 assert_ne!(NetworkMode::Online, NetworkMode::Always);
64 assert_ne!(NetworkMode::Always, NetworkMode::OfflineFirst);
65 }
66}