def __init__(self, dim, value):
self.dim = dim
self.value = value
+ self.dim.addValue(self)
def __str__(self):
return self.dim.val2str(self.value)
def __repr__(self):
- return "DimValue("+str(self.dim.__class__.__name__) + ", "+repr(self.value)+")"
+ return "DimValue(%s, %s)" % (repr(self.dim), repr(self.value))
def htmlTableHeading(self):
return self.dim.htmlTableHeading(self.value)
if self[i].dim == val.dim:
self[i] = val
def __add__(self, val):
- return DimValues(self).append(val)
+ ret = DimValues(self)
+ ret.append(val)
+ return ret
def __sub__(self, dim):
result = DimValues(self)
for v in self:
def addValue(self, *values):
for value in values:
if value not in self:
- self[value] = DimValue(self, value)
+ if isinstance(value, DimValue):
+ self[value.value] = value
+ else:
+ raise Exception("Unsupported usage of addValue")
+ #self[value] = DimValue(self, value)
self.sortedKeys = self.keys()
self.sortedKeys.sort()
def val2str(self, v):
raise KeyError("The number coordinates do not match the number of dimensions: " + str(coordinates))
self[tuple(coordinates)] = test
for i in xrange(len(coordinates)):
- self.space[i].addValue(coordinates[i])
+ DimValue(self.space[i], coordinates[i])
def populate(self, rootpath):
for root, dirs, files in os.walk(rootpath):
for pair in self.space.iterDimensionPairs():
remDims = Space(*tuple([d for d in self.space.iterRemainingDimensions(pair)]))
for vals in remDims.iterValues():
- page = Page(pair, remDims, vals, self)
+ page = Page(pair, vals, self)
page.generate()
try:
os.remove("index.html")
#os.system("source-highlight -d --output-dir=. ../*.sh")
class Page:
- def __init__(self, dimPair, dimOther, valsOther, tests):
+ def __init__(self, dimPair, valsOther, tests):
self.dimy, self.dimx = dimPair
- self.dimOther = dimOther
- self.valsOther = valsOther
+ self.dimOther = [v.dim for v in valsOther]
+ self.valsOther = tests.space.reorder(valsOther)
self.tests = tests
- def getName(self, dimy=None, dimx=None, valsOther=None):
- return "%s-vs-%s-for-%s.html"%(dimx or self.dimy.type,
- dimy or self.dimx.type,
- "-".join([v.value for v in valsOther or self.valsOther]))
+ def getName(self):
+ return "%s-vs-%s-for-%s.html"%(self.dimy.type, self.dimx.type,
+ "-".join([v.value for v in self.valsOther]))
def generate(self):
html = open(self.getName(), "w")
title = "CAN gateway timing analysis"
for d in self.dimOther:
print >>html, "%s: " % d
print >>html, "<a href='%s'>X axis</a>, " % \
- self.getName(dimx=d,
- valsOther=self.valsOther - d + self.dimx.getValue(0))
- print >>html, "<a href='%s'>Y axis</a>; " % self.getName(dimy=d)
+ Page((self.dimy, d), self.valsOther - d + self.dimx.getValue(0), self.tests).getName()
+ print >>html, "<a href='%s'>Y axis</a>; " % \
+ Page((d, self.dimx), self.valsOther - d + self.dimy.getValue(0), self.tests).getName()
links = []
for v in d.values():
if v in self.valsOther:
else:
vv = DimValues(self.valsOther)
vv.replace(v)
- links.append("<a href='%s'>%s</a>"%(urllib.quote(self.getName(valsOther=vv)), str(v)))
+ links.append("<a href='%s'>%s</a>"%(urllib.quote(Page((self.dimy, self.dimx), vv, self.tests).getName()), str(v)))
print >>html, " | ".join(links)
print >>html, "<br>"
try: