### Question:
StringComplexFieldActions implements AtlasFieldAction { @AtlasActionProcessor public static String replaceAll(ReplaceAll replaceAll, String input) { if (replaceAll == null || replaceAll.getMatch() == null || replaceAll.getMatch().isEmpty()) { throw new IllegalArgumentException("ReplaceAll action must be specified with a non-empty old string"); } String match = replaceAll.getMatch(); String newString = replaceAll.getNewString(); return input == null ? null : input.replaceAll(match, newString == null ? "" : newString); }  @AtlasActionProcessor static String append(Append append, String input); @AtlasActionProcessor(sourceType = FieldType.ANY) static String concatenate(Concatenate concat, List<String> inputs); @AtlasActionProcessor static Boolean endsWith(EndsWith endsWith, String input); @AtlasActionProcessor static String format(Format format, List<Object> input); @AtlasActionProcessor static String genareteUUID(GenerateUUID action); @AtlasActionProcessor static Number indexOf(IndexOf indexOf, String input); @AtlasActionProcessor static Number lastIndexOf(LastIndexOf lastIndexOf, String input); @AtlasActionProcessor static String padStringRight(PadStringRight padStringRight, String input); @AtlasActionProcessor static String padStringLeft(PadStringLeft padStringLeft, String input); @AtlasActionProcessor static String prepend(Prepend action, String input); @AtlasActionProcessor static String replaceAll(ReplaceAll replaceAll, String input); @AtlasActionProcessor static String replaceFirst(ReplaceFirst replaceFirst, String input); @AtlasActionProcessor(sourceType = FieldType.ANY) static String[] split(Split split, String input); @AtlasActionProcessor(sourceType = FieldType.ANY) static String[] repeat(Repeat repeat, String input); @AtlasActionProcessor static Boolean startsWith(StartsWith startsWith, String input); @AtlasActionProcessor static String subString(SubString subString, String input); @AtlasActionProcessor static String subStringAfter(SubStringAfter subStringAfter, String input); @AtlasActionProcessor static String subStringBefore(SubStringBefore subStringBefore, String input); static final String STRING_SEPARATOR_REGEX; static final Pattern STRING_SEPARATOR_PATTERN; }### Answer:
@Test public void testReplaceAll() { ReplaceAll replaceAll = new ReplaceAll(); replaceAll.setMatch(" "); assertNull(StringComplexFieldActions.replaceAll(replaceAll, null)); assertEquals("", StringComplexFieldActions.replaceAll(replaceAll, "")); assertEquals("test", StringComplexFieldActions.replaceAll(replaceAll, "test")); replaceAll.setMatch("e"); assertEquals("tst", StringComplexFieldActions.replaceAll(replaceAll, "test")); replaceAll.setMatch("t"); replaceAll.setNewString("h"); assertEquals("hesh", StringComplexFieldActions.replaceAll(replaceAll, "test")); replaceAll.setMatch("is"); replaceAll.setNewString("at"); assertEquals("That at a test", StringComplexFieldActions.replaceAll(replaceAll, "This is a test")); }
@Test(expected = IllegalArgumentException.class) public void testReplaceAllEmptyMatch() { ReplaceAll replaceAll = new ReplaceAll(); replaceAll.setMatch(""); StringComplexFieldActions.replaceAll(replaceAll, " "); }
@Test(expected=IllegalArgumentException.class) public void testReplaceAllNullAction() { StringComplexFieldActions.replaceAll(null, null); }
@Test(expected = IllegalArgumentException.class) public void testReplaceAllNullOldString() { ReplaceAll replaceAll = new ReplaceAll(); StringComplexFieldActions.replaceAll(replaceAll, " "); }