41 lines
		
	
	
		
			965 B
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			965 B
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
#!/usr/bin/env python3
 | 
						|
 | 
						|
import sys
 | 
						|
 | 
						|
gold = []
 | 
						|
model = []
 | 
						|
 | 
						|
model_bytes = []
 | 
						|
in_testdata = False
 | 
						|
for l in open(sys.argv[1]):
 | 
						|
	if l.startswith("Dumping memory"):
 | 
						|
		in_testdata = True
 | 
						|
		continue
 | 
						|
	if in_testdata:
 | 
						|
		try:
 | 
						|
			model_bytes.extend(int(x, 16) for x in l.split(" "))
 | 
						|
		except ValueError:
 | 
						|
			break
 | 
						|
for i in range(len(model_bytes) // 4):
 | 
						|
	model.append(model_bytes[i * 4] | model_bytes[i * 4 + 1] << 8 | model_bytes[i * 4 + 2] << 16 | model_bytes[i * 4 + 3] << 24)
 | 
						|
 | 
						|
for l in open(sys.argv[2]):
 | 
						|
	line_contents = []
 | 
						|
	for index in range(0, len(l.strip()), 8):
 | 
						|
		line_contents.append(int(l[index:index + 8], 16))
 | 
						|
	gold.extend(reversed(line_contents))
 | 
						|
 | 
						|
all_match = True
 | 
						|
for i, g in enumerate(gold):
 | 
						|
	if g == model[i]:
 | 
						|
		eq_str = "\033[1;32m==\033[0;0m"
 | 
						|
	else:
 | 
						|
		eq_str = "\033[1;31m!=\033[0;0m"
 | 
						|
		all_match = False
 | 
						|
	print("{:03x}: {:08x} (gate) {} {:08x} (gold)".format(i * 4, model[i], eq_str, g))
 | 
						|
 | 
						|
if all_match:
 | 
						|
	print("Test PASSED.")
 | 
						|
else:
 | 
						|
	sys.exit("Test FAILED.")
 |