Просмотр исходного кода

Merge pull request #385 from FridaTveit/HammingUseInstanceMethod

Make hamming use instance methods
Stuart Kent 9 лет назад
Родитель
Сommit
e404b6b480
2 измененных файлов: 20 добавлений и 12 удалений
  1. 11
    2
      exercises/hamming/src/example/java/Hamming.java
  2. 9
    10
      exercises/hamming/src/test/java/HammingTest.java

+ 11
- 2
exercises/hamming/src/example/java/Hamming.java Просмотреть файл

1
 public class Hamming {
1
 public class Hamming {
2
+    private final int hammingDistance;
2
 
3
 
3
-    public static int compute(String leftStrand, String rightStrand) {
4
+    public Hamming(String leftStrand, String rightStrand) {
5
+        hammingDistance = computeHammingDistance(leftStrand, rightStrand);
6
+    }
7
+
8
+    public int getHammingDistance() {
9
+        return hammingDistance;
10
+    }
11
+
12
+    private int computeHammingDistance(String leftStrand, String rightStrand) {
4
         if(leftStrand.length() != rightStrand.length()) {
13
         if(leftStrand.length() != rightStrand.length()) {
5
             throw new IllegalArgumentException("leftStrand and rightStrand must be of equal length.");
14
             throw new IllegalArgumentException("leftStrand and rightStrand must be of equal length.");
6
         }
15
         }
13
         return distance;
22
         return distance;
14
     }
23
     }
15
 
24
 
16
-    private static int hammingContributionAt(int index, String leftStrand, String rightStrand) {
25
+    private int hammingContributionAt(int index, String leftStrand, String rightStrand) {
17
       return leftStrand.charAt(index) != rightStrand.charAt(index) ? 1 : 0;
26
       return leftStrand.charAt(index) != rightStrand.charAt(index) ? 1 : 0;
18
     }
27
     }
19
 
28
 

+ 9
- 10
exercises/hamming/src/test/java/HammingTest.java Просмотреть файл

7
 import org.junit.rules.ExpectedException;
7
 import org.junit.rules.ExpectedException;
8
 
8
 
9
 public class HammingTest {
9
 public class HammingTest {
10
-    
11
 
10
 
12
     @Rule
11
     @Rule
13
     public ExpectedException thrown = ExpectedException.none();
12
     public ExpectedException thrown = ExpectedException.none();
14
     
13
     
15
     @Test
14
     @Test
16
     public void testNoDifferenceBetweenIdenticalStrands() {
15
     public void testNoDifferenceBetweenIdenticalStrands() {
17
-        assertThat(Hamming.compute("A", "A"), is(0));
16
+        assertThat(new Hamming("A", "A").getHammingDistance(), is(0));
18
     }
17
     }
19
 
18
 
20
     @Ignore
19
     @Ignore
21
     @Test
20
     @Test
22
     public void testHammingDistanceForSingleNucleotideStrand() {
21
     public void testHammingDistanceForSingleNucleotideStrand() {
23
-        assertThat(Hamming.compute("A", "G"), is(1));
22
+        assertThat(new Hamming("A", "G").getHammingDistance(), is(1));
24
     }
23
     }
25
 
24
 
26
     @Ignore
25
     @Ignore
27
     @Test
26
     @Test
28
     public void testHammingDistanceForSmallStrand() {
27
     public void testHammingDistanceForSmallStrand() {
29
-        assertThat(Hamming.compute("AG", "CT"), is(2)); 
28
+        assertThat(new Hamming("AG", "CT").getHammingDistance(), is(2));
30
     }
29
     }
31
 
30
 
32
     @Ignore
31
     @Ignore
33
     @Test
32
     @Test
34
     public void testSmallHammingDistance() {
33
     public void testSmallHammingDistance() {
35
-        assertThat(Hamming.compute("AT", "CT"), is(1));
34
+        assertThat(new Hamming("AT", "CT").getHammingDistance(), is(1));
36
     }
35
     }
37
 
36
 
38
     @Ignore
37
     @Ignore
39
     @Test
38
     @Test
40
     public void testSmallHammingDistanceInLongerStrand() {
39
     public void testSmallHammingDistanceInLongerStrand() {
41
-        assertThat(Hamming.compute("GGACG", "GGTCG"), is(1));
40
+        assertThat(new Hamming("GGACG", "GGTCG").getHammingDistance(), is(1));
42
     }
41
     }
43
 
42
 
44
     @Ignore
43
     @Ignore
45
     @Test
44
     @Test
46
     public void testValidatesFirstStrandNotLonger() {
45
     public void testValidatesFirstStrandNotLonger() {
47
         thrown.expect(IllegalArgumentException.class);
46
         thrown.expect(IllegalArgumentException.class);
48
-        Hamming.compute("AAAG", "AAA");                
47
+        new Hamming("AAAG", "AAA");
49
     }
48
     }
50
 
49
 
51
     @Ignore
50
     @Ignore
52
     @Test
51
     @Test
53
     public void testValidatesOtherStrandNotLonger() {
52
     public void testValidatesOtherStrandNotLonger() {
54
         thrown.expect(IllegalArgumentException.class);
53
         thrown.expect(IllegalArgumentException.class);
55
-        Hamming.compute("AAA", "AAAG");
54
+        new Hamming("AAA", "AAAG");
56
     }
55
     }
57
 
56
 
58
     @Ignore
57
     @Ignore
59
     @Test
58
     @Test
60
     public void testLargeHammingDistance() {
59
     public void testLargeHammingDistance() {
61
-        assertThat(Hamming.compute("GATACA", "GCATAA"), is(4));
60
+        assertThat(new Hamming("GATACA", "GCATAA").getHammingDistance(), is(4));
62
     }
61
     }
63
 
62
 
64
     @Ignore
63
     @Ignore
65
     @Test
64
     @Test
66
     public void testHammingDistanceInVeryLongStrand() {
65
     public void testHammingDistanceInVeryLongStrand() {
67
-        assertThat(Hamming.compute("GGACGGATTCTG", "AGGACGGATTCT"), is(9));
66
+        assertThat(new Hamming("GGACGGATTCTG", "AGGACGGATTCT").getHammingDistance(), is(9));
68
     }
67
     }
69
 
68
 
70
 }
69
 }