if !System.get_env("EXERCISM_TEST_EXAMPLES") do Code.load_file("protein_translation.exs", __DIR__) end ExUnit.start ExUnit.configure exclude: :pending, trace: true defmodule ProteinTranslationTest do use ExUnit.Case #@tag :pending test "AUG translates to methionine" do assert ProteinTranslation.of_codon("AUG") == { :ok, "Methionine" } end @tag :pending test "identifies Phenylalanine codons" do assert ProteinTranslation.of_codon("UUU") == { :ok, "Phenylalanine" } assert ProteinTranslation.of_codon("UUC") == { :ok, "Phenylalanine" } end @tag :pending test "identifies Leucine codons" do assert ProteinTranslation.of_codon("UUA") == { :ok, "Leucine" } assert ProteinTranslation.of_codon("UUG") == { :ok, "Leucine" } end @tag :pending test "identifies Serine codons" do assert ProteinTranslation.of_codon("UCU") == { :ok, "Serine" } assert ProteinTranslation.of_codon("UCC") == { :ok, "Serine" } assert ProteinTranslation.of_codon("UCA") == { :ok, "Serine" } assert ProteinTranslation.of_codon("UCG") == { :ok, "Serine" } end @tag :pending test "identifies Tyrosine codons" do assert ProteinTranslation.of_codon("UAU") == { :ok, "Tyrosine" } assert ProteinTranslation.of_codon("UAC") == { :ok, "Tyrosine" } end @tag :pending test "identifies Cysteine codons" do assert ProteinTranslation.of_codon("UGU") == { :ok, "Cysteine" } assert ProteinTranslation.of_codon("UGC") == { :ok, "Cysteine" } end @tag :pending test "identifies Tryptophan codons" do assert ProteinTranslation.of_codon("UGG") == { :ok, "Tryptophan" } end @tag :pending test "identifies stop codons" do assert ProteinTranslation.of_codon("UAA") == { :ok, "STOP" } assert ProteinTranslation.of_codon("UAG") == { :ok, "STOP" } assert ProteinTranslation.of_codon("UGA") == { :ok, "STOP" } end @tag :pending test "translates rna strand into correct protein" do strand = "AUGUUUUGG" assert ProteinTranslation.of_rna(strand) == { :ok, ~w(Methionine Phenylalanine Tryptophan) } end @tag :pending test "stops translation if stop codon present" do strand = "AUGUUUUAA" assert ProteinTranslation.of_rna(strand) == { :ok, ~w(Methionine Phenylalanine) } end @tag :pending test "stops translation of longer strand" do strand = "UGGUGUUAUUAAUGGUUU" assert ProteinTranslation.of_rna(strand) == { :ok, ~w(Tryptophan Cysteine Tyrosine) } end @tag :pending test "invalid RNA" do assert ProteinTranslation.of_rna("CARROT") == { :error, "invalid RNA" } end @tag :pending test "invalid codon at end of RNA" do assert ProteinTranslation.of_rna("UUUROT") == { :error, "invalid RNA" } end @tag :pending test "invalid codon" do assert ProteinTranslation.of_codon("INVALID") == { :error, "invalid codon" } end end