Fixes some problems with TabCompletionHelper.getStringList
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				KnarCraft/KnarLib/pipeline/head This commit looks good
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	KnarCraft/KnarLib/pipeline/head This commit looks good
				
			This commit is contained in:
		@@ -38,7 +38,14 @@ public final class TabCompletionHelper {
 | 
			
		||||
        } else {
 | 
			
		||||
            // The argument base is everything the player has typed, until the last comma
 | 
			
		||||
            List<String> arguments = List.of(typedText.split(","));
 | 
			
		||||
            String base = getBase(arguments);
 | 
			
		||||
            String base;
 | 
			
		||||
            List<String> baseArguments;
 | 
			
		||||
            if (typedText.endsWith(",")) {
 | 
			
		||||
                baseArguments = arguments;
 | 
			
		||||
            } else {
 | 
			
		||||
                baseArguments = arguments.subList(0, arguments.size() - 1);
 | 
			
		||||
            }
 | 
			
		||||
            base = String.join(",", baseArguments) + ",";
 | 
			
		||||
            String lastArgument = arguments.get(arguments.size() - 1);
 | 
			
		||||
 | 
			
		||||
            // Filter available values by the text after the last comma only
 | 
			
		||||
@@ -52,7 +59,7 @@ public final class TabCompletionHelper {
 | 
			
		||||
            // Remove any already used values
 | 
			
		||||
            List<String> unused = new ArrayList<>();
 | 
			
		||||
            for (String string : filtered) {
 | 
			
		||||
                if (!arguments.contains(string)) {
 | 
			
		||||
                if (!baseArguments.contains(string)) {
 | 
			
		||||
                    unused.add(base + string);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,48 @@
 | 
			
		||||
package net.knarcraft.knarlib.util;
 | 
			
		||||
 | 
			
		||||
import org.junit.jupiter.api.Test;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import static org.junit.jupiter.api.Assertions.assertEquals;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Tests for the tab-completion helper
 | 
			
		||||
 */
 | 
			
		||||
public class TabCompletionHelperTest {
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void getStringListUnfilteredTest() {
 | 
			
		||||
        List<String> input = List.of("a", "b", "c", "d");
 | 
			
		||||
        List<String> result = TabCompletionHelper.getStringList(input, "a,b,", null);
 | 
			
		||||
        List<String> expected = List.of("a,b,c", "a,b,d");
 | 
			
		||||
        assertEquals(expected, result);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void getStringListUnfilteredTest2() {
 | 
			
		||||
        List<String> input = List.of("a", "b", "c", "d");
 | 
			
		||||
        List<String> result = TabCompletionHelper.getStringList(input, "a,b", null);
 | 
			
		||||
        List<String> expected = List.of("a,b", "a,c", "a,d");
 | 
			
		||||
        assertEquals(expected, result);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void getStringListContainsTest() {
 | 
			
		||||
        List<String> input = List.of("ape", "ball", "car", "donut");
 | 
			
		||||
        List<String> result = TabCompletionHelper.getStringList(input, "ball,donut,r",
 | 
			
		||||
                TabCompletionHelper::filterMatchingContains);
 | 
			
		||||
        List<String> expected = List.of("ball,donut,car");
 | 
			
		||||
        assertEquals(expected, result);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void getStringListStartsWithTest() {
 | 
			
		||||
        List<String> input = List.of("ape", "ball", "car", "donut");
 | 
			
		||||
        List<String> result = TabCompletionHelper.getStringList(input, "ball,donut,a",
 | 
			
		||||
                TabCompletionHelper::filterMatchingStartsWith);
 | 
			
		||||
        List<String> expected = List.of("ball,donut,ape");
 | 
			
		||||
        assertEquals(expected, result);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user