projects
/
Mograsim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Shortened the memory test a bit because it was longer than necessary
[Mograsim.git]
/
net.mograsim.machine
/
test
/
net
/
mograsim
/
machine
/
standard
/
memory
/
WordAddressableMemoryTest.java
diff --git
a/net.mograsim.machine/test/net/mograsim/machine/standard/memory/WordAddressableMemoryTest.java
b/net.mograsim.machine/test/net/mograsim/machine/standard/memory/WordAddressableMemoryTest.java
index
5f50dbc
..
ae8e815
100644
(file)
--- a/
net.mograsim.machine/test/net/mograsim/machine/standard/memory/WordAddressableMemoryTest.java
+++ b/
net.mograsim.machine/test/net/mograsim/machine/standard/memory/WordAddressableMemoryTest.java
@@
-4,42
+4,45
@@
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.math.BigInteger;
import java.util.Random;
import java.math.BigInteger;
import java.util.Random;
+import java.util.stream.LongStream;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
import net.mograsim.logic.core.timeline.Timeline;
import net.mograsim.logic.core.types.Bit;
import net.mograsim.logic.core.types.BitVector;
import net.mograsim.logic.core.timeline.Timeline;
import net.mograsim.logic.core.types.Bit;
import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.core.wires.Wire;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
+import net.mograsim.logic.core.wires.
Core
Wire;
+import net.mograsim.logic.core.wires.
Core
Wire.ReadWriteEnd;
import net.mograsim.machine.MainMemoryDefinition;
import net.mograsim.machine.MainMemoryDefinition;
-class WordAddressableMemoryTest {
-
+class WordAddressableMemoryTest
+{
+
private Timeline t = new Timeline(10);
private Timeline t = new Timeline(10);
- @Test
- public void wordAddressableMemoryLargeTest()
+ @ParameterizedTest(name = "seed = {0}")
+ @MethodSource("seedsForRandom")
+ public void wordAddressableMemoryLargeTest(long seed)
{
{
-
Wire rW = new
Wire(t, 1, 2);
-
Wire data = new
Wire(t, 16, 2);
-
Wire address = new
Wire(t, 64, 2);
+
CoreWire rW = new Core
Wire(t, 1, 2);
+
CoreWire data = new Core
Wire(t, 16, 2);
+
CoreWire address = new Core
Wire(t, 64, 2);
ReadWriteEnd rWI = rW.createReadWriteEnd();
ReadWriteEnd dataI = data.createReadWriteEnd();
ReadWriteEnd addressI = address.createReadWriteEnd();
@SuppressWarnings("unused")
ReadWriteEnd rWI = rW.createReadWriteEnd();
ReadWriteEnd dataI = data.createReadWriteEnd();
ReadWriteEnd addressI = address.createReadWriteEnd();
@SuppressWarnings("unused")
- WordAddressableMemoryComponent memory = new WordAddressableMemoryComponent(t, 4, MainMemoryDefinition.create(64, 16, 4096L, Long.MAX_VALUE), data.createReadWriteEnd(),
+ CoreWordAddressableMemory memory = new CoreWordAddressableMemory(t, 4,
+ new WordAddressableMemory(MainMemoryDefinition.create(64, 16, 4096L, Long.MAX_VALUE)), data.createReadWriteEnd(),
rW.createReadOnlyEnd(), address.createReadOnlyEnd());
rW.createReadOnlyEnd(), address.createReadOnlyEnd());
- Random r = new Random();
+ Random r = new Random(
seed
);
for (long j = 1; j > 0; j *= 2)
{
for (long j = 1; j > 0; j *= 2)
{
- for (int i = 0; i <
5
0; i++)
+ for (int i = 0; i <
10
0; i++)
{
{
- String sAddress = String.format("%64s", BigInteger.valueOf(4096 + i + j).toString(2)).replace(' ', '0');
- sAddress = new StringBuilder(sAddress).reverse().toString();
- BitVector bAddress = BitVector.parse(sAddress);
+ BitVector bAddress = BitVector.from(4096 + i + j, 64);
addressI.feedSignals(bAddress);
t.executeAll();
String random = BigInteger.valueOf(Math.abs(r.nextInt())).toString(5);
addressI.feedSignals(bAddress);
t.executeAll();
String random = BigInteger.valueOf(Math.abs(r.nextInt())).toString(5);
@@
-55,9
+58,13
@@
class WordAddressableMemoryTest {
dataI.clearSignals();
t.executeAll();
dataI.clearSignals();
t.executeAll();
- assertEquals(
dataI.getValues(), vector
);
+ assertEquals(
vector, dataI.getValues(), "seed=" + seed + ", j=" + j + ", i=" + i
);
}
}
}
}
}
}
+ public static LongStream seedsForRandom()
+ {
+ return LongStream.range(0, 20);
+ }
}
}