test_math.py
1.6 kB · python · 54 lines
1import json23from mrlypy.math import atoms, bang, counts, spectrum, three, two4from mrlypy.math.graph import Network567def test_atoms_carpet_2d(row):8 r = row("math::atoms::carpet_2d")9 atom = atoms.carpet_2d(r["in"]["n"])10 assert list(atom.shape) == r["out"]["shape"]11 assert atom.flatten().tolist() == r["out"]["data"]121314def test_two_carpet(row):15 r = row("math::two::carpet")16 cell = two.carpet(r["in"]["number"], r["in"]["level"])17 assert json.loads(two.to_json(cell)) == r["out"]181920def test_two_census(row):21 r = row("math::two::census::census")22 inner = r["in"]["cell"]["in"]23 assert two.census(two.carpet(inner["number"], inner["level"])) == r["out"]242526def test_counts_fill(row):27 r = row("math::counts::fill")28 i = r["in"]29 filled = counts.fill(int(i["code"]), i["number"], i["dimension"], i["level"], i["base"])30 assert filled == int(r["out"])313233def test_bang(row):34 r = row("math::bang::bang")35 assert bang.bang(r["in"]["dimension"]).distinct() == r["out"]363738def test_three_census(row):39 r = row("math::three::census::census")40 inner = r["in"]["cell"]["in"]41 solid = three.census(three.carpet(inner["number"], inner["level"]))42 assert solid["surface"] == int(r["out"])434445def test_laplacian_spectrum(row):46 r = row("math::spectrum::laplacian_spectrum")47 i = r["in"]["network"]48 network = Network(i["dim"])49 for position in i["nodes"]:50 network.add_node(position)51 for parent, child, radius in i["branches"]:52 network.add_branch(parent, child, radius)53 spread = spectrum.laplacian_spectrum(network, r["in"]["normalised"])54 assert [round(value, 12) for value in spread] == r["out"]