From 74aaaac756c7a93e8071fc23258da17ba52701e8 Mon Sep 17 00:00:00 2001 From: "Keim, Rob (Agoda)" Date: Sat, 19 Aug 2017 01:00:47 +0700 Subject: [PATCH 1/2] Add test generator for rna transcription exercise --- exercises/rna-transcription/Example.cs | 7 +++- .../rna-transcription/RnaTranscription.cs | 4 +-- .../rna-transcription/RnaTranscriptionTest.cs | 32 +++++++++++++++---- generators/Exercises/RnaTranscription.cs | 16 ++++++++++ 4 files changed, 50 insertions(+), 9 deletions(-) create mode 100644 generators/Exercises/RnaTranscription.cs diff --git a/exercises/rna-transcription/Example.cs b/exercises/rna-transcription/Example.cs index 3cbbefcd5e..253dec4f86 100644 --- a/exercises/rna-transcription/Example.cs +++ b/exercises/rna-transcription/Example.cs @@ -8,8 +8,13 @@ public class Complement { 'G', 'C' }, { 'C', 'G' }, { 'T', 'A' }, { 'A', 'U' } }; - public static string OfDna(string nucleotide) + public static string ToRna(string nucleotide) { + if (nucleotide.Any(x => !DnaToRna.ContainsKey(x))) + { + return null; + } + return string.Concat(nucleotide.Select(x => DnaToRna[x])); } } \ No newline at end of file diff --git a/exercises/rna-transcription/RnaTranscription.cs b/exercises/rna-transcription/RnaTranscription.cs index 882268f979..15adbeb84b 100644 --- a/exercises/rna-transcription/RnaTranscription.cs +++ b/exercises/rna-transcription/RnaTranscription.cs @@ -1,8 +1,8 @@ using System; -public static class Complement +public static class RnaTranscription { - public static string OfDna(string nucleotide) + public static string ToRna(string nucleotide) { throw new NotImplementedException("You need to implement this function."); } diff --git a/exercises/rna-transcription/RnaTranscriptionTest.cs b/exercises/rna-transcription/RnaTranscriptionTest.cs index dc25888d63..3498cc281d 100644 --- a/exercises/rna-transcription/RnaTranscriptionTest.cs +++ b/exercises/rna-transcription/RnaTranscriptionTest.cs @@ -1,34 +1,54 @@ +// This file was auto-generated based on version 1.0.1 of the canonical data. + using Xunit; -public class ComplementTest +public class RnaTranscriptionTest { [Fact] public void Rna_complement_of_cytosine_is_guanine() { - Assert.Equal("G", Complement.OfDna("C")); + Assert.Equal("G", RnaTranscription.ToRna("C")); } [Fact(Skip = "Remove to run test")] public void Rna_complement_of_guanine_is_cytosine() { - Assert.Equal("C", Complement.OfDna("G")); + Assert.Equal("C", RnaTranscription.ToRna("G")); } [Fact(Skip = "Remove to run test")] public void Rna_complement_of_thymine_is_adenine() { - Assert.Equal("A", Complement.OfDna("T")); + Assert.Equal("A", RnaTranscription.ToRna("T")); } [Fact(Skip = "Remove to run test")] public void Rna_complement_of_adenine_is_uracil() { - Assert.Equal("U", Complement.OfDna("A")); + Assert.Equal("U", RnaTranscription.ToRna("A")); } [Fact(Skip = "Remove to run test")] public void Rna_complement() { - Assert.Equal("UGCACCAGAAUU", Complement.OfDna("ACGTGGTCTTAA")); + Assert.Equal("UGCACCAGAAUU", RnaTranscription.ToRna("ACGTGGTCTTAA")); + } + + [Fact(Skip = "Remove to run test")] + public void Correctly_handles_invalid_input_rna_instead_of_dna_() + { + Assert.Equal(null, RnaTranscription.ToRna("U")); + } + + [Fact(Skip = "Remove to run test")] + public void Correctly_handles_completely_invalid_dna_input() + { + Assert.Equal(null, RnaTranscription.ToRna("XXX")); + } + + [Fact(Skip = "Remove to run test")] + public void Correctly_handles_partially_invalid_dna_input() + { + Assert.Equal(null, RnaTranscription.ToRna("ACGTXXXCTTAA")); } } \ No newline at end of file diff --git a/generators/Exercises/RnaTranscription.cs b/generators/Exercises/RnaTranscription.cs new file mode 100644 index 0000000000..ab80b52b94 --- /dev/null +++ b/generators/Exercises/RnaTranscription.cs @@ -0,0 +1,16 @@ +using Generators.Input; +using Generators.Output; + +namespace Generators.Exercises +{ + public class RnaTranscription : Exercise + { + protected override void UpdateCanonicalData(CanonicalData canonicalData) + { + foreach (var canonicalDataCase in CanonicalData.Cases) + { + canonicalDataCase.Expected = canonicalDataCase.Expected ?? new UnescapedValue("null"); + } + } + } +} \ No newline at end of file From 4fafd52690a2430a589e6339940c79f08572af6a Mon Sep 17 00:00:00 2001 From: "Keim, Rob (Agoda)" Date: Sat, 19 Aug 2017 12:59:25 +0700 Subject: [PATCH 2/2] Fix build error --- exercises/rail-fence-cipher/RailFenceCipherTest.cs | 2 +- exercises/rna-transcription/Example.cs | 2 +- exercises/rna-transcription/RnaTranscriptionTest.cs | 6 +++--- exercises/two-fer/TwoFerTest.cs | 2 +- generators/Exercises/RnaTranscription.cs | 12 +----------- 5 files changed, 7 insertions(+), 17 deletions(-) diff --git a/exercises/rail-fence-cipher/RailFenceCipherTest.cs b/exercises/rail-fence-cipher/RailFenceCipherTest.cs index e8d8391c6f..0c53ef9967 100644 --- a/exercises/rail-fence-cipher/RailFenceCipherTest.cs +++ b/exercises/rail-fence-cipher/RailFenceCipherTest.cs @@ -1,4 +1,4 @@ -// This file was auto-generated based on version 1.0.1 of the canonical data. +// This file was auto-generated based on version 1.0.1 of the canonical data. using Xunit; diff --git a/exercises/rna-transcription/Example.cs b/exercises/rna-transcription/Example.cs index 253dec4f86..d037b3a57a 100644 --- a/exercises/rna-transcription/Example.cs +++ b/exercises/rna-transcription/Example.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Linq; -public class Complement +public static class RnaTranscription { private static readonly Dictionary DnaToRna = new Dictionary { diff --git a/exercises/rna-transcription/RnaTranscriptionTest.cs b/exercises/rna-transcription/RnaTranscriptionTest.cs index 3498cc281d..f96646d31b 100644 --- a/exercises/rna-transcription/RnaTranscriptionTest.cs +++ b/exercises/rna-transcription/RnaTranscriptionTest.cs @@ -37,18 +37,18 @@ public void Rna_complement() [Fact(Skip = "Remove to run test")] public void Correctly_handles_invalid_input_rna_instead_of_dna_() { - Assert.Equal(null, RnaTranscription.ToRna("U")); + Assert.Null(RnaTranscription.ToRna("U")); } [Fact(Skip = "Remove to run test")] public void Correctly_handles_completely_invalid_dna_input() { - Assert.Equal(null, RnaTranscription.ToRna("XXX")); + Assert.Null(RnaTranscription.ToRna("XXX")); } [Fact(Skip = "Remove to run test")] public void Correctly_handles_partially_invalid_dna_input() { - Assert.Equal(null, RnaTranscription.ToRna("ACGTXXXCTTAA")); + Assert.Null(RnaTranscription.ToRna("ACGTXXXCTTAA")); } } \ No newline at end of file diff --git a/exercises/two-fer/TwoFerTest.cs b/exercises/two-fer/TwoFerTest.cs index ca0a0b03de..e37a89f1bd 100644 --- a/exercises/two-fer/TwoFerTest.cs +++ b/exercises/two-fer/TwoFerTest.cs @@ -1,4 +1,4 @@ -// This file was auto-generated based on version 1.1.0 of the canonical data. +// This file was auto-generated based on version 1.1.0 of the canonical data. using Xunit; diff --git a/generators/Exercises/RnaTranscription.cs b/generators/Exercises/RnaTranscription.cs index ab80b52b94..b9319d1f2e 100644 --- a/generators/Exercises/RnaTranscription.cs +++ b/generators/Exercises/RnaTranscription.cs @@ -1,16 +1,6 @@ -using Generators.Input; -using Generators.Output; - -namespace Generators.Exercises +namespace Generators.Exercises { public class RnaTranscription : Exercise { - protected override void UpdateCanonicalData(CanonicalData canonicalData) - { - foreach (var canonicalDataCase in CanonicalData.Cases) - { - canonicalDataCase.Expected = canonicalDataCase.Expected ?? new UnescapedValue("null"); - } - } } } \ No newline at end of file