Skip to content

Commit 70e6a92

Browse files
committed
Fix parameter start for mid function (indexed from 1)
1 parent 03170ae commit 70e6a92

3 files changed

Lines changed: 9 additions & 3 deletions

File tree

src/main/java/com/scriptbasic/utility/functions/StringFunctions.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.scriptbasic.utility.functions;
22

33
import com.scriptbasic.api.BasicFunction;
4+
import com.scriptbasic.interfaces.BasicRuntimeException;
45

56
/**
67
* <p>
@@ -94,11 +95,15 @@ static public String left(final String s, final int len) {
9495
* @param start parameter
9596
* @param len parameter
9697
* @return return value
98+
* @throws BasicRuntimeException incorrect parameter
9799
*/
98100
@BasicFunction(classification = {com.scriptbasic.classification.String.class,
99101
com.scriptbasic.classification.Utility.class})
100-
static public String mid(final String s, final int start, final int len) {
101-
return s.substring(start, start + len);
102+
static public String mid(final String s, final int start, final int len) throws BasicRuntimeException {
103+
if (start < 1) {
104+
throw new BasicRuntimeException("Incorrect value in parameter start: " + start);
105+
}
106+
return s.substring(start - 1, start - 1 + len);
102107
}
103108

104109
/**

src/test/java/com/scriptbasic/testprograms/TestPrograms.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ public void testStringConcatenation() throws Exception {
162162

163163
@Test
164164
public void testStringFunctions() throws Exception {
165-
codeTest("TestStringFunctions.bas", "0189");
165+
codeTest("TestStringFunctions.bas", "0189123");
166166
}
167167

168168
@Test
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
v = "0123456789"
22
PRINT left(v,2)
33
PRINT right(v,2)
4+
PRINT mid(v,2,3)

0 commit comments

Comments
 (0)