OpenCores
URL https://opencores.org/ocsvn/heap_sorter/heap_sorter/trunk

Subversion Repositories heap_sorter

[/] [heap_sorter/] [trunk/] [simplified_version/] [sort_test_check.py] - Diff between revs 5 and 7

Show entire file | Details | Blame | View Log

Rev 5 Rev 7
Line 1... Line 1...
 
#!/usr/bin/python
 
# This Python script checks if the records were sorted
 
# correctly...
 
import sys
 
# We read the input records and store them in one vector
 
fi=open("events.in","r")
 
ri=fi.read().split("\n")
 
ri=[i.split(" ") for i in ri]
 
# Leave only valid records
 
ri=[i for i in ri if len(i)==3 and i[0]=="0"]
 
# We read the output vectors and store them in a second vector
 
fo=open("events.out","r")
 
ro=fo.read().split("\n")
 
ro=[i.split(" ") for i in ro ]
 
# Leave only valid records
 
ro=[i for i in ro if len(i)==3 and i[0]=="0"]
 
# We check if the output vectors are correctly sorted
 
for i in range(1,len(ro)):
 
  # Theoretically we could simply check the condition:
 
  # int(ro[i-1][1],2) <= int(ro[i][1],2)
 
  # However for longer sequences we may need to 
 
  # consider the fact that sort keys (time stamps)
 
  # will wrap around.
 
  # Therefore we need to perform slightly more 
 
  # complicated test - if we use N bits to store
 
  # the sort key, then we need to subtract keys modulo
 
  # 2**N and if the difference is in range (0,2**(N-1)]
 
  # we consider the difference positive, while in range
 
  # (2**(N-1),(2**N)-1) we consider it negative.
 
  k1 = ro[i-1][1]
 
  k2 = ro[i][1]
 
  dlim = 1<<len(k1)
 
  diff=(int(k2,2)-int(k1,2)) % dlim
 
  if diff > dlim/2:
 
     print "Records unsorted!\n"
 
     print str(i-1)+": "+str(ro[i-1])
 
     print str(i)+": "+str(ro[i])
 
     sys.exit(1)
 
# We check if all input vectors were transferred to the output
 
# Now we only check size of vectors
 
if len(ro) != len(ri):
 
    print "Not all records transferred!\n"
 
    sys.exit(1)
 
print "Test passed!\n"
 
sys.exit(0)
 
 
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.