mirror of
https://github.com/Steffo99/patched-porobot.git
synced 2024-12-23 01:54:22 +00:00
Add more tests and fix things based on them
This commit is contained in:
parent
09a55bee68
commit
e933030b80
10 changed files with 256 additions and 8 deletions
|
@ -16,7 +16,7 @@ log = { version = "0.4.17" }
|
|||
pretty_env_logger = { version = "0.4.0", optional = true }
|
||||
glob = { version = "0.3.0", optional = true }
|
||||
# schema
|
||||
serde = { version = "1.0.140" }
|
||||
serde = { version = "1.0.140", features = ["derive"] }
|
||||
serde_json = { version = "1.0.82" }
|
||||
# search
|
||||
tantivy = { version = "0.18.0", optional = true }
|
||||
|
|
|
@ -26,3 +26,97 @@ pub struct CoreGlobals {
|
|||
/// A [Vec] of all [CoreRarity]s in the game.
|
||||
pub rarities: Vec<CoreRarity>,
|
||||
}
|
||||
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::schema::corebundle::*;
|
||||
use crate::schema::setbundle::*;
|
||||
|
||||
#[test]
|
||||
fn deserialize() {
|
||||
assert_eq!(
|
||||
serde_json::de::from_str::<'static, CoreGlobals>(r#"
|
||||
{
|
||||
"vocabTerms": [
|
||||
{
|
||||
"description": "When you summon this, it gets its allegiance bonus if the top card of your deck matches its region.",
|
||||
"name": "Allegiance",
|
||||
"nameRef": "Allegiance"
|
||||
}
|
||||
],
|
||||
"keywords": [
|
||||
{
|
||||
"description": "Inflicts damage beyond what would kill the target(s) to the enemy Nexus.",
|
||||
"name": "Overwhelm",
|
||||
"nameRef": "SpellOverwhelm"
|
||||
}
|
||||
],
|
||||
"regions": [
|
||||
{
|
||||
"abbreviation": "NX",
|
||||
"iconAbsolutePath": "http://dd.b.pvp.net/3_11_0/core/en_us/img/regions/icon-noxus.png",
|
||||
"name": "Noxus",
|
||||
"nameRef": "Noxus"
|
||||
}
|
||||
],
|
||||
"spellSpeeds": [
|
||||
{
|
||||
"name": "Slow",
|
||||
"nameRef": "Slow"
|
||||
}
|
||||
],
|
||||
"rarities": [
|
||||
{
|
||||
"name": "COMMON",
|
||||
"nameRef": "Common"
|
||||
}
|
||||
],
|
||||
"sets": [
|
||||
{
|
||||
"iconAbsolutePath": "http://dd.b.pvp.net/3_11_0/core/en_us/img/sets/set3_crispmip.png",
|
||||
"name": "Call of the Mountain",
|
||||
"nameRef": "Set3"
|
||||
}
|
||||
]
|
||||
}
|
||||
"#).unwrap(),
|
||||
CoreGlobals {
|
||||
vocab_terms: vec![
|
||||
CoreVocabTerm {
|
||||
vocabterm: "Allegiance".to_string(),
|
||||
name: "Allegiance".to_string(),
|
||||
description: "When you summon this, it gets its allegiance bonus if the top card of your deck matches its region.".to_string(),
|
||||
}
|
||||
],
|
||||
keywords: vec![
|
||||
CoreKeyword {
|
||||
keyword: CardKeyword::SpellOverwhelm,
|
||||
name: "Overwhelm".to_string(),
|
||||
description: "Inflicts damage beyond what would kill the target(s) to the enemy Nexus.".to_string(),
|
||||
}
|
||||
],
|
||||
regions: vec![
|
||||
CoreRegion {
|
||||
region: CardRegion::Noxus,
|
||||
name: "Noxus".to_string(),
|
||||
abbreviation: "NX".to_string(),
|
||||
icon_png: "http://dd.b.pvp.net/3_11_0/core/en_us/img/regions/icon-noxus.png".to_string(),
|
||||
}
|
||||
],
|
||||
spell_speeds: vec![
|
||||
CoreSpellSpeed {
|
||||
spell_speed: SpellSpeed::Slow,
|
||||
name: "Slow".to_string(),
|
||||
}
|
||||
],
|
||||
rarities: vec![
|
||||
CoreRarity {
|
||||
rarity: CardRarity::Common,
|
||||
name: "COMMON".to_string(),
|
||||
}
|
||||
],
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
|
@ -15,3 +15,29 @@ pub struct CoreKeyword {
|
|||
/// The description of the keyword, the text of the in-game tooltip.
|
||||
pub description: String,
|
||||
}
|
||||
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::schema::setbundle::CardKeyword;
|
||||
|
||||
use super::CoreKeyword;
|
||||
|
||||
#[test]
|
||||
fn deserialize() {
|
||||
assert_eq!(
|
||||
serde_json::de::from_str::<'static, CoreKeyword>(r#"
|
||||
{
|
||||
"description": "Inflicts damage beyond what would kill the target(s) to the enemy Nexus.",
|
||||
"name": "Overwhelm",
|
||||
"nameRef": "SpellOverwhelm"
|
||||
}
|
||||
"#).unwrap(),
|
||||
CoreKeyword {
|
||||
keyword: CardKeyword::SpellOverwhelm,
|
||||
name: "Overwhelm".to_string(),
|
||||
description: "Inflicts damage beyond what would kill the target(s) to the enemy Nexus.".to_string(),
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,3 +12,27 @@ pub struct CoreRarity {
|
|||
/// The localized name of the rarity.
|
||||
pub name: String,
|
||||
}
|
||||
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::schema::setbundle::CardRarity;
|
||||
|
||||
use super::CoreRarity;
|
||||
|
||||
#[test]
|
||||
fn deserialize() {
|
||||
assert_eq!(
|
||||
serde_json::de::from_str::<'static, CoreRarity>(r#"
|
||||
{
|
||||
"name": "COMMON",
|
||||
"nameRef": "Common"
|
||||
}
|
||||
"#).unwrap(),
|
||||
CoreRarity {
|
||||
rarity: CardRarity::Common,
|
||||
name: "COMMON".to_string(),
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,3 +21,31 @@ pub struct CoreRegion {
|
|||
#[serde(rename = "iconAbsolutePath")]
|
||||
pub icon_png: String,
|
||||
}
|
||||
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::schema::setbundle::CardRegion;
|
||||
|
||||
use super::CoreRegion;
|
||||
|
||||
#[test]
|
||||
fn deserialize() {
|
||||
assert_eq!(
|
||||
serde_json::de::from_str::<'static, CoreRegion>(r#"
|
||||
{
|
||||
"abbreviation": "NX",
|
||||
"iconAbsolutePath": "http://dd.b.pvp.net/3_11_0/core/en_us/img/regions/icon-noxus.png",
|
||||
"name": "Noxus",
|
||||
"nameRef": "Noxus"
|
||||
}
|
||||
"#).unwrap(),
|
||||
CoreRegion {
|
||||
region: CardRegion::Noxus,
|
||||
name: "Noxus".to_string(),
|
||||
abbreviation: "NX".to_string(),
|
||||
icon_png: "http://dd.b.pvp.net/3_11_0/core/en_us/img/regions/icon-noxus.png".to_string(),
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,12 +7,38 @@ use crate::schema::setbundle::CardSet;
|
|||
pub struct CoreSet {
|
||||
/// The [CardSet] these strings refer to.
|
||||
#[serde(rename = "nameRef")]
|
||||
set: CardSet,
|
||||
pub set: CardSet,
|
||||
|
||||
/// The localized name of the set.
|
||||
name: String,
|
||||
pub name: String,
|
||||
|
||||
/// URL to the icon of the set in `.png` format.
|
||||
#[serde(rename = "iconAbsolutePath")]
|
||||
icon_png: String,
|
||||
pub icon_png: String,
|
||||
}
|
||||
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::schema::setbundle::CardSet;
|
||||
|
||||
use super::CoreSet;
|
||||
|
||||
#[test]
|
||||
fn deserialize() {
|
||||
assert_eq!(
|
||||
serde_json::de::from_str::<'static, CoreSet>(r#"
|
||||
{
|
||||
"iconAbsolutePath": "http://dd.b.pvp.net/3_11_0/core/en_us/img/sets/set3_crispmip.png",
|
||||
"name": "Call of the Mountain",
|
||||
"nameRef": "Set3"
|
||||
}
|
||||
"#).unwrap(),
|
||||
CoreSet {
|
||||
set: CardSet::CallOfTheMountain,
|
||||
name: "Call of the Mountain".to_string(),
|
||||
icon_png: "http://dd.b.pvp.net/3_11_0/core/en_us/img/sets/set3_crispmip.png".to_string(),
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,3 +12,27 @@ pub struct CoreSpellSpeed {
|
|||
/// The localized name of the spell speed.
|
||||
pub name: String,
|
||||
}
|
||||
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::schema::setbundle::SpellSpeed;
|
||||
|
||||
use super::CoreSpellSpeed;
|
||||
|
||||
#[test]
|
||||
fn deserialize() {
|
||||
assert_eq!(
|
||||
serde_json::de::from_str::<'static, CoreSpellSpeed>(r#"
|
||||
{
|
||||
"name": "Slow",
|
||||
"nameRef": "Slow"
|
||||
}
|
||||
"#).unwrap(),
|
||||
CoreSpellSpeed {
|
||||
spell_speed: SpellSpeed::Slow,
|
||||
name: "Slow".to_string(),
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,3 +20,27 @@ pub struct CoreVocabTerm {
|
|||
/// The description of the vocabulary term, the text of the in-game tooltip.
|
||||
pub description: String,
|
||||
}
|
||||
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::CoreVocabTerm;
|
||||
|
||||
#[test]
|
||||
fn deserialize() {
|
||||
assert_eq!(
|
||||
serde_json::de::from_str::<'static, CoreVocabTerm>(r#"
|
||||
{
|
||||
"description": "When you summon this, it gets its allegiance bonus if the top card of your deck matches its region.",
|
||||
"name": "Allegiance",
|
||||
"nameRef": "Allegiance"
|
||||
}
|
||||
"#).unwrap(),
|
||||
CoreVocabTerm {
|
||||
vocabterm: "Allegiance".to_string(),
|
||||
name: "Allegiance".to_string(),
|
||||
description: "When you summon this, it gets its allegiance bonus if the top card of your deck matches its region.".to_string(),
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -120,9 +120,11 @@ pub struct Card {
|
|||
pub(crate) associated_card_names_localized: Vec<String>,
|
||||
|
||||
/// Flavor text of the card, displayed when its image is inspected.
|
||||
#[serde(rename = "flavorText")]
|
||||
pub flavor_text: String,
|
||||
|
||||
/// Name of the artist who drew the card.
|
||||
#[serde(rename = "artistName")]
|
||||
pub artist_name: String,
|
||||
|
||||
/// The subtypes the card has, such as `"PORO"`.
|
||||
|
|
|
@ -49,9 +49,9 @@ mod tests {
|
|||
}
|
||||
|
||||
test_deserialization!(deserialize_none, r#""None""#, CardRarity::None);
|
||||
test_deserialization!(deserialize_common, r#""COMMON""#, CardRarity::Common);
|
||||
test_deserialization!(deserialize_rare, r#""RARE""#, CardRarity::Rare);
|
||||
test_deserialization!(deserialize_epic, r#""EPIC""#, CardRarity::Epic);
|
||||
test_deserialization!(deserialize_common, r#""Common""#, CardRarity::Common);
|
||||
test_deserialization!(deserialize_rare, r#""Rare""#, CardRarity::Rare);
|
||||
test_deserialization!(deserialize_epic, r#""Epic""#, CardRarity::Epic);
|
||||
test_deserialization!(deserialize_champion, r#""Champion""#, CardRarity::Champion);
|
||||
|
||||
#[test]
|
||||
|
|
Loading…
Reference in a new issue