Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 9fb90b94 authored by PAPERMAN Charles's avatar PAPERMAN Charles
Browse files

Merge branch '17-tests-not-running-in-rust' into 'main'

Run all tests in using Rust classes, and refactor the tests in classes

Closes #17

See merge request pydisk/examples/vizitig!12
parents b69c1310 b786c96e
No related branches found
No related tags found
1 merge request!12Run all tests in using Rust classes, and refactor the tests in classes
......@@ -111,6 +111,7 @@ async def find_with_query(name: str, query: str) -> list[int]:
except ParseError as E:
raise QueryError(detail=str(E), status_code=402)
@app.get(
path="/graphs/{name}/find/subseq/{seq}",
status_code=status.HTTP_200_OK,
......@@ -141,7 +142,8 @@ async def find_one_kmer(name: str, seq: str) -> int:
raise NodeNotFoundException(detail=seq, status_code=404)
except Exception as E:
raise HTTPException(
status_code=500, detail=f"Error in retrieving sequence. {E}",
status_code=500,
detail=f"Error in retrieving sequence. {E}",
)
......
from pytest import mark
from vizitig.types import DNAPython, KmerPython, Nucleotide
from vizibridge import Kmer, DNA
sequences_and_revcomp = [
("ATCGTAGCTGATCG", "CGATCAGCTACGAT"),
......@@ -57,74 +58,83 @@ kmer_eq = [
("TACA", KmerPython(0, 4), False),
]
@mark.parametrize("kmer, okmer, is_eq", kmer_eq)
def test_kmer_eq(kmer: str, okmer: KmerPython, is_eq: bool):
assert (KmerPython.from_dna(DNAPython(kmer)) == okmer) == is_eq
@mark.parametrize("kmer, nucleotide, rkmer", kmers_add_left)
def test_kmer_class_add_left(kmer: str, nucleotide: Nucleotide, rkmer: str):
K = KmerPython.from_dna(DNAPython(kmer))
K.add_left_nucleotid(nucleotide)
RK = KmerPython.from_dna(DNAPython(kmer))
assert K == RK
@mark.parametrize("kmer, nucleotide, rkmer", kmers_add_right)
def test_kmer_class_add_right(kmer: str, nucleotide: Nucleotide, rkmer: str):
K = KmerPython.from_dna(DNAPython(kmer))
K.add_right_nucleotid(nucleotide)
RK = KmerPython.from_dna(DNAPython(kmer))
assert K == RK
@mark.parametrize("seq", sequences)
def test_DNAPython_builder(seq: str):
assert str(DNAPython(seq)) == seq
@mark.parametrize("seq, rseq", sequences_and_revcomp)
def test_kmer_class_reverse_complement(seq: str, rseq: str):
assert KmerPython.from_dna(
DNAPython(seq),
).reverse_complement() == KmerPython.from_dna(DNAPython(rseq))
@mark.parametrize("kmer, c_kmer", kmers_and_canonical)
def test_kmer_class_canonical(kmer: str, c_kmer: str):
assert KmerPython.from_dna(DNAPython(kmer)).canonical() == KmerPython.from_dna(
DNAPython(c_kmer),
)
def test_kmer_class_enum_kmer():
assert list(DNAPython("ACTG")) == [i for i in "ACTG"]
def test_dna_class_enum_canonical_kmer():
assert list(DNAPython("ACTG").enum_canonical_kmer(2)) == [
KmerPython.from_dna(DNAPython("AC")),
KmerPython.from_dna(DNAPython("AG")),
KmerPython.from_dna(DNAPython("CA")),
]
@mark.parametrize("seq", sequences)
def test_dna_class_enum_kmer_returns_right_kmer_count(seq: str):
for m in range(len(seq)):
assert len(list(DNAPython(seq).enum_kmer(m))) + m - 1 == len(seq)
@mark.parametrize("seq", sequences)
def test_dna_class_enum_canonical_kmer_returns_right_kmer_count(seq: str):
for m in range(1, len(seq)):
assert len(list(DNAPython(seq).enum_canonical_kmer(m))) + m - 1 == len(seq)
@mark.parametrize("seq", sequences)
def test_dna_class_canonicality_of_enum_canonical_kmer(seq: str):
for m in range(1, len(seq)):
assert all(
kmer.is_canonical() for kmer in DNAPython(seq).enum_canonical_kmer(m)
kmer_types = [(KmerPython, DNAPython), (Kmer, DNA)]
class TestKmer:
@mark.parametrize("kmer, okmer, is_eq", kmer_eq)
def test_kmer_eq(self, kmer: str, okmer: KmerPython, is_eq: bool):
assert (KmerPython.from_dna(DNAPython(kmer)) == okmer) == is_eq
@mark.parametrize("kmer, nucleotide, rkmer", kmers_add_left)
@mark.parametrize("Kmer, DNA", kmer_types)
def test_kmer_class_add_left(
self, kmer: str, nucleotide: Nucleotide, rkmer: str, Kmer, DNA
):
K = Kmer.from_dna(DNA(kmer))
K.add_left_nucleotid(nucleotide)
RK = Kmer.from_dna(DNA(kmer))
assert K == RK
@mark.parametrize("kmer, nucleotide, rkmer", kmers_add_right)
@mark.parametrize("Kmer, DNA", kmer_types)
def test_kmer_class_add_right(
self, kmer: str, nucleotide: Nucleotide, rkmer: str, Kmer, DNA
):
K = Kmer.from_dna(DNA(kmer))
K.add_right_nucleotid(nucleotide)
RK = Kmer.from_dna(DNA(kmer))
assert K == RK
@mark.parametrize("seq, rseq", sequences_and_revcomp)
@mark.parametrize("Kmer, DNA", kmer_types)
def test_kmer_class_reverse_complement(self, seq: str, rseq: str, Kmer, DNA):
assert Kmer.from_dna(
DNA(seq),
).reverse_complement() == Kmer.from_dna(DNA(rseq))
@mark.parametrize("kmer, c_kmer", kmers_and_canonical)
@mark.parametrize("Kmer, DNA", kmer_types)
def test_kmer_class_canonical(self, kmer: str, c_kmer: str, Kmer, DNA):
assert Kmer.from_dna(DNA(kmer)).canonical() == Kmer.from_dna(
DNA(c_kmer),
)
@mark.parametrize("Kmer, DNA", kmer_types)
def test_kmer_class_enum_kmer(self, Kmer, DNA):
assert list(DNA("ACTG")) == [i for i in "ACTG"]
class TestDNA:
@mark.parametrize("seq", sequences)
@mark.parametrize("Kmer, DNA", kmer_types)
def test_DNAPython_builder(self, seq: str, Kmer, DNA):
assert str(DNA(seq)) == seq
@mark.parametrize("Kmer, DNA", kmer_types)
def test_dna_class_enum_canonical_kmer(self, Kmer, DNA):
assert list(DNA("ACTG").enum_canonical_kmer(2)) == [
Kmer.from_dna(DNA("AC")),
Kmer.from_dna(DNA("AG")),
Kmer.from_dna(DNA("CA")),
]
@mark.parametrize("seq", sequences)
@mark.parametrize("Kmer, DNA", kmer_types)
def test_dna_class_enum_kmer_returns_right_kmer_count(self, seq: str, Kmer, DNA):
for m in range(1, len(seq)):
assert len(list(DNA(seq).enum_kmer(m))) + m - 1 == len(seq)
@mark.parametrize("seq", sequences)
@mark.parametrize("Kmer, DNA", kmer_types)
def test_dna_class_enum_canonical_kmer_returns_right_kmer_count(
self, seq: str, Kmer, DNA
):
for m in range(1, len(seq)):
assert len(list(DNA(seq).enum_canonical_kmer(m))) + m - 1 == len(seq)
@mark.parametrize("seq", sequences)
@mark.parametrize("Kmer, DNA", kmer_types)
def test_dna_class_canonicality_of_enum_canonical_kmer(self, seq: str, Kmer, DNA):
for m in range(1, len(seq)):
assert all(kmer.is_canonical() for kmer in DNA(seq).enum_canonical_kmer(m))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment