diff --git a/riven/src/consts/queue_type.rs b/riven/src/consts/queue_type.rs index 7044574..b8e595d 100644 --- a/riven/src/consts/queue_type.rs +++ b/riven/src/consts/queue_type.rs @@ -1,3 +1,11 @@ +/////////////////////////////////////////////// +// // +// ! // +// This file is automatically generated! // +// Do not directly edit! // +// // +/////////////////////////////////////////////// + use strum_macros::{ EnumString, EnumVariantNames, IntoStaticStr }; /// LoL or TFT ranked queue types. @@ -5,83 +13,33 @@ use strum_macros::{ EnumString, EnumVariantNames, IntoStaticStr }; #[derive(Debug, Clone)] #[derive(Eq, PartialEq, Hash)] #[derive(EnumString, EnumVariantNames, IntoStaticStr)] +#[repr(u8)] pub enum QueueType { /// Catch-all variant for new, unknown queue types. #[strum(default)] UNKNOWN(String), - /// League of Legends, Summoner's Rift (5v5), Ranked Solo Queue. + /// 5v5 Ranked Solo games RANKED_SOLO_5x5, - /// League of Legends, Summoner's Rift (5v5), Flex Queue. + /// 5v5 Ranked Flex games RANKED_FLEX_SR, - /// League of Legends, Twisted Treeline (3v3), Flex Queue. + /// 3v3 Ranked Flex games + /// Deprecated in patch 9.23 + #[deprecated(note="Deprecated in patch 9.23")] RANKED_FLEX_TT, - /// Ranked Teamfight Tactics. + /// Ranked Teamfight Tactics games RANKED_TFT, - /// Ranked Teamfight Tactics, Hyper Roll gamemode. + /// Ranked Teamfight Tactics (Hyper Roll) games RANKED_TFT_TURBO, - /// Ranked Teamfight Tactics, Double Up gamemode. - RANKED_TFT_DOUBLE_UP, - - /// Ranked Teamfight Tactics, OLD Double Up gamemode. Changed some time before June 2022. - #[deprecated(note="Use RANKED_TFT_DOUBLE_UP instead.")] + /// Ranked Teamfight Tactics (Double Up Workshop) games + /// Deprecated in patch 12.11 in favor of queueId 1160 + #[deprecated(note="Deprecated in patch 12.11 in favor of queueId 1160")] RANKED_TFT_PAIRS, + /// Ranked Teamfight Tactics (Double Up Workshop) games + RANKED_TFT_DOUBLE_UP, } serde_strum_unknown!(QueueType); #[cfg(test)] -mod test { - use super::*; - - #[test] - fn check_as_ref() { - assert_eq!("RANKED_SOLO_5x5", QueueType::RANKED_SOLO_5x5.as_ref()); - } - - #[test] - fn check_to_string() { - assert_eq!("RANKED_SOLO_5x5", QueueType::RANKED_SOLO_5x5.to_string()); - } - - #[test] - fn check_from_string() { - assert_eq!(QueueType::RANKED_SOLO_5x5, "RANKED_SOLO_5x5".into()); - assert_eq!(QueueType::UNKNOWN("RANKED_MYSTERY_UNKNOWN".to_owned()), "RANKED_MYSTERY_UNKNOWN".into()); - assert_eq!("RANKED_MYSTERY_UNKNOWN", QueueType::UNKNOWN("RANKED_MYSTERY_UNKNOWN".to_owned()).as_ref()); - } - - #[test] - fn check_serialize() { - assert_eq!(Some("\"RANKED_TFT_DOUBLE_UP\""), - serde_json::to_string(&QueueType::RANKED_TFT_DOUBLE_UP) - .ok().as_deref()); - assert_eq!(Some("\"RANKED_MYSTERY_UNKNOWN\""), - serde_json::to_string(&QueueType::UNKNOWN("RANKED_MYSTERY_UNKNOWN".to_owned())) - .ok().as_deref()); - } - - #[test] - // Note: this test is often not run due to this condition below. - #[cfg(not(feature = "deny-unknown-enum-variants-strings"))] - fn check_deserialize() { - use std::collections::BTreeMap; - - let dict: BTreeMap = serde_json::from_str( - r#"{ - "100": "RANKED_SOLO_5x5", - "200": "RANKED_TFT_TURBO", - "210": "RANKED_TFT_DOUBLE_UP", - "211": "RANKED_TFT_PAIRS", - "900": "RANKED_MYSTERY_UNKNOWN" - }"# - ).unwrap(); - - assert_eq!(Some(&QueueType::RANKED_SOLO_5x5), dict.get(&100)); - assert_eq!(Some(&QueueType::RANKED_TFT_TURBO), dict.get(&200)); - assert_eq!(Some(&QueueType::RANKED_TFT_DOUBLE_UP), dict.get(&210)); - assert_eq!(Some(&QueueType::RANKED_TFT_PAIRS), dict.get(&211)); - assert_eq!(Some(&QueueType::UNKNOWN("RANKED_MYSTERY_UNKNOWN".to_owned())), dict.get(&900)); - - } -} +mod test; diff --git a/riven/src/consts/queue_type/test.rs b/riven/src/consts/queue_type/test.rs new file mode 100644 index 0000000..d4dcbe3 --- /dev/null +++ b/riven/src/consts/queue_type/test.rs @@ -0,0 +1,52 @@ +use super::*; + +#[test] +fn check_as_ref() { + assert_eq!("RANKED_SOLO_5x5", QueueType::RANKED_SOLO_5x5.as_ref()); +} + +#[test] +fn check_to_string() { + assert_eq!("RANKED_SOLO_5x5", QueueType::RANKED_SOLO_5x5.to_string()); +} + +#[test] +fn check_from_string() { + assert_eq!(QueueType::RANKED_SOLO_5x5, "RANKED_SOLO_5x5".into()); + assert_eq!(QueueType::UNKNOWN("RANKED_MYSTERY_UNKNOWN".to_owned()), "RANKED_MYSTERY_UNKNOWN".into()); + assert_eq!("RANKED_MYSTERY_UNKNOWN", QueueType::UNKNOWN("RANKED_MYSTERY_UNKNOWN".to_owned()).as_ref()); +} + +#[test] +fn check_serialize() { + assert_eq!(Some("\"RANKED_TFT_DOUBLE_UP\""), + serde_json::to_string(&QueueType::RANKED_TFT_DOUBLE_UP) + .ok().as_deref()); + assert_eq!(Some("\"RANKED_MYSTERY_UNKNOWN\""), + serde_json::to_string(&QueueType::UNKNOWN("RANKED_MYSTERY_UNKNOWN".to_owned())) + .ok().as_deref()); +} + +#[test] +// Note: this test is often not run due to this condition below. +#[cfg(not(feature = "deny-unknown-enum-variants-strings"))] +fn check_deserialize() { + use std::collections::BTreeMap; + + let dict: BTreeMap = serde_json::from_str( + r#"{ + "100": "RANKED_SOLO_5x5", + "200": "RANKED_TFT_TURBO", + "210": "RANKED_TFT_DOUBLE_UP", + "211": "RANKED_TFT_PAIRS", + "900": "RANKED_MYSTERY_UNKNOWN" + }"# + ).unwrap(); + + assert_eq!(Some(&QueueType::RANKED_SOLO_5x5), dict.get(&100)); + assert_eq!(Some(&QueueType::RANKED_TFT_TURBO), dict.get(&200)); + assert_eq!(Some(&QueueType::RANKED_TFT_DOUBLE_UP), dict.get(&210)); + assert_eq!(Some(&QueueType::RANKED_TFT_PAIRS), dict.get(&211)); + assert_eq!(Some(&QueueType::UNKNOWN("RANKED_MYSTERY_UNKNOWN".to_owned())), dict.get(&900)); + +} diff --git a/riven/srcgen/consts/queue_type.rs.dt b/riven/srcgen/consts/queue_type.rs.dt new file mode 100644 index 0000000..1d13cef --- /dev/null +++ b/riven/srcgen/consts/queue_type.rs.dt @@ -0,0 +1,39 @@ +{{ + const dotUtils = require('./dotUtils.js'); + const queueTypes = require('./.queueTypes.json'); +}}{{= dotUtils.preamble() }} + +use strum_macros::{ EnumString, EnumVariantNames, IntoStaticStr }; + +/// LoL or TFT ranked queue types. +#[non_exhaustive] +#[derive(Debug, Clone)] +#[derive(Eq, PartialEq, Hash)] +#[derive(EnumString, EnumVariantNames, IntoStaticStr)] +#[repr(u8)] +pub enum QueueType { + /// Catch-all variant for new, unknown queue types. + #[strum(default)] + UNKNOWN(String), + +{{ + for (const e of queueTypes) { + const desc = e['x-desc'] ? e['x-desc'].split('\n') : []; +}} +{{~ desc :line }} + /// {{= line }} +{{~}} +{{? e['x-deprecated'] }} + /// {{= e.notes }} + #[deprecated(note="{{= e.notes }}")] +{{?}} + {{= e['x-name'] }}, +{{ + } +}} +} + +serde_strum_unknown!(QueueType); + +#[cfg(test)] +mod test; diff --git a/riven/srcgen/index.js b/riven/srcgen/index.js index 69a7a5c..28d9a71 100644 --- a/riven/srcgen/index.js +++ b/riven/srcgen/index.js @@ -23,6 +23,10 @@ const files = [ 'http://www.mingweisamuel.com/riotapi-schema/enums/queues.json', '.queues.json' ], + [ + 'http://www.mingweisamuel.com/riotapi-schema/enums/queueTypes.json', + '.queueTypes.json' + ], [ 'http://www.mingweisamuel.com/riotapi-schema/enums/gameTypes.json', '.gameTypes.json' @@ -34,8 +38,8 @@ const files = [ [ 'http://www.mingweisamuel.com/riotapi-schema/enums/maps.json', '.maps.json' - ] -] + ], +]; const downloadFilesPromise = Promise.all(files.map(([url, file]) => req(url) .then(body => fs.writeFileAsync(file, body, "utf8"))));