package hw4;

import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.Test;

import javax.swing.SwingConstants;

class TextUtilsWhiteBoxTests {

    @Test
    public void padTest() {
        assertEquals("abc  ", TextUtils.pad("abc", ' ', SwingConstants.RIGHT, 5));
        assertEquals("  abc", TextUtils.pad("abc", ' ', SwingConstants.LEFT, 5));
    }
    
    @Test
    public void findIndexOfTest() {
        char[] haystack = {'1', '2', '3', '4', '5'};
        assertEquals( 0, TextUtils.findIndexOf('1', haystack));
        assertEquals( 1, TextUtils.findIndexOf('2', haystack));
        assertEquals( 4, TextUtils.findIndexOf('5', haystack));
        assertEquals(-1, TextUtils.findIndexOf('9', haystack));
        assertEquals(-1, TextUtils.findIndexOf('0', haystack));
        
    }
    
    @Test
    public void findReplacementForTest() {
        char[] haystack     = {'1', '2', '3', '4', '5'};
        char[] replacements = {'A', 'B', 'C', 'D', 'E'};
        assertEquals( 'B', TextUtils.findReplacementFor('2', haystack, replacements));
        assertEquals( '9', TextUtils.findReplacementFor('9', haystack, replacements));
        
        char[] little = {'X', 'Y', 'Z'};
        try {
            TextUtils.findReplacementFor('B', haystack, little);
            fail("Expected an IllegalArgumentException");
        } catch (IllegalArgumentException iae) {
            // OK
        }
    }

    @Test
    public void removeFromTest() {
        char removal[] = {'a', 'm', 's'};
        assertEquals("Je Mdion", TextUtils.removeFrom("James Madison", removal));
        
    }
}
