https://github.com/uberparagon/mgn
Tip revision: e53d6a5602585974452a7124c2a50829371e24ce authored by Drew Johnson on 08 September 2017, 23:12:19 UTC
fixed readme links
fixed readme links
Tip revision: e53d6a5
tests.py
"""
The ``tests`` module tests the implementation of the product and the FZ relations by comparing them to the ``topintersections`` code.
You can change which pairs you want to check by modifying the ``g_n_pairs_to_check variable`` in the source code ``tests.py``.
::
sage: import strataalgebra.tests as tests
sage: tests.run() # long time
"""
from sage.all import QQ, floor, WeightedIntegerVectors, subsets
#from sage.all import *
from strataalgebra import StrataAlgebra
from topintersections import intnum
g_n_pairs_to_check = [
(2,0),
(1,1),
(1,2),
(1,3),
(2,1),
(2,2)
]
def get_all_combis(g,n):
dim = 3*g-3 + n
reducible_boundaries = 0
marks = range(1,n+1)
if n != 0:
first_mark_list = [marks.pop()]
for g1 in range(0, g + 1):
for p in subsets(marks):
r_marks = set(first_mark_list + p)
if 3*g1 - 3 + len(r_marks) + 1 >= 0 and 3*(g-g1) - 3 + n - len(r_marks) + 1 >= 0:
reducible_boundaries+=1
else: #self.n == 0
for g1 in range(1, floor(g/2.0)+1):
reducible_boundaries+=1
#print "computed red bound"
indexes = range(1,n+dim+1) + range(n+dim+g+1, n+dim+g+reducible_boundaries + 2)
codims = [1]*n + range(1,dim+1) + [1]*(reducible_boundaries +1)
for w in WeightedIntegerVectors(dim,codims):
combi = []
#print w
for index, wi in zip(indexes,w):
combi += [index]*wi
yield combi
def run():
"""
run doc
:return:
"""
ok = 0
bad = 0
for g,n in g_n_pairs_to_check:
print "Beginning to check g = {0}, n = {1}...".format(g,n)
s = StrataAlgebra(QQ,g,tuple(range(1,n+1)),False)
for c in get_all_combis(g,n):
print c,
v1 = intnum(g,n,c, confirm = False)
v2 = s.MgnLb_int(c)
if v1==v2:
print " ok."
ok+=1
else:
print
print " FAILED!"
bad+=1
#print c
print v1, "vs", v2
print "{0} tests performed, {1} successful, {2} failed".format(ok+bad,ok,bad)
class doctestclass(object):
"""
here is the doc
"""
pass