Skip to content

Commit 0b65e5f

Browse files
AniriRujAniriRuj
authored andcommitted
Chain1Sequence with generics
1 parent 2869c95 commit 0b65e5f

2 files changed

Lines changed: 96 additions & 7 deletions

File tree

src/main/java/Chain1Sequence.java

Lines changed: 59 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,79 @@
11
import java.util.ArrayList;
22
import java.util.List;
33

4-
public class Chain1Sequence {
4+
public class Chain1Sequence {
55

66
public boolean isNumeric(String value){
77
try {
8-
Integer.parseInt(value);
8+
Long.parseLong(value);
99
return true;
1010
} catch(NumberFormatException e){
1111
return false;
1212
}
1313
}
1414

15+
//2147483647 IntegerMax
16+
//4194303 число, которое все еще дает цепочку int
17+
18+
public <T> T returnNumericValue(String value) {
19+
if (isNumeric(value)) {
20+
if (Long.parseLong(value) >= 0) {
21+
if (Long.parseLong(value) <= 4194303) {
22+
return (T) Integer.valueOf(Integer.parseInt(value));
23+
} else {
24+
return (T) Long.valueOf(Long.parseLong(value));
25+
}
26+
}
27+
28+
return null;
29+
}
30+
31+
return null;
32+
}
33+
34+
1535
public List<String> getExpectedValues(String value) {
36+
List <String> expectedValues = new ArrayList<>();
37+
38+
if (returnNumericValue(value) instanceof Integer) {
39+
int valueInt = Integer.parseInt(value);
40+
41+
expectedValues.add(0, String.valueOf(valueInt)); //expectedValues.get(0) -> F1
42+
43+
for (int i = 1; i < 10; i ++) {
44+
valueInt = valueInt * 2;
45+
expectedValues.add(i, String.valueOf(valueInt)); //expectedValues.get(i) -> Fi+1 until F10
46+
}
47+
48+
return expectedValues;
49+
50+
} else if(returnNumericValue(value) instanceof Long) {
51+
long valueLong = Long.parseLong(value);
52+
expectedValues.add(0, String.valueOf(valueLong)); //expectedValues.get(0) -> F1
53+
54+
for (int i = 1; i < 10; i ++) {
55+
valueLong = valueLong * 2;
56+
expectedValues.add(i, String.valueOf(valueLong)); //expectedValues.get(i) -> Fi+1 until F10
57+
}
58+
59+
return expectedValues;
60+
}
61+
62+
return null;
63+
}
64+
65+
public List<String> getExpectedValuesLong(String value) {
1666
List<String> expectedValues = new ArrayList<>();
1767

1868
if (isNumeric(value)) {
19-
int valueInt = Integer.parseInt(value);
69+
long valueLong = Long.parseLong(value);
2070

21-
if (valueInt >= 0) {
22-
expectedValues.add(String.valueOf(valueInt)); //expectedValues.get(0) -> F1
71+
if (valueLong >= 0) {
72+
expectedValues.add(0, String.valueOf(valueLong)); //expectedValues.get(0) -> F1
2373

2474
for (int i = 1; i < 10; i ++) {
25-
valueInt = valueInt * 2;
26-
expectedValues.add(i, String.valueOf(valueInt)); //expectedValues.get(i) -> Fi+1 until F10
75+
valueLong = valueLong * 2;
76+
expectedValues.add(i, String.valueOf(valueLong)); //expectedValues.get(i) -> Fi+1 until F10
2777
}
2878

2979
return expectedValues;
@@ -34,4 +84,6 @@ public List<String> getExpectedValues(String value) {
3484

3585
return null;
3686
}
87+
88+
3789
}

src/test/java/Chain1SequenceTest.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,41 @@ public void testChain1SequenceHappyPathIntMax() {
4242

4343
Assert.assertEquals(expectedValues, actualValues);
4444
}
45+
46+
@Test
47+
public void testChain1SequenceString() {
48+
49+
String value = "kghsafd";
50+
List<String> expectedValues = null;
51+
52+
Chain1Sequence chain1Sequence = new Chain1Sequence();
53+
List<String> actualValues = chain1Sequence.getExpectedValues(value);
54+
55+
Assert.assertEquals(expectedValues, actualValues);
56+
}
57+
58+
@Test
59+
public void testChain1SequenceUnicode() {
60+
61+
String value = "U+263A";
62+
List<String> expectedValues = null;
63+
64+
Chain1Sequence chain1Sequence = new Chain1Sequence();
65+
List<String> actualValues = chain1Sequence.getExpectedValues(value);
66+
67+
Assert.assertEquals(expectedValues, actualValues);
68+
}
69+
70+
@Test
71+
public void testChain1SequenceZerosAtTheBeginning() {
72+
73+
String value = "00700";
74+
List<String> expectedValues = List.of("700", "1400", "2800", "5600", "11200", "22400", "44800", "89600",
75+
"179200", "358400");
76+
77+
Chain1Sequence chain1Sequence = new Chain1Sequence();
78+
List<String> actualValues = chain1Sequence.getExpectedValues(value);
79+
80+
Assert.assertEquals(expectedValues, actualValues);
81+
}
4582
}

0 commit comments

Comments
 (0)