mirror of
https://github.com/OMGeeky/logisim.git
synced 2025-12-26 16:57:23 +01:00
a bunch of tests for the connection values
This commit is contained in:
2
.idea/logisim.iml
generated
2
.idea/logisim.iml
generated
@@ -2,7 +2,7 @@
|
||||
<module type="EMPTY_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
|
||||
3
src/logic_sim/tests.rs
Normal file
3
src/logic_sim/tests.rs
Normal file
@@ -0,0 +1,3 @@
|
||||
use super::*;
|
||||
|
||||
mod connection_values_tests;
|
||||
5
src/logic_sim/tests/connection_values_tests.rs
Normal file
5
src/logic_sim/tests/connection_values_tests.rs
Normal file
@@ -0,0 +1,5 @@
|
||||
use super::*;
|
||||
const INPUT: u128 = 0b1010_0110_1110_0010_1001_0110_1000_0101_1010_0110_1110_0010_1001_0110_1000_0101_1010_0110_1110_0010_1001_0110_1000_0101_1010_0110_1110_0010_1001_0110_1000_0101;
|
||||
|
||||
mod get_by_index;
|
||||
mod len;
|
||||
262
src/logic_sim/tests/connection_values_tests/get_by_index.rs
Normal file
262
src/logic_sim/tests/connection_values_tests/get_by_index.rs
Normal file
@@ -0,0 +1,262 @@
|
||||
use super::*;
|
||||
fn check_get_by_index(val: ConnectionValues) {
|
||||
assert_eq!(val.get_by_index(val.len()), false); // Out of bounds
|
||||
assert_eq!(val.get_by_index(usize::MAX), false); // Out of bounds
|
||||
|
||||
for i in 0..val.len() {
|
||||
if i >= 128 {
|
||||
assert_eq!(val.get_by_index(i), (INPUT & (1 << (i - 128))) != 0);
|
||||
} else {
|
||||
assert_eq!(val.get_by_index(i), (INPUT & (1 << i)) != 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
#[test]
|
||||
fn test_single() {
|
||||
let val_true = ConnectionValues::Single(true);
|
||||
let val_false = ConnectionValues::Single(false);
|
||||
|
||||
assert_eq!(val_true.get_by_index(0), true);
|
||||
assert_eq!(val_false.get_by_index(0), false);
|
||||
|
||||
assert_eq!(val_true.get_by_index(1), false); // Out of bounds
|
||||
assert_eq!(val_false.get_by_index(1), false);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_half_byte() {
|
||||
let val = ConnectionValues::HalfByte(true, false, true, false);
|
||||
check_get_by_index(val);
|
||||
|
||||
assert_eq!(val.get_by_index(0), true);
|
||||
assert_eq!(val.get_by_index(1), false);
|
||||
assert_eq!(val.get_by_index(2), true);
|
||||
assert_eq!(val.get_by_index(3), false);
|
||||
|
||||
assert_eq!(val.get_by_index(4), false); // Out of bounds
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_byte() {
|
||||
let val = ConnectionValues::Byte(INPUT as u8); // 1000_0101
|
||||
check_get_by_index(val);
|
||||
assert_eq!(val.get_by_index(0), true);
|
||||
assert_eq!(val.get_by_index(1), false);
|
||||
assert_eq!(val.get_by_index(2), true);
|
||||
assert_eq!(val.get_by_index(3), false);
|
||||
|
||||
assert_eq!(val.get_by_index(4), false);
|
||||
assert_eq!(val.get_by_index(5), false);
|
||||
assert_eq!(val.get_by_index(6), false);
|
||||
assert_eq!(val.get_by_index(7), true);
|
||||
|
||||
assert_eq!(val.get_by_index(8), false); // Out of bounds
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_x16() {
|
||||
let val = ConnectionValues::X16(INPUT as u16); // 1001_0110_1000_0101
|
||||
check_get_by_index(val);
|
||||
|
||||
assert_eq!(val.get_by_index(0), true);
|
||||
assert_eq!(val.get_by_index(1), false);
|
||||
assert_eq!(val.get_by_index(2), true);
|
||||
assert_eq!(val.get_by_index(3), false);
|
||||
|
||||
assert_eq!(val.get_by_index(4), false);
|
||||
assert_eq!(val.get_by_index(5), false);
|
||||
assert_eq!(val.get_by_index(6), false);
|
||||
assert_eq!(val.get_by_index(7), true);
|
||||
|
||||
assert_eq!(val.get_by_index(8), false);
|
||||
assert_eq!(val.get_by_index(9), true);
|
||||
assert_eq!(val.get_by_index(10), true);
|
||||
assert_eq!(val.get_by_index(11), false);
|
||||
|
||||
assert_eq!(val.get_by_index(12), true);
|
||||
assert_eq!(val.get_by_index(13), false);
|
||||
assert_eq!(val.get_by_index(14), false);
|
||||
assert_eq!(val.get_by_index(15), true);
|
||||
|
||||
assert_eq!(val.get_by_index(16), false); // Out of bounds
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_x32() {
|
||||
let val = ConnectionValues::X32(INPUT as u32);
|
||||
assert_eq!(val.get_by_index(0), true);
|
||||
assert_eq!(val.get_by_index(1), false);
|
||||
assert_eq!(val.get_by_index(2), true);
|
||||
assert_eq!(val.get_by_index(3), false);
|
||||
|
||||
assert_eq!(val.get_by_index(4), false);
|
||||
assert_eq!(val.get_by_index(5), false);
|
||||
assert_eq!(val.get_by_index(6), false);
|
||||
assert_eq!(val.get_by_index(7), true);
|
||||
|
||||
assert_eq!(val.get_by_index(8), false);
|
||||
assert_eq!(val.get_by_index(9), true);
|
||||
assert_eq!(val.get_by_index(10), true);
|
||||
assert_eq!(val.get_by_index(11), false);
|
||||
|
||||
assert_eq!(val.get_by_index(12), true);
|
||||
assert_eq!(val.get_by_index(13), false);
|
||||
assert_eq!(val.get_by_index(14), false);
|
||||
assert_eq!(val.get_by_index(15), true);
|
||||
|
||||
assert_eq!(val.get_by_index(16), false);
|
||||
assert_eq!(val.get_by_index(31), true);
|
||||
assert_eq!(val.get_by_index(32), false); // Out of bounds
|
||||
check_get_by_index(val);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_x64() {
|
||||
let val = ConnectionValues::X64(INPUT as u64);
|
||||
assert_eq!(val.get_by_index(0), true);
|
||||
assert_eq!(val.get_by_index(1), false);
|
||||
assert_eq!(val.get_by_index(2), true);
|
||||
assert_eq!(val.get_by_index(3), false);
|
||||
|
||||
assert_eq!(val.get_by_index(4), false);
|
||||
assert_eq!(val.get_by_index(5), false);
|
||||
assert_eq!(val.get_by_index(6), false);
|
||||
assert_eq!(val.get_by_index(7), true);
|
||||
|
||||
assert_eq!(val.get_by_index(8), false);
|
||||
assert_eq!(val.get_by_index(9), true);
|
||||
assert_eq!(val.get_by_index(10), true);
|
||||
assert_eq!(val.get_by_index(11), false);
|
||||
|
||||
assert_eq!(val.get_by_index(12), true);
|
||||
assert_eq!(val.get_by_index(13), false);
|
||||
assert_eq!(val.get_by_index(14), false);
|
||||
assert_eq!(val.get_by_index(15), true);
|
||||
|
||||
assert_eq!(val.get_by_index(16), false);
|
||||
|
||||
assert_eq!(val.get_by_index(31), true);
|
||||
|
||||
assert_eq!(val.get_by_index(63), true);
|
||||
|
||||
assert_eq!(val.get_by_index(64), false); // Out of bounds
|
||||
check_get_by_index(val);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_x128() {
|
||||
let val = ConnectionValues::X128(INPUT);
|
||||
assert_eq!(val.get_by_index(0), true);
|
||||
assert_eq!(val.get_by_index(1), false);
|
||||
assert_eq!(val.get_by_index(2), true);
|
||||
assert_eq!(val.get_by_index(3), false);
|
||||
|
||||
assert_eq!(val.get_by_index(4), false);
|
||||
assert_eq!(val.get_by_index(5), false);
|
||||
assert_eq!(val.get_by_index(6), false);
|
||||
assert_eq!(val.get_by_index(7), true);
|
||||
|
||||
assert_eq!(val.get_by_index(8), false);
|
||||
assert_eq!(val.get_by_index(9), true);
|
||||
assert_eq!(val.get_by_index(10), true);
|
||||
assert_eq!(val.get_by_index(11), false);
|
||||
|
||||
assert_eq!(val.get_by_index(12), true);
|
||||
assert_eq!(val.get_by_index(13), false);
|
||||
assert_eq!(val.get_by_index(14), false);
|
||||
assert_eq!(val.get_by_index(15), true);
|
||||
|
||||
assert_eq!(val.get_by_index(16), false);
|
||||
|
||||
assert_eq!(val.get_by_index(31), true);
|
||||
|
||||
assert_eq!(val.get_by_index(63), true);
|
||||
|
||||
assert_eq!(val.get_by_index(64), true);
|
||||
assert_eq!(val.get_by_index(68), false);
|
||||
assert_eq!(val.get_by_index(72), false);
|
||||
assert_eq!(val.get_by_index(76), true);
|
||||
assert_eq!(val.get_by_index(80), false);
|
||||
assert_eq!(val.get_by_index(84), false);
|
||||
assert_eq!(val.get_by_index(88), false);
|
||||
assert_eq!(val.get_by_index(92), false);
|
||||
assert_eq!(val.get_by_index(96), true);
|
||||
assert_eq!(val.get_by_index(127), true);
|
||||
assert_eq!(val.get_by_index(128), false); // Out of bounds
|
||||
check_get_by_index(val);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_x256() {
|
||||
let val = ConnectionValues::X256(INPUT, INPUT);
|
||||
assert_eq!(val.get_by_index(0), true);
|
||||
assert_eq!(val.get_by_index(1), false);
|
||||
assert_eq!(val.get_by_index(2), true);
|
||||
assert_eq!(val.get_by_index(3), false);
|
||||
|
||||
assert_eq!(val.get_by_index(4), false);
|
||||
assert_eq!(val.get_by_index(5), false);
|
||||
assert_eq!(val.get_by_index(6), false);
|
||||
assert_eq!(val.get_by_index(7), true);
|
||||
|
||||
assert_eq!(val.get_by_index(8), false);
|
||||
assert_eq!(val.get_by_index(9), true);
|
||||
assert_eq!(val.get_by_index(10), true);
|
||||
assert_eq!(val.get_by_index(11), false);
|
||||
|
||||
assert_eq!(val.get_by_index(12), true);
|
||||
assert_eq!(val.get_by_index(13), false);
|
||||
assert_eq!(val.get_by_index(14), false);
|
||||
assert_eq!(val.get_by_index(15), true);
|
||||
|
||||
assert_eq!(val.get_by_index(16), false);
|
||||
|
||||
assert_eq!(val.get_by_index(31), true);
|
||||
|
||||
assert_eq!(val.get_by_index(63), true);
|
||||
|
||||
assert_eq!(val.get_by_index(64), true);
|
||||
assert_eq!(val.get_by_index(68), false);
|
||||
assert_eq!(val.get_by_index(72), false);
|
||||
assert_eq!(val.get_by_index(76), true);
|
||||
assert_eq!(val.get_by_index(80), false);
|
||||
assert_eq!(val.get_by_index(84), false);
|
||||
assert_eq!(val.get_by_index(88), false);
|
||||
assert_eq!(val.get_by_index(92), false);
|
||||
assert_eq!(val.get_by_index(96), true);
|
||||
assert_eq!(val.get_by_index(127), true);
|
||||
|
||||
assert_eq!(val.get_by_index(128 + 0), true);
|
||||
assert_eq!(val.get_by_index(128 + 1), false);
|
||||
assert_eq!(val.get_by_index(128 + 2), true);
|
||||
assert_eq!(val.get_by_index(128 + 3), false);
|
||||
assert_eq!(val.get_by_index(128 + 4), false);
|
||||
assert_eq!(val.get_by_index(128 + 5), false);
|
||||
assert_eq!(val.get_by_index(128 + 6), false);
|
||||
assert_eq!(val.get_by_index(128 + 7), true);
|
||||
assert_eq!(val.get_by_index(128 + 8), false);
|
||||
assert_eq!(val.get_by_index(128 + 9), true);
|
||||
assert_eq!(val.get_by_index(128 + 10), true);
|
||||
assert_eq!(val.get_by_index(128 + 11), false);
|
||||
assert_eq!(val.get_by_index(128 + 12), true);
|
||||
assert_eq!(val.get_by_index(128 + 13), false);
|
||||
assert_eq!(val.get_by_index(128 + 14), false);
|
||||
assert_eq!(val.get_by_index(128 + 15), true);
|
||||
assert_eq!(val.get_by_index(128 + 16), false);
|
||||
assert_eq!(val.get_by_index(128 + 31), true);
|
||||
assert_eq!(val.get_by_index(128 + 63), true);
|
||||
assert_eq!(val.get_by_index(128 + 64), true);
|
||||
assert_eq!(val.get_by_index(128 + 68), false);
|
||||
assert_eq!(val.get_by_index(128 + 72), false);
|
||||
assert_eq!(val.get_by_index(128 + 76), true);
|
||||
assert_eq!(val.get_by_index(128 + 80), false);
|
||||
assert_eq!(val.get_by_index(128 + 84), false);
|
||||
assert_eq!(val.get_by_index(128 + 88), false);
|
||||
assert_eq!(val.get_by_index(128 + 92), false);
|
||||
assert_eq!(val.get_by_index(128 + 96), true);
|
||||
assert_eq!(val.get_by_index(128 + 127), true);
|
||||
|
||||
assert_eq!(val.get_by_index(255), true);
|
||||
assert_eq!(val.get_by_index(256), false); // Out of bounds
|
||||
check_get_by_index(val);
|
||||
}
|
||||
26
src/logic_sim/tests/connection_values_tests/len.rs
Normal file
26
src/logic_sim/tests/connection_values_tests/len.rs
Normal file
@@ -0,0 +1,26 @@
|
||||
use super::*;
|
||||
#[test]
|
||||
fn test_single() {
|
||||
assert_eq!(ConnectionValues::Single(true).len(), 1);
|
||||
assert_eq!(ConnectionValues::Single(false).len(), 1);
|
||||
}
|
||||
#[test]
|
||||
fn test_half_byte() {
|
||||
assert_eq!(
|
||||
ConnectionValues::HalfByte(true, false, true, false).len(),
|
||||
4
|
||||
);
|
||||
}
|
||||
#[test]
|
||||
fn test_byte() {
|
||||
assert_eq!(ConnectionValues::Byte(INPUT as u8).len(), 8);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_xx() {
|
||||
assert_eq!(ConnectionValues::X16(INPUT as u16).len(), 16);
|
||||
assert_eq!(ConnectionValues::X32(INPUT as u32).len(), 32);
|
||||
assert_eq!(ConnectionValues::X64(INPUT as u64).len(), 64);
|
||||
assert_eq!(ConnectionValues::X128(INPUT).len(), 128);
|
||||
assert_eq!(ConnectionValues::X256(INPUT, INPUT).len(), 256);
|
||||
}
|
||||
Reference in New Issue
Block a user