# HG changeset patch # User Jaroslav Tulach # Date 1354560706 -3600 # Node ID 5adda1327c154fe961656a27f80af8aaa6cb3cce # Parent 2177242dff06697883dda28ee0840e154f685899# Parent 0422a4e856078f049a4f61898f8dedabc37eb519 Merging better delete operation and some tests diff -r 2177242dff06 -r 5adda1327c15 vm/src/main/java/org/apidesign/vm4brwsr/StringArray.java --- a/vm/src/main/java/org/apidesign/vm4brwsr/StringArray.java Mon Dec 03 00:03:40 2012 +0100 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/StringArray.java Mon Dec 03 19:51:46 2012 +0100 @@ -73,16 +73,16 @@ } void delete(int indx) { - if (arr == null) { + if (arr == null || indx < 0 || indx >= arr.length) { return; } String[] tmp = new String[arr.length - 1]; for (int i = 0, j = 0; i < arr.length; i++) { - tmp[j] = arr[i]; - if (j == indx) { - continue; + if (i != indx) { + tmp[j++] = arr[i]; } } + arr = tmp; } int indexOf(String ic) { diff -r 2177242dff06 -r 5adda1327c15 vm/src/test/java/org/apidesign/vm4brwsr/StringArrayTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringArrayTest.java Mon Dec 03 19:51:46 2012 +0100 @@ -0,0 +1,50 @@ +/** + * Back 2 Browser Bytecode Translator + * Copyright (C) 2012 Jaroslav Tulach + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. Look for COPYING file in the top folder. + * If not, see http://opensource.org/licenses/GPL-2.0. + */ +package org.apidesign.vm4brwsr; + +import org.testng.annotations.Test; +import static org.testng.Assert.*; + +public class StringArrayTest { + @Test public void deleteMinusIndex() throws Exception { + String[] arr = { "Ahoj", "Kluci" }; + StringArray list = StringArray.asList(arr); + list.delete(-1); + assertEquals(list.toArray().length, 2, "No element removed"); + } + @Test public void deleteTooHighIndex() throws Exception { + String[] arr = { "Ahoj", "Kluci" }; + StringArray list = StringArray.asList(arr); + list.delete(5); + assertEquals(list.toArray().length, 2, "No element removed"); + } + @Test public void deleteFirst() throws Exception { + String[] arr = { "Ahoj", "Kluci" }; + StringArray list = StringArray.asList(arr); + list.delete(0); + assertEquals(list.toArray().length, 1, "First element removed"); + assertEquals(list.toArray()[0], "Kluci"); + } + @Test public void deleteSecond() throws Exception { + String[] arr = { "Ahoj", "Kluci" }; + StringArray list = StringArray.asList(arr); + list.delete(1); + assertEquals(list.toArray().length, 1, "Second element removed"); + assertEquals(list.toArray()[0], "Ahoj"); + } +}