X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.machine%2Ftest%2Fnet%2Fmograsim%2Fmachine%2Fstandard%2Fmemory%2FWordAddressableMemoryTest.java;h=9571e93cb228f8d38ac7a038dace6b6a30f84e55;hb=63f020a48fdb1f947fbb0194cc52867dc9cb89fe;hp=7b50d12032ab6b0138685e5390b7a4b565f22e06;hpb=88e1b4382640ee4e907e06572fe6794bc925f344;p=Mograsim.git 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 7b50d120..9571e93c 100644 --- 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,8 +4,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals; 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; @@ -14,12 +16,14 @@ import net.mograsim.logic.core.wires.CoreWire; import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd; import net.mograsim.machine.MainMemoryDefinition; -class WordAddressableMemoryTest { - +class WordAddressableMemoryTest +{ + private Timeline t = new Timeline(10); - @Test - public void wordAddressableMemoryLargeTest() + @ParameterizedTest(name = "seed = {0}") + @MethodSource("seedsForRandom") + public void wordAddressableMemoryLargeTest(long seed) { CoreWire rW = new CoreWire(t, 1, 2); CoreWire data = new CoreWire(t, 16, 2); @@ -29,17 +33,16 @@ class WordAddressableMemoryTest { ReadWriteEnd addressI = address.createReadWriteEnd(); @SuppressWarnings("unused") - CoreWordAddressableMemory memory = new CoreWordAddressableMemory(t, 4, new WordAddressableMemory(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()); - - Random r = new Random(); + + Random r = new Random(seed); for (long j = 1; j > 0; j *= 2) { - for (int i = 0; i < 50; i++) + for (int i = 0; i < 100; 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); @@ -55,9 +58,13 @@ class WordAddressableMemoryTest { dataI.clearSignals(); t.executeAll(); - assertEquals(dataI.getValues(), vector); + assertEquals(dataI.getValues(), vector, "seed=" + seed + ", j=" + j + ", i=" + i); } } } + public static LongStream seedsForRandom() + { + return LongStream.range(0, 100); + } }