aboutsummaryrefslogtreecommitdiff
path: root/MicSim/test/test_ram.py
blob: 1570e0ddeadc9cd933e8ad93f225f28ebebccb7e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

from components.ram import Ram
import unittest
from random import randint


class RamTest(unittest.TestCase):
	
	def setUp(self):
		"""
			Init test
		"""
		self.caretaker=dict({"MDR":0,"MAR":0,"MBR":0,"PC":0})

	def test_write(self):
		"""
			Test write method
		"""
		toWrite=randint(0,2**32) # Pick a random number to write
		self.caretaker["MDR"]=toWrite
		ram=Ram(self.caretaker,10000)
		ram.write() # Write a random number at address 0
		
		data=ram.dump() # Dump ram
		##### Test if everything is written using big endian model #####
		self.assertEqual((toWrite>>24)&0xFF,data[self.caretaker["MAR"]])
		self.assertEqual((toWrite>>16)&0xFF,data[self.caretaker["MAR"]+1])
		self.assertEqual((toWrite>>8)&0xFF,data[self.caretaker["MAR"]+2])
		self.assertEqual(toWrite&0xFF,data[self.caretaker["MAR"]+3])



if __name__ == "__main__":
	unittest.main()