Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sync tests for practice exercise protein translation #2617

Merged
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 31 additions & 3 deletions exercises/practice/protein-translation/.meta/tests.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
# This is an auto-generated file. Regular comments will be removed when this
# file is regenerated. Regenerating will not touch any manually added keys,
# so comments can be added in a "comment" key.
# This is an auto-generated file.
#
# Regenerating this file via `configlet sync` will:
# - Recreate every `description` key/value pair
# - Recreate every `reimplements` key/value pair, where they exist in problem-specifications
# - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion)
# - Preserve any other key/value pair
#
# As user-added comments (using the # character) will be removed when this file
# is regenerated, comments can be added via a `comment` key.

[2c44f7bf-ba20-43f7-a3bf-f2219c0c3f98]
description = "Empty RNA sequence results in no proteins"

[96d3d44f-34a2-4db4-84cd-fff523e069be]
description = "Methionine RNA sequence"
Expand Down Expand Up @@ -53,6 +63,12 @@ description = "STOP codon RNA sequence 2"
[9c2ad527-ebc9-4ace-808b-2b6447cb54cb]
description = "STOP codon RNA sequence 3"

[f4d9d8ee-00a8-47bf-a1e3-1641d4428e54]
description = "Sequence of two protein codons translates into proteins"

[dd22eef3-b4f1-4ad6-bb0b-27093c090a9d]
description = "Sequence of two different protein codons translates into proteins"

[d0f295df-fb70-425c-946c-ec2ec185388e]
description = "Translate RNA strand into correct protein list"

Expand All @@ -70,3 +86,15 @@ description = "Translation stops if STOP codon in middle of three-codon sequence

[2c2a2a60-401f-4a80-b977-e0715b23b93d]
description = "Translation stops if STOP codon in middle of six-codon sequence"

[1e75ea2a-f907-4994-ae5c-118632a1cb0f]
description = "Non-existing codon can't translate"

[9eac93f3-627a-4c90-8653-6d0a0595bc6f]
description = "Unknown amino acids, not part of a codon, can't translate"

[9d73899f-e68e-4291-b1e2-7bf87c00f024]
description = "Incomplete RNA sequence can't translate"

[43945cf7-9968-402d-ab9f-b8a28750b050]
description = "Incomplete RNA sequence can translate if valid until a STOP codon"
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import org.junit.Test;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;

public class ProteinTranslatorTest {

Expand Down Expand Up @@ -118,7 +119,7 @@ public void testStopRnaSequence3() {
@Test
public void testTranslationOfRnaToProteinList() {
assertThat(proteinTranslator.translate("AUGUUUUGG"))
.containsExactly("Methionine", "Phenylalanine", "Tryptophan");
.containsExactly("Methionine", "Phenylalanine", "Tryptophan");
}

@Ignore("Remove to run test")
Expand Down Expand Up @@ -149,7 +150,54 @@ public void testTranslationStopsIfStopCodonInMiddle1() {
@Test
public void testTranslationStopsIfStopCodonInMiddle2() {
assertThat(proteinTranslator.translate("UGGUGUUAUUAAUGGUUU"))
.containsExactly("Tryptophan", "Cysteine", "Tyrosine");
.containsExactly("Tryptophan", "Cysteine", "Tyrosine");
}

@Ignore("Remove to run test")
@Test
public void testEmptyRnaSequenceResultInNoproteins() {
assertThat(proteinTranslator.translate("")).isEmpty();
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note: The order of the tests in the canonical data may be ordered like that on purpose, for instance to cover basic test cases before more elaborate ones. This should aid students in their implementation.

To that end, we try to keep the order of the tests in the Java track in the same way as they are ordered in the canonical data. That would mean that this test for an empty sequence becomes the first test. Note that this also means that it shouldn't have an @Ignore tag and that the existing testTranslationOfRnaToProteinList method should be @Ignored.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh okey good to know! I updated the order to match the canonical data!


@Ignore("Remove to run test")
@Test
public void testSequenceOfTwoProteinCodonsTranslatesIntoProteins() {
assertThat(proteinTranslator.translate("UUUUUU")).containsExactly("Phenylalanine", "Phenylalanine");
}

@Ignore("Remove to run test")
@Test
public void testSequenceOfTwoDifferentProteinCodonsTranslatesIntoProteins() {
assertThat(proteinTranslator.translate("UUAUUG")).containsExactly("Leucine", "Leucine");
}

@Ignore("Remove to run test")
@Test
public void testIncompleteRnaSequenceCanTranslateIfValidUntilAStopCodon() {
assertThat(proteinTranslator.translate("UUCUUCUAAUGGU")).containsExactly("Phenylalanine", "Phenylalanine");
}

@Ignore("Remove to run test")
@Test
public void testNonExistingCodonCantTranslate() {
assertThatExceptionOfType(IllegalArgumentException.class)
.isThrownBy(() -> proteinTranslator.translate("AAA"))
.withMessage("Invalid codon");
}

@Ignore("Remove to run test")
@Test
public void testUnknownAminoAcidsNotPartOfACodonCantTranslate() {
assertThatExceptionOfType(IllegalArgumentException.class)
.isThrownBy(() -> proteinTranslator.translate("XYZ"))
.withMessage("Invalid codon");
}

@Ignore("Remove to run test")
@Test
public void testIncompleteRnaSequenceCantTranslate() {
assertThatExceptionOfType(IllegalArgumentException.class)
.isThrownBy(() -> proteinTranslator.translate("AUGU"))
.withMessage("Invalid codon");
}
}
Loading