diff --git a/.github/workflows/application.yml b/.github/workflows/application.yml new file mode 100644 index 0000000..3bce265 --- /dev/null +++ b/.github/workflows/application.yml @@ -0,0 +1,27 @@ +name: Java CI + +on: [push] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 11 + uses: actions/setup-java@v2 + with: + java-version: '11' + distribution: 'adopt' + - name: Build with Maven + run: mvn --batch-mode --update-snapshots verify + deploy: + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: akhileshns/heroku-deploy@v3.12.12 # This is the action + with: + heroku_api_key: ${{secrets.HEROKU_API_KEY}} + heroku_app_name: "java-sim-app" #Must be unique in Heroku + heroku_email: "simpy.pandey@gmail.com" \ No newline at end of file diff --git a/src/main/java/com/develogical/QueryProcessor.java b/src/main/java/com/develogical/QueryProcessor.java index 832670e..d5802e3 100644 --- a/src/main/java/com/develogical/QueryProcessor.java +++ b/src/main/java/com/develogical/QueryProcessor.java @@ -1,5 +1,12 @@ package com.develogical; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import static java.lang.Integer.parseInt; + public class QueryProcessor { public String process(String query) { @@ -8,6 +15,67 @@ public String process(String query) { "English poet, playwright, and actor, widely regarded as the greatest " + "writer in the English language and the world's pre-eminent dramatist."; } + if(query.toLowerCase().contains("which year was Theresa May first elected as the Prime Minister of Great Britain") ){ + return "2016"; + } + if(query.toLowerCase().contains("minus") ){ + ArrayList numbers = new ArrayList<>(Arrays.asList(query.split(":"))); + ArrayList numbers2 = new ArrayList<>(Arrays.asList(numbers.get(1).split(" "))); + List numbers3 = numbers2.stream().filter(x->isInteger(x.trim())).map(i-> parseInt(i.trim())).collect(Collectors.toList()); + return Integer.toString(numbers3.get(0)-numbers3.get(1)); + + } + if(query.toLowerCase().contains("following numbers") ){ + if(query.toLowerCase().contains("largest")){ + ArrayList numbers = new ArrayList<>(Arrays.asList(query.split(":"))); + ArrayList numbers2 = new ArrayList<>(Arrays.asList(numbers.get(2).split(","))); + return numbers2.stream().map(x->parseInt(x.trim())).max(Integer::compare).toString(); + } + if(query.toLowerCase().contains("square and a cube")){ + + String partAfterDot = query.substring(query.indexOf(':') + 2); + ArrayList numbers = new ArrayList<>(Arrays.asList(query.split(":"))); + ArrayList numbers2 = new ArrayList<>(Arrays.asList(numbers.get(2).split(","))); + return numbers2.stream().map(x->parseInt(x.trim())).filter(i-> (isSquare(i)&&isCube(i))).collect(Collectors.toList()).toString(); + } + + + + + } + + return ""; } + + static Boolean isSquare(int n) + { + for (int i = 0; i < n / 2 + 2; i++) + { + if (i * i == n) + { + return true; + } + } + return false; + } + static Boolean isCube(int n) + { + for (int i = 0; i < n / 2 + 2; i++) + { + if (i * i *i == n) + { + return true; + } + } + return false; + } + public static boolean isInteger(String str) { + try { + Integer.parseInt(str); + return true; + } catch (NumberFormatException nfe) { + return false; + } + } } diff --git a/src/test/java/com/develogical/QueryProcessorTest.java b/src/test/java/com/develogical/QueryProcessorTest.java index 89467ca..0edcf4a 100644 --- a/src/test/java/com/develogical/QueryProcessorTest.java +++ b/src/test/java/com/develogical/QueryProcessorTest.java @@ -5,6 +5,7 @@ import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.Assert.fail; public class QueryProcessorTest { @@ -19,6 +20,27 @@ public void returnsEmptyStringIfCannotProcessQuery() throws Exception { public void knowsAboutShakespeare() throws Exception { assertThat(queryProcessor.process("Shakespeare"), containsString("playwright")); } + @Test + public void getLargestNumber() throws Exception { + assertThat(queryProcessor.process(" test: following numbers is the largest: 20946, 2090"), containsString("20946")); + } + + @Test + public void getSquareAndACubeNumber() throws Exception { + assertThat(queryProcessor.process(" test: following numbers is both a square and a cube: 1936, 9, 1, 432"), containsString("1")); + assertThat(queryProcessor.process(" test: following numbers is both a square and a cube: 1936, 64, 3, 432"), containsString("64")); + } + + @Test + public void subtraction() throws Exception { + assertThat(queryProcessor.process(" test: what is 10 minus 8"), containsString("2")); + } + + @Test + public void checkAnswer() throws Exception { + assertThat(queryProcessor.process(" test: which year was Theresa May first elected as the Prime Minister of Great Britain"), containsString("")); + } + @Test public void isNotCaseSensitive() throws Exception {