2017-08-02 11:04:10 -07:00
|
|
|
package org.thoughtcrime.securesms.util;
|
|
|
|
|
|
|
|
|
2019-10-17 09:08:24 -03:00
|
|
|
import android.text.TextUtils;
|
|
|
|
|
2017-08-02 11:04:10 -07:00
|
|
|
import org.junit.Before;
|
|
|
|
import org.junit.Test;
|
2019-10-17 09:08:24 -03:00
|
|
|
import org.junit.runner.RunWith;
|
|
|
|
import org.mockito.Mockito;
|
|
|
|
import org.mockito.stubbing.Answer;
|
|
|
|
import org.powermock.api.mockito.PowerMockito;
|
|
|
|
import org.powermock.core.classloader.annotations.PrepareForTest;
|
|
|
|
import org.powermock.modules.junit4.PowerMockRunner;
|
2017-08-02 11:04:10 -07:00
|
|
|
|
|
|
|
import static junit.framework.Assert.assertEquals;
|
|
|
|
|
2019-10-17 09:08:24 -03:00
|
|
|
@RunWith(PowerMockRunner.class)
|
|
|
|
@PrepareForTest(TextUtils.class)
|
2017-08-02 11:04:10 -07:00
|
|
|
public class DelimiterUtilTest {
|
|
|
|
|
|
|
|
@Before
|
2019-10-17 09:08:24 -03:00
|
|
|
public void setup() {
|
|
|
|
PowerMockito.mockStatic(TextUtils.class);
|
|
|
|
PowerMockito.when(TextUtils.isEmpty(Mockito.anyString())).thenAnswer((Answer<Boolean>) invocation -> {
|
|
|
|
if (invocation.getArguments()[0] == null) return true;
|
|
|
|
return ((String) invocation.getArguments()[0]).isEmpty();
|
|
|
|
});
|
|
|
|
}
|
2017-08-02 11:04:10 -07:00
|
|
|
|
|
|
|
@Test
|
|
|
|
public void testEscape() {
|
|
|
|
assertEquals(DelimiterUtil.escape("MTV Music", ' '), "MTV\\ Music");
|
|
|
|
assertEquals(DelimiterUtil.escape("MTV Music", ' '), "MTV\\ \\ Music");
|
|
|
|
|
|
|
|
assertEquals(DelimiterUtil.escape("MTV,Music", ','), "MTV\\,Music");
|
|
|
|
assertEquals(DelimiterUtil.escape("MTV,,Music", ','), "MTV\\,\\,Music");
|
|
|
|
|
|
|
|
assertEquals(DelimiterUtil.escape("MTV Music", '+'), "MTV Music");
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
public void testSplit() {
|
|
|
|
String[] parts = DelimiterUtil.split("MTV\\ Music", ' ');
|
|
|
|
assertEquals(parts.length, 1);
|
|
|
|
assertEquals(parts[0], "MTV\\ Music");
|
|
|
|
|
|
|
|
parts = DelimiterUtil.split("MTV Music", ' ');
|
|
|
|
assertEquals(parts.length, 2);
|
|
|
|
assertEquals(parts[0], "MTV");
|
|
|
|
assertEquals(parts[1], "Music");
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
public void testEscapeSplit() {
|
|
|
|
String input = "MTV Music";
|
|
|
|
String intermediate = DelimiterUtil.escape(input, ' ');
|
|
|
|
String[] parts = DelimiterUtil.split(intermediate, ' ');
|
|
|
|
|
|
|
|
assertEquals(parts.length, 1);
|
|
|
|
assertEquals(parts[0], "MTV\\ Music");
|
|
|
|
assertEquals(DelimiterUtil.unescape(parts[0], ' '), "MTV Music");
|
|
|
|
|
|
|
|
input = "MTV\\ Music";
|
|
|
|
intermediate = DelimiterUtil.escape(input, ' ');
|
|
|
|
parts = DelimiterUtil.split(intermediate, ' ');
|
|
|
|
|
|
|
|
assertEquals(parts.length, 1);
|
|
|
|
assertEquals(parts[0], "MTV\\\\ Music");
|
|
|
|
assertEquals(DelimiterUtil.unescape(parts[0], ' '), "MTV\\ Music");
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|