Explorar o código

add next steps

Konrad Barszczyk %!s(int64=3) %!d(string=hai) anos
pai
achega
116079e7a4

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>

+ 22 - 3
src/main/java/pl/konrad/StringCalculator.java

@@ -4,12 +4,31 @@ import java.util.Arrays;
 
 public class StringCalculator {
 
-    public int add(String s){
-        if(s.isEmpty() || s.isBlank()){
+    public int add(String s) {
+        if (s.isEmpty() || s.isBlank()) {
             return 0;
         }
 
-        int result = Arrays.stream(s.split(","))
+        if (s.contains("-")) {
+            throw new RuntimeException("negatives not allowed");
+        }
+
+        if (s.charAt(0) == '/') {
+            char delimiter = s.charAt(2);
+            String stringToCalc = s.substring(4);
+            char[] c = stringToCalc.replaceAll(String.valueOf(delimiter), "").toCharArray();
+
+            int sum = 0;
+
+            for (char value : c) {
+                int a = Integer.parseInt(String.valueOf(value));
+                sum = sum + a;
+            }
+            return sum;
+        }
+
+
+        int result = Arrays.stream(s.split("[,|\n]"))
                 .map(Integer::parseInt)
                 .mapToInt(Integer::intValue)
                 .sum();

+ 35 - 6
src/test/java/StringCalculatorTest.java

@@ -7,11 +7,40 @@ public class StringCalculatorTest {
     StringCalculator calc = new StringCalculator();
 
     @Test
-    public void testStringCalculator(){
-        Assertions.assertEquals(0,calc.add(""));
-        Assertions.assertEquals(1,calc.add("1"));
-        Assertions.assertEquals(3,calc.add("1,2"));
-        Assertions.assertEquals(24,calc.add("6,6,6,6"));
-        Assertions.assertEquals(100,calc.add("20,10,5,5,5,5,5,5,5,5,5,5,5,5,5,5"));
+    public void testStringCalcForEmptyStringsAndTwoNumbers() {
+        test(0, "");
+        test(1, "1");
+        test(3, "3");
+        test(3, "1,2");
+        test(4, "2,2");
+    }
+
+    @Test
+    public void testStringCalcForLargeAmountOfNumbers() {
+        test(24, "6,6,6,6");
+        test(100, "20,10,5,5,5,5,5,5,5,5,5,5,5,5,5,5");
+    }
+
+    @Test
+    public void testStringCalcForHandleNewLines() {
+        test(6, "1\n2,3");
+        test(8, "2,2,2\n2");
+    }
+
+    @Test
+    public void testStringCalcForDifferentDelimiter() {
+        test(3, "//;\n1;2");
+        test(6, "//a\n3a3");
+    }
+
+
+    @Test
+    public void testStringCalcForNegativeNumbers(){
+        Assertions.assertThrows(RuntimeException.class,"")
+    }
+
+
+    private void test(int exceptedValue, String stringToCalc) {
+        Assertions.assertEquals(exceptedValue, calc.add(stringToCalc));
     }
 }

BIN=BIN
target/classes/pl/konrad/StringCalculator.class


+ 1 - 0
target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -0,0 +1 @@
+pl/konrad/StringCalculator.class

+ 1 - 0
target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -0,0 +1 @@
+/home/lab/itaz/2/string-calculator/src/main/java/pl/konrad/StringCalculator.java

+ 1 - 0
target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst

@@ -0,0 +1 @@
+StringCalculatorTest.class

+ 1 - 0
target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst

@@ -0,0 +1 @@
+/home/lab/itaz/2/string-calculator/src/test/java/StringCalculatorTest.java

+ 4 - 0
target/surefire-reports/StringCalculatorTest.txt

@@ -0,0 +1,4 @@
+-------------------------------------------------------------------------------
+Test set: StringCalculatorTest
+-------------------------------------------------------------------------------
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.042 s - in StringCalculatorTest

+ 61 - 0
target/surefire-reports/TEST-StringCalculatorTest.xml

@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report-3.0.xsd" version="3.0" name="StringCalculatorTest" time="0.042" tests="1" errors="0" skipped="0" failures="0">
+  <properties>
+    <property name="sun.desktop" value="gnome"/>
+    <property name="awt.toolkit" value="sun.awt.X11.XToolkit"/>
+    <property name="java.specification.version" value="11"/>
+    <property name="sun.cpu.isalist" value=""/>
+    <property name="sun.jnu.encoding" value="UTF-8"/>
+    <property name="java.class.path" value="/home/lab/itaz/2/string-calculator/target/test-classes:/home/lab/itaz/2/string-calculator/target/classes:/home/lab/itaz/2/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.9.1/junit-jupiter-engine-5.9.1.jar:/home/lab/itaz/2/.m2/repository/org/junit/platform/junit-platform-engine/1.9.1/junit-platform-engine-1.9.1.jar:/home/lab/itaz/2/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/home/lab/itaz/2/.m2/repository/org/junit/platform/junit-platform-commons/1.9.1/junit-platform-commons-1.9.1.jar:/home/lab/itaz/2/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.9.1/junit-jupiter-api-5.9.1.jar:/home/lab/itaz/2/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/home/lab/itaz/2/.m2/repository/org/mockito/mockito-core/4.8.1/mockito-core-4.8.1.jar:/home/lab/itaz/2/.m2/repository/net/bytebuddy/byte-buddy/1.12.16/byte-buddy-1.12.16.jar:/home/lab/itaz/2/.m2/repository/net/bytebuddy/byte-buddy-agent/1.12.16/byte-buddy-agent-1.12.16.jar:/home/lab/itaz/2/.m2/repository/org/objenesis/objenesis/3.2/objenesis-3.2.jar:"/>
+    <property name="java.vm.vendor" value="Ubuntu"/>
+    <property name="sun.arch.data.model" value="64"/>
+    <property name="java.vendor.url" value="https://ubuntu.com/"/>
+    <property name="user.timezone" value=""/>
+    <property name="java.vm.specification.version" value="11"/>
+    <property name="os.name" value="Linux"/>
+    <property name="sun.java.launcher" value="SUN_STANDARD"/>
+    <property name="user.country" value="US"/>
+    <property name="sun.boot.library.path" value="/usr/lib/jvm/java-11-openjdk-amd64/lib"/>
+    <property name="sun.java.command" value="/home/lab/itaz/2/string-calculator/target/surefire/surefirebooter-20221105102319454_3.jar /home/lab/itaz/2/string-calculator/target/surefire 2022-11-05T10-23-18_897-jvmRun1 surefire-20221105102319454_1tmp surefire_0-20221105102319454_2tmp"/>
+    <property name="jdk.debug" value="release"/>
+    <property name="surefire.test.class.path" value="/home/lab/itaz/2/string-calculator/target/test-classes:/home/lab/itaz/2/string-calculator/target/classes:/home/lab/itaz/2/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.9.1/junit-jupiter-engine-5.9.1.jar:/home/lab/itaz/2/.m2/repository/org/junit/platform/junit-platform-engine/1.9.1/junit-platform-engine-1.9.1.jar:/home/lab/itaz/2/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/home/lab/itaz/2/.m2/repository/org/junit/platform/junit-platform-commons/1.9.1/junit-platform-commons-1.9.1.jar:/home/lab/itaz/2/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.9.1/junit-jupiter-api-5.9.1.jar:/home/lab/itaz/2/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/home/lab/itaz/2/.m2/repository/org/mockito/mockito-core/4.8.1/mockito-core-4.8.1.jar:/home/lab/itaz/2/.m2/repository/net/bytebuddy/byte-buddy/1.12.16/byte-buddy-1.12.16.jar:/home/lab/itaz/2/.m2/repository/net/bytebuddy/byte-buddy-agent/1.12.16/byte-buddy-agent-1.12.16.jar:/home/lab/itaz/2/.m2/repository/org/objenesis/objenesis/3.2/objenesis-3.2.jar:"/>
+    <property name="sun.cpu.endian" value="little"/>
+    <property name="user.home" value="/home/lab/itaz/2"/>
+    <property name="user.language" value="en"/>
+    <property name="java.specification.vendor" value="Oracle Corporation"/>
+    <property name="java.version.date" value="2022-07-19"/>
+    <property name="java.home" value="/usr/lib/jvm/java-11-openjdk-amd64"/>
+    <property name="file.separator" value="/"/>
+    <property name="basedir" value="/home/lab/itaz/2/string-calculator"/>
+    <property name="java.vm.compressedOopsMode" value="Zero based"/>
+    <property name="line.separator" value="&#10;"/>
+    <property name="java.specification.name" value="Java Platform API Specification"/>
+    <property name="java.vm.specification.vendor" value="Oracle Corporation"/>
+    <property name="java.awt.graphicsenv" value="sun.awt.X11GraphicsEnvironment"/>
+    <property name="surefire.real.class.path" value="/home/lab/itaz/2/string-calculator/target/surefire/surefirebooter-20221105102319454_3.jar"/>
+    <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/>
+    <property name="java.runtime.version" value="11.0.16+8-post-Ubuntu-0ubuntu122.04"/>
+    <property name="user.name" value="itaz-2"/>
+    <property name="path.separator" value=":"/>
+    <property name="os.version" value="5.15.0-48-generic"/>
+    <property name="java.runtime.name" value="OpenJDK Runtime Environment"/>
+    <property name="file.encoding" value="UTF-8"/>
+    <property name="java.vm.name" value="OpenJDK 64-Bit Server VM"/>
+    <property name="localRepository" value="/home/lab/itaz/2/.m2/repository"/>
+    <property name="java.vendor.url.bug" value="https://bugs.launchpad.net/ubuntu/+source/openjdk-lts"/>
+    <property name="java.io.tmpdir" value="/tmp"/>
+    <property name="java.version" value="11.0.16"/>
+    <property name="user.dir" value="/home/lab/itaz/2/string-calculator"/>
+    <property name="os.arch" value="amd64"/>
+    <property name="java.vm.specification.name" value="Java Virtual Machine Specification"/>
+    <property name="java.awt.printerjob" value="sun.print.PSPrinterJob"/>
+    <property name="sun.os.patch.level" value="unknown"/>
+    <property name="java.library.path" value="/usr/java/packages/lib:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib"/>
+    <property name="java.vm.info" value="mixed mode"/>
+    <property name="java.vendor" value="Ubuntu"/>
+    <property name="java.vm.version" value="11.0.16+8-post-Ubuntu-0ubuntu122.04"/>
+    <property name="sun.io.unicode.encoding" value="UnicodeLittle"/>
+    <property name="java.class.version" value="55.0"/>
+  </properties>
+  <testcase name="testStringCalculator" classname="StringCalculatorTest" time="0.024"/>
+</testsuite>

BIN=BIN
target/test-classes/StringCalculatorTest.class