Basic painting optimizer
All checks were successful
Rust / build_and_test (push) Successful in 24s

This commit is contained in:
Lukas Wölfer
2025-07-27 20:34:40 +02:00
parent 56702053cf
commit e5b5e31f46
5 changed files with 270 additions and 65 deletions

View File

@@ -38,7 +38,7 @@ impl IconBitfield {
debug_assert!(index < 5);
match field {
CardField::Icon(icon) => self.add_icon(icon, index),
CardField::DoubleIcon((icon1, icon2)) => {
CardField::DoubleIcon(icon1, icon2) => {
self.add_icon(icon1, index);
self.add_icon(icon2, index);
}
@@ -50,8 +50,8 @@ impl IconBitfield {
pub fn new(card: &Card) -> Self {
let mut result = Self::default();
(0u8..)
.zip(card.field.iter())
.for_each(|(index, field)| result.add_field(*field, index));
.zip(card.field_iter())
.for_each(|(index, field)| result.add_field(field, index));
result
}
@@ -84,35 +84,40 @@ impl IconBitfield {
}
}
#[test]
fn test_add_field() {
let mut x: IconBitfield = Default::default();
x.add_icon(Icon::Circle, 2);
let expected = IconBitfield {
circle: 0b00100,
..Default::default()
};
assert_eq!(x, expected);
}
#[cfg(test)]
mod tests {
use crate::{Icon, icon_bitfield::IconBitfield};
#[test]
fn test_layer_below() {
let mut a: IconBitfield = IconBitfield {
color: 0b00010,
points: 0b01000,
..Default::default()
};
let b = IconBitfield {
triangle: a.get_point_bits(),
square: 0b10000,
..Default::default()
};
let expected = IconBitfield {
color: a.get_icon_bits(Icon::Color),
points: a.get_point_bits(),
square: b.get_icon_bits(Icon::Square),
..Default::default()
};
a.layer_below(&b);
assert_eq!(a, expected);
#[test]
fn test_add_field() {
let mut x: IconBitfield = Default::default();
x.add_icon(Icon::Circle, 2);
let expected = IconBitfield {
circle: 0b00100,
..Default::default()
};
assert_eq!(x, expected);
}
#[test]
fn test_layer_below() {
let mut a: IconBitfield = IconBitfield {
color: 0b00010,
points: 0b01000,
..Default::default()
};
let b = IconBitfield {
triangle: a.get_point_bits(),
square: 0b10000,
..Default::default()
};
let expected = IconBitfield {
color: a.get_icon_bits(Icon::Color),
points: a.get_point_bits(),
square: b.get_icon_bits(Icon::Square),
..Default::default()
};
a.layer_below(&b);
assert_eq!(a, expected);
}
}