Added console for displaying the system state
Corrected behaviour and tests
This commit is contained in:
parent
8193bcda46
commit
0278a96a8d
24 changed files with 1074 additions and 2918 deletions
|
|
@ -20,17 +20,6 @@ struct TestPin {
|
|||
type Pin = TestPin;
|
||||
|
||||
impl Pin {
|
||||
fn new() -> Self {
|
||||
Self {
|
||||
value: PinValue::HighZ,
|
||||
driver: None,
|
||||
}
|
||||
}
|
||||
|
||||
fn read(&self) -> PinValue {
|
||||
self.value
|
||||
}
|
||||
|
||||
fn set_driver(&mut self, driver: Option<String>, value: PinValue) {
|
||||
self.driver = driver.map(|name| (name, value));
|
||||
self.value = value;
|
||||
|
|
@ -134,20 +123,20 @@ mod tests {
|
|||
|
||||
// Test address assembly with valid nibbles
|
||||
assert_eq!(
|
||||
handler.assemble_full_address(Some(0x0F), Some(0x23)),
|
||||
Some(0x0F23)
|
||||
handler.assemble_full_address(Some(0x0F), Some(0x03)),
|
||||
Some(0xF3)
|
||||
);
|
||||
assert_eq!(
|
||||
handler.assemble_full_address(Some(0x12), Some(0x34)),
|
||||
Some(0x1234)
|
||||
handler.assemble_full_address(Some(0x02), Some(0x04)),
|
||||
Some(0x24)
|
||||
);
|
||||
assert_eq!(
|
||||
handler.assemble_full_address(Some(0x00), Some(0x00)),
|
||||
Some(0x0000)
|
||||
Some(0x00)
|
||||
);
|
||||
assert_eq!(
|
||||
handler.assemble_full_address(Some(0xFF), Some(0xFF)),
|
||||
Some(0xFFFF)
|
||||
handler.assemble_full_address(Some(0x0F), Some(0x0F)),
|
||||
Some(0xFF)
|
||||
);
|
||||
|
||||
// Test with missing nibbles
|
||||
|
|
@ -237,26 +226,6 @@ mod tests {
|
|||
assert_eq!(create_driver_name("CPU", "CONTROL"), "CPU_CONTROL");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_clock_edge_detection_logic() {
|
||||
// Test edge detection logic without hardware dependencies
|
||||
// PHI1: Low -> High (rising edge)
|
||||
assert!(PinValue::High == PinValue::High && PinValue::Low == PinValue::Low);
|
||||
|
||||
// PHI1: High -> Low (falling edge)
|
||||
assert!(PinValue::Low == PinValue::Low && PinValue::High == PinValue::High);
|
||||
|
||||
// PHI2: Low -> High (rising edge)
|
||||
assert!(PinValue::High == PinValue::High && PinValue::Low == PinValue::Low);
|
||||
|
||||
// PHI2: High -> Low (falling edge)
|
||||
assert!(PinValue::Low == PinValue::Low && PinValue::High == PinValue::High);
|
||||
|
||||
// No edge cases
|
||||
assert!(PinValue::High == PinValue::High && PinValue::High == PinValue::Low);
|
||||
assert!(PinValue::Low == PinValue::Low && PinValue::Low == PinValue::High);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_data_bus_bit_operations() {
|
||||
// Test bit manipulation for data bus operations
|
||||
|
|
@ -350,8 +319,8 @@ mod tests {
|
|||
assert!(address_latch_time.is_some());
|
||||
|
||||
// Verify the assembled address
|
||||
let assembled = handler.assemble_full_address(Some(0x12), Some(0x34));
|
||||
assert_eq!(assembled, Some(0x1234));
|
||||
let assembled = handler.assemble_full_address(Some(0x02), Some(0x04));
|
||||
assert_eq!(assembled, Some(0x24));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -376,7 +345,7 @@ mod tests {
|
|||
&recent_time,
|
||||
access_time
|
||||
),
|
||||
false
|
||||
true
|
||||
);
|
||||
|
||||
// Note: Testing with elapsed time would require sleeping or mocking time
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue