def test_lattice_immutable(): lattice = Lattice((48, 2)) with pytest.raises(Exception): lattice.x = 3 with pytest.raises(Exception): del lattice.x with pytest.raises(Exception): lattice.dimensions[0] = 24
def test_enforce_boundary_without_boundary_conditions(): lattice = Lattice([24, 4]) # BravaisSite assert lattice.enforce_boundary((24, 3), False) == (0, 3) assert lattice.enforce_boundary((-1, 4), False) == (23, 0) # LatticeSite assert lattice.enforce_boundary(LatticeSite((-1, 0)), False) == LatticeSite((23, 0)) with pytest.raises(AssertionError): lattice.enforce_boundary(LatticeSite((-1, 0), 1), False)
def test_lattice_iteration(): lattice = Lattice((48, 4), 2) assert len(lattice) == (48 * 4 * 2) for i, s in enumerate(lattice): assert lattice[i] == s assert lattice.index(s) == i assert s in lattice assert i + 1 == len(lattice) with pytest.raises(ValueError): lattice[len(lattice)] assert LatticeSite((48, 5)) not in lattice assert LatticeSite((46, 2), 2) not in lattice assert lattice.count(LatticeSite((5, 3))) == 1 assert lattice.count(LatticeSite((245, 2))) == 0
def test_enforce_boundary_with_boundary_conditions(): lattice = Lattice([8, 8], 2) # BravaisSite assert lattice.enforce_boundary((4, 4), (periodic, periodic)) == ((4, 4), 1) assert lattice.enforce_boundary((4, 4), (antiperiodic, antiperiodic)) == ((4, 4), 1) assert lattice.enforce_boundary((13, 4), (periodic, periodic)) == ((5, 4), 1) assert lattice.enforce_boundary((13, 4), (antiperiodic, periodic)) == ((5, 4), -1) assert lattice.enforce_boundary((-3, 4), (antiperiodic, periodic)) == ((5, 4), -1) assert lattice.enforce_boundary((-3, 4), (antiperiodic, open_bc)) == ((5, 4), -1) assert lattice.enforce_boundary((-3, 4), (open_bc, periodic)) == ((5, 4), 0) # LatticeSite assert lattice.enforce_boundary(LatticeSite((-3, 4), 1), (antiperiodic, periodic)) == (LatticeSite([5, 4], 1), -1)
def test_lattice_json(): lattice = Lattice([24, 2]) assert json.dumps(lattice.to_json()) == '{"type": "Lattice", "dimensions": [24, 2], "basis_indices": 1}' assert Lattice.from_json(lattice.to_json()) == lattice
def test_lattice_bravais_site_iteration(): lattice = Lattice((4, 8), 3) for site, bs in zip(lattice, lattice.iterate_bravais_sites()): assert site.bi == 0 assert site.bs == bs assert len(list(lattice.iterate_bravais_sites())) == lattice.total_bravais_sites()