homework: add name to power socket
This commit is contained in:
@@ -30,7 +30,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn smoke_test() {
|
fn smoke_test() {
|
||||||
let dev_thermometer = Device::Thermometer(Thermometer::new("Therm", 20.1));
|
let dev_thermometer = Device::Thermometer(Thermometer::new("Therm", 20.1));
|
||||||
let dev_power_socket = Device::PowerSocket(PowerSocket::new(11.2, false));
|
let dev_power_socket = Device::PowerSocket(PowerSocket::new("PSoc", 11.2, false));
|
||||||
|
|
||||||
dev_thermometer.print_status();
|
dev_thermometer.print_status();
|
||||||
dev_power_socket.print_status();
|
dev_power_socket.print_status();
|
||||||
@@ -41,15 +41,15 @@ mod tests {
|
|||||||
};
|
};
|
||||||
|
|
||||||
assert_eq!(format!("{}", thermometer.display()), "Therm[ 20.1 ]");
|
assert_eq!(format!("{}", thermometer.display()), "Therm[ 20.1 ]");
|
||||||
assert_eq!(format!("{}", power_socket.display()), "PowerSocket[ OFF : 0.0 ]");
|
assert_eq!(format!("{}", power_socket.display()), "PSoc[ OFF : 0.0 ]");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn display_test() {
|
fn display_test() {
|
||||||
let dev_thermometer = Device::Thermometer(Thermometer::new("Therm", 20.1));
|
let dev_thermometer = Device::Thermometer(Thermometer::new("Therm", 20.1));
|
||||||
let dev_power_socket = Device::PowerSocket(PowerSocket::new(11.2, false));
|
let dev_power_socket = Device::PowerSocket(PowerSocket::new("PSoc", 11.2, false));
|
||||||
|
|
||||||
assert_eq!(format!("{}", dev_thermometer.display()), "DEV:Therm[ 20.1 ]");
|
assert_eq!(format!("{}", dev_thermometer.display()), "DEV:Therm[ 20.1 ]");
|
||||||
assert_eq!(format!("{}", dev_power_socket.display()), "DEV:PowerSocket[ OFF : 0.0 ]");
|
assert_eq!(format!("{}", dev_power_socket.display()), "DEV:PSoc[ OFF : 0.0 ]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,14 +48,14 @@ mod tests {
|
|||||||
"main",
|
"main",
|
||||||
Box::new([
|
Box::new([
|
||||||
Device::Thermometer(Thermometer::new("ThermA", 20.0)),
|
Device::Thermometer(Thermometer::new("ThermA", 20.0)),
|
||||||
Device::PowerSocket(PowerSocket::new(12.34, false)),
|
Device::PowerSocket(PowerSocket::new("PSocA", 12.34, false)),
|
||||||
Device::PowerSocket(PowerSocket::new(10.01, true)),
|
Device::PowerSocket(PowerSocket::new("PSocB", 10.01, true)),
|
||||||
]),
|
]),
|
||||||
),
|
),
|
||||||
Room::new(
|
Room::new(
|
||||||
"bedroom",
|
"bedroom",
|
||||||
Box::new([
|
Box::new([
|
||||||
Device::PowerSocket(PowerSocket::new(11.11, true)),
|
Device::PowerSocket(PowerSocket::new("PSocC", 11.11, true)),
|
||||||
Device::Thermometer(Thermometer::new("ThermB", 17.99)),
|
Device::Thermometer(Thermometer::new("ThermB", 17.99)),
|
||||||
]),
|
]),
|
||||||
),
|
),
|
||||||
@@ -72,11 +72,11 @@ mod tests {
|
|||||||
assert_eq!(format!("{}", house.get_room(0).unwrap().get_device(0).unwrap().display()), "DEV:ThermA[ 20.0 ]");
|
assert_eq!(format!("{}", house.get_room(0).unwrap().get_device(0).unwrap().display()), "DEV:ThermA[ 20.0 ]");
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
format!("{}", house.get_room(0).unwrap().get_device(1).unwrap().display()),
|
format!("{}", house.get_room(0).unwrap().get_device(1).unwrap().display()),
|
||||||
"DEV:PowerSocket[ OFF : 0.0 ]"
|
"DEV:PSocA[ OFF : 0.0 ]"
|
||||||
);
|
);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
format!("{}", house.get_room(1).unwrap().get_device(0).unwrap().display()),
|
format!("{}", house.get_room(1).unwrap().get_device(0).unwrap().display()),
|
||||||
"DEV:PowerSocket[ ON : 11.1 ]"
|
"DEV:PSocC[ ON : 11.1 ]"
|
||||||
);
|
);
|
||||||
|
|
||||||
let Device::PowerSocket(powers_socket) = house.get_room_mut(0).unwrap().get_device_mut(1).unwrap() else {
|
let Device::PowerSocket(powers_socket) = house.get_room_mut(0).unwrap().get_device_mut(1).unwrap() else {
|
||||||
@@ -86,7 +86,7 @@ mod tests {
|
|||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
format!("{}", house.get_room(0).unwrap().get_device(1).unwrap().display()),
|
format!("{}", house.get_room(0).unwrap().get_device(1).unwrap().display()),
|
||||||
"DEV:PowerSocket[ ON : 12.3 ]"
|
"DEV:PSocA[ ON : 12.3 ]"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,23 +7,23 @@ fn main() {
|
|||||||
Room::new(
|
Room::new(
|
||||||
"Hall",
|
"Hall",
|
||||||
Box::new([
|
Box::new([
|
||||||
Device::PowerSocket(PowerSocket::new(9.5, true)),
|
Device::PowerSocket(PowerSocket::new("PSocA", 9.5, true)),
|
||||||
Device::Thermometer(Thermometer::new("ThermA", 20.1)),
|
Device::Thermometer(Thermometer::new("ThermA", 20.1)),
|
||||||
]),
|
]),
|
||||||
),
|
),
|
||||||
Room::new(
|
Room::new(
|
||||||
"Main",
|
"Main",
|
||||||
Box::new([
|
Box::new([
|
||||||
Device::PowerSocket(PowerSocket::new(11.2, true)),
|
Device::PowerSocket(PowerSocket::new("PSocB", 11.2, true)),
|
||||||
Device::Thermometer(Thermometer::new("ThermB", 24.5)),
|
Device::Thermometer(Thermometer::new("ThermB", 24.5)),
|
||||||
Device::PowerSocket(PowerSocket::new(10.4, true)),
|
Device::PowerSocket(PowerSocket::new("PSocC", 10.4, true)),
|
||||||
]),
|
]),
|
||||||
),
|
),
|
||||||
Room::new(
|
Room::new(
|
||||||
"Bedroom",
|
"Bedroom",
|
||||||
Box::new([
|
Box::new([
|
||||||
Device::Thermometer(Thermometer::new("ThermC", 19.3)),
|
Device::Thermometer(Thermometer::new("ThermC", 19.3)),
|
||||||
Device::PowerSocket(PowerSocket::new(12.1, true)),
|
Device::PowerSocket(PowerSocket::new("PSocD", 12.1, true)),
|
||||||
]),
|
]),
|
||||||
),
|
),
|
||||||
]),
|
]),
|
||||||
|
|||||||
@@ -1,13 +1,22 @@
|
|||||||
use std::fmt::Display;
|
use std::fmt::Display;
|
||||||
|
|
||||||
pub struct PowerSocket {
|
pub struct PowerSocket {
|
||||||
|
name: String,
|
||||||
power_rate: f32,
|
power_rate: f32,
|
||||||
on: bool,
|
on: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl PowerSocket {
|
impl PowerSocket {
|
||||||
pub fn new(power_rate: f32, on: bool) -> Self {
|
pub fn new(name: impl AsRef<str>, power_rate: f32, on: bool) -> Self {
|
||||||
Self { power_rate, on }
|
Self {
|
||||||
|
name: name.as_ref().to_string(),
|
||||||
|
power_rate,
|
||||||
|
on,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_name(&self) -> &str {
|
||||||
|
&self.name
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn is_on(&self) -> bool {
|
pub fn is_on(&self) -> bool {
|
||||||
@@ -24,7 +33,7 @@ impl PowerSocket {
|
|||||||
|
|
||||||
pub fn display(&self) -> impl Display {
|
pub fn display(&self) -> impl Display {
|
||||||
let state = if self.is_on() { "ON" } else { "OFF" };
|
let state = if self.is_on() { "ON" } else { "OFF" };
|
||||||
format!("PowerSocket[ {} : {:02.1} ]", state, self.get_power())
|
format!("{}[ {} : {:02.1} ]", self.get_name(), state, self.get_power())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,7 +43,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn smoke_test() {
|
fn smoke_test() {
|
||||||
let mut power_socket = PowerSocket::new(12.4, false);
|
let mut power_socket = PowerSocket::new("PowerSocket", 12.4, false);
|
||||||
assert_eq!(power_socket.power_rate, 12.4);
|
assert_eq!(power_socket.power_rate, 12.4);
|
||||||
assert!(!power_socket.on);
|
assert!(!power_socket.on);
|
||||||
assert!(!power_socket.is_on());
|
assert!(!power_socket.is_on());
|
||||||
@@ -47,8 +56,8 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn display_test() {
|
fn display_test() {
|
||||||
assert_eq!(format!("{}", PowerSocket::new(11.549, false).display()), "PowerSocket[ OFF : 0.0 ]");
|
assert_eq!(format!("{}", PowerSocket::new("PS_1", 11.549, false).display()), "PS_1[ OFF : 0.0 ]");
|
||||||
assert_eq!(format!("{}", PowerSocket::new(11.549, true).display()), "PowerSocket[ ON : 11.5 ]");
|
assert_eq!(format!("{}", PowerSocket::new("PS_2", 11.549, true).display()), "PS_2[ ON : 11.5 ]");
|
||||||
assert_eq!(format!("{}", PowerSocket::new(11.550, true).display()), "PowerSocket[ ON : 11.6 ]");
|
assert_eq!(format!("{}", PowerSocket::new("PS_3", 11.550, true).display()), "PS_3[ ON : 11.6 ]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,14 +43,14 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn smoke_test() {
|
fn smoke_test() {
|
||||||
let devices = Box::new([
|
let devices = Box::new([
|
||||||
Device::PowerSocket(PowerSocket::new(12.34, false)),
|
Device::PowerSocket(PowerSocket::new("PSoc", 12.34, false)),
|
||||||
Device::Thermometer(Thermometer::new("Therm", 21.56)),
|
Device::Thermometer(Thermometer::new("Therm", 21.56)),
|
||||||
]);
|
]);
|
||||||
let mut room = Room::new("test_room", devices);
|
let mut room = Room::new("test_room", devices);
|
||||||
assert_eq!(room.name, "test_room");
|
assert_eq!(room.name, "test_room");
|
||||||
room.print_status();
|
room.print_status();
|
||||||
|
|
||||||
assert_eq!(format!("{}", room.get_device(0).unwrap().display()), "DEV:PowerSocket[ OFF : 0.0 ]");
|
assert_eq!(format!("{}", room.get_device(0).unwrap().display()), "DEV:PSoc[ OFF : 0.0 ]");
|
||||||
assert_eq!(format!("{}", room.get_device(1).unwrap().display()), "DEV:Therm[ 21.6 ]");
|
assert_eq!(format!("{}", room.get_device(1).unwrap().display()), "DEV:Therm[ 21.6 ]");
|
||||||
|
|
||||||
let Device::PowerSocket(power_socket) = room.get_device_mut(0).unwrap() else {
|
let Device::PowerSocket(power_socket) = room.get_device_mut(0).unwrap() else {
|
||||||
@@ -58,7 +58,7 @@ mod tests {
|
|||||||
};
|
};
|
||||||
power_socket.set_on(true);
|
power_socket.set_on(true);
|
||||||
|
|
||||||
assert_eq!(format!("{}", room.get_device(0).unwrap().display()), "DEV:PowerSocket[ ON : 12.3 ]");
|
assert_eq!(format!("{}", room.get_device(0).unwrap().display()), "DEV:PSoc[ ON : 12.3 ]");
|
||||||
assert_eq!(format!("{}", room.get_device(1).unwrap().display()), "DEV:Therm[ 21.6 ]");
|
assert_eq!(format!("{}", room.get_device(1).unwrap().display()), "DEV:Therm[ 21.6 ]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,7 +67,7 @@ mod tests {
|
|||||||
let room = Room::new(
|
let room = Room::new(
|
||||||
"test_room",
|
"test_room",
|
||||||
Box::new([
|
Box::new([
|
||||||
Device::PowerSocket(PowerSocket::new(12.34, false)),
|
Device::PowerSocket(PowerSocket::new("PSoc", 12.34, false)),
|
||||||
Device::Thermometer(Thermometer::new("Therm", 21.56)),
|
Device::Thermometer(Thermometer::new("Therm", 21.56)),
|
||||||
]),
|
]),
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user