From 49cd1c28a9ab528baeb6ea676bff9345ba63baa3 Mon Sep 17 00:00:00 2001 From: Sergey Lukichev Date: Thu, 9 Apr 2020 20:15:33 +0200 Subject: [PATCH 1/3] junior edition solution --- Drafts/WordSplitDemo/.gitignore | 27 +++++++++++++++++++ Drafts/WordSplitDemo/src/WordTransformer.java | 15 +++++++++++ .../src/WordTransformerTest.java | 23 ++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 Drafts/WordSplitDemo/.gitignore create mode 100644 Drafts/WordSplitDemo/src/WordTransformer.java create mode 100644 Drafts/WordSplitDemo/src/WordTransformerTest.java diff --git a/Drafts/WordSplitDemo/.gitignore b/Drafts/WordSplitDemo/.gitignore new file mode 100644 index 0000000..b7590e2 --- /dev/null +++ b/Drafts/WordSplitDemo/.gitignore @@ -0,0 +1,27 @@ +/out + +/target/ +!.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/build/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ diff --git a/Drafts/WordSplitDemo/src/WordTransformer.java b/Drafts/WordSplitDemo/src/WordTransformer.java new file mode 100644 index 0000000..0dac6b0 --- /dev/null +++ b/Drafts/WordSplitDemo/src/WordTransformer.java @@ -0,0 +1,15 @@ +public class WordTransformer { + //transform("aaa bcDE eklm iii") -> "AAA bdDE eklm III" + //length == 3 -> to UpperCase + public static String transform(String input) { + String[] words = input.split(" "); + for(int i = 0; i< words.length; i++ ) { + String word = words[i]; + if(word.length() == 3) { + words[i] = word.toUpperCase(); + + } + } + return String.join(" ", words); + } +} diff --git a/Drafts/WordSplitDemo/src/WordTransformerTest.java b/Drafts/WordSplitDemo/src/WordTransformerTest.java new file mode 100644 index 0000000..fbb8847 --- /dev/null +++ b/Drafts/WordSplitDemo/src/WordTransformerTest.java @@ -0,0 +1,23 @@ +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class WordTransformerTest { + + @Test + public void testTransform() { + //test data + String input = "aaa bcDE eklm iii"; + + //call method we test with test data + String actual = WordTransformer.transform(input); + + //expected result + String expected = "AAA bcDE eklm III"; + + //compare actual and expected + assertEquals("string length", expected.length(), actual.length()); + assertEquals(expected, actual); + + } +} From b1f6b3f93b4f27685909ddf41a88495c994a3216 Mon Sep 17 00:00:00 2001 From: Sergey Lukichev Date: Thu, 9 Apr 2020 21:20:47 +0200 Subject: [PATCH 2/3] more requirements --- .../src/TransformerRuleLength5.java | 12 +++++++++++ .../src/TransformerRuleLentgh3.java | 10 +++++++++ Drafts/WordSplitDemo/src/WordTransformer.java | 21 ++++++++++++++----- .../src/WordTransformerTest.java | 16 ++++++++++++++ 4 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 Drafts/WordSplitDemo/src/TransformerRuleLength5.java create mode 100644 Drafts/WordSplitDemo/src/TransformerRuleLentgh3.java diff --git a/Drafts/WordSplitDemo/src/TransformerRuleLength5.java b/Drafts/WordSplitDemo/src/TransformerRuleLength5.java new file mode 100644 index 0000000..0e8b841 --- /dev/null +++ b/Drafts/WordSplitDemo/src/TransformerRuleLength5.java @@ -0,0 +1,12 @@ +public class TransformerRuleLength5 extends TransformerRuleLentgh3 { + + @Override + public boolean check(String word) { + return word.length() == 5; + } + + @Override + public String action(String word) { + return word.toLowerCase(); + } +} diff --git a/Drafts/WordSplitDemo/src/TransformerRuleLentgh3.java b/Drafts/WordSplitDemo/src/TransformerRuleLentgh3.java new file mode 100644 index 0000000..ac298a8 --- /dev/null +++ b/Drafts/WordSplitDemo/src/TransformerRuleLentgh3.java @@ -0,0 +1,10 @@ +public class TransformerRuleLentgh3 { + //no fields -> no state + public boolean check(String input) { + return input.length() == 3; + } + + public String action(String input) { + return input.toUpperCase(); + } +} diff --git a/Drafts/WordSplitDemo/src/WordTransformer.java b/Drafts/WordSplitDemo/src/WordTransformer.java index 0dac6b0..66c21ab 100644 --- a/Drafts/WordSplitDemo/src/WordTransformer.java +++ b/Drafts/WordSplitDemo/src/WordTransformer.java @@ -1,15 +1,26 @@ public class WordTransformer { - //transform("aaa bcDE eklm iii") -> "AAA bdDE eklm III" //length == 3 -> to UpperCase - public static String transform(String input) { + //transform("aaa bcDE eklm iii") -> "AAA bdDE eklm III" + + //length == 5 -> toLowerCase + //transform("aaa bcDEf eklm iiiPM") -> "aaa bcdef eklm iiipm" + + //length ==2 -> relace first char with * + //transform("aa bcDEf ek") -> "*a bcDEf *k" + + public static String transform(String input, TransformerRuleLentgh3 c) { String[] words = input.split(" "); for(int i = 0; i< words.length; i++ ) { String word = words[i]; - if(word.length() == 3) { - words[i] = word.toUpperCase(); - + if (c.check(word)) { + words[i] = c.action(word); } } return String.join(" ", words); + //nothing is executed after this line + } + + public static String transform(String input) { + return transform(input, new TransformerRuleLentgh3()); } } diff --git a/Drafts/WordSplitDemo/src/WordTransformerTest.java b/Drafts/WordSplitDemo/src/WordTransformerTest.java index fbb8847..c205929 100644 --- a/Drafts/WordSplitDemo/src/WordTransformerTest.java +++ b/Drafts/WordSplitDemo/src/WordTransformerTest.java @@ -18,6 +18,22 @@ public void testTransform() { //compare actual and expected assertEquals("string length", expected.length(), actual.length()); assertEquals(expected, actual); + } + + @Test + public void testTransformRule5() { + //test data + String input = "aaa bcDEF eklm iiiOP"; + + //call method we test with test data + String actual = WordTransformer.transform(input, new TransformerRuleLength5()); + //expected result + String expected = "aaa bcdef eklm iiiop"; + + //compare actual and expected + assertEquals("string length", expected.length(), actual.length()); + assertEquals(expected, actual); } + } From 5eef851b3e7d3923e4e38a99599fa0dde993439e Mon Sep 17 00:00:00 2001 From: Sergey Lukichev Date: Fri, 24 Apr 2020 14:13:59 +0200 Subject: [PATCH 3/3] more rules --- Drafts/WordSplitDemo/src/RuleInterface.java | 9 +++++++++ Drafts/WordSplitDemo/src/TransformerRuleLength5.java | 2 +- Drafts/WordSplitDemo/src/TransformerRuleLentgh3.java | 6 +++++- Drafts/WordSplitDemo/src/WordTransformer.java | 5 +++-- 4 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 Drafts/WordSplitDemo/src/RuleInterface.java diff --git a/Drafts/WordSplitDemo/src/RuleInterface.java b/Drafts/WordSplitDemo/src/RuleInterface.java new file mode 100644 index 0000000..d475d57 --- /dev/null +++ b/Drafts/WordSplitDemo/src/RuleInterface.java @@ -0,0 +1,9 @@ +public interface RuleInterface { + + boolean check(String word); + String action(String word); + + default String newMethod() { + return "Test"; + } +} diff --git a/Drafts/WordSplitDemo/src/TransformerRuleLength5.java b/Drafts/WordSplitDemo/src/TransformerRuleLength5.java index 0e8b841..01bba0f 100644 --- a/Drafts/WordSplitDemo/src/TransformerRuleLength5.java +++ b/Drafts/WordSplitDemo/src/TransformerRuleLength5.java @@ -1,4 +1,4 @@ -public class TransformerRuleLength5 extends TransformerRuleLentgh3 { +public class TransformerRuleLength5 implements RuleInterface { @Override public boolean check(String word) { diff --git a/Drafts/WordSplitDemo/src/TransformerRuleLentgh3.java b/Drafts/WordSplitDemo/src/TransformerRuleLentgh3.java index ac298a8..c92e037 100644 --- a/Drafts/WordSplitDemo/src/TransformerRuleLentgh3.java +++ b/Drafts/WordSplitDemo/src/TransformerRuleLentgh3.java @@ -1,4 +1,4 @@ -public class TransformerRuleLentgh3 { +public class TransformerRuleLentgh3 implements RuleInterface { //no fields -> no state public boolean check(String input) { return input.length() == 3; @@ -7,4 +7,8 @@ public boolean check(String input) { public String action(String input) { return input.toUpperCase(); } + + public String newMethod() { + return "Hello from Rule 3"; + } } diff --git a/Drafts/WordSplitDemo/src/WordTransformer.java b/Drafts/WordSplitDemo/src/WordTransformer.java index 66c21ab..414489f 100644 --- a/Drafts/WordSplitDemo/src/WordTransformer.java +++ b/Drafts/WordSplitDemo/src/WordTransformer.java @@ -8,7 +8,7 @@ public class WordTransformer { //length ==2 -> relace first char with * //transform("aa bcDEf ek") -> "*a bcDEf *k" - public static String transform(String input, TransformerRuleLentgh3 c) { + public static String transform(String input, RuleInterface c) { String[] words = input.split(" "); for(int i = 0; i< words.length; i++ ) { String word = words[i]; @@ -21,6 +21,7 @@ public static String transform(String input, TransformerRuleLentgh3 c) { } public static String transform(String input) { - return transform(input, new TransformerRuleLentgh3()); + RuleInterface c = new TransformerRuleLentgh3(); + return transform(input, c); } }