package org.rubypeople.rdt.core.util;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;
import junit.framework.TestCase;
import org.rubypeople.rdt.core.util.Util.Displayable;
public class UtilTest extends TestCase
{
public void testGetFileByteContent() throws Exception
{
byte[] content = new byte[] { 0, 123 };
File file = File.createTempFile("rdt_core_util_test_byte", "txt");
try
{
FileOutputStream out = null;
try
{
out = new FileOutputStream(file);
out.write(content);
}
finally
{
if (out != null)
out.close();
}
assertArrayContentsEquals(content, Util.getFileByteContent(file));
}
finally
{
file.delete();
}
}
private void assertArrayContentsEquals(byte[] expected, byte[] actual)
{
if (expected == null)
{
assertNull(actual);
return;
}
assertEquals(expected.length, actual.length);
int length = expected.length;
for (int i = 0; i < length; i++)
{
assertEquals(expected[i], actual[i]);
}
}
private void assertArrayContentsEquals(char[] expected, char[] actual)
{
if (expected == null)
{
assertNull(actual);
return;
}
assertEquals(expected.length, actual.length);
int length = expected.length;
for (int i = 0; i < length; i++)
{
assertEquals(expected[i], actual[i]);
}
}
public void testToStringObjectArrayDisplayable()
{
assertEquals("1, nil, 2", Util.toString(new Object[] { 1, null, 2 }, new Displayable()
{
public String displayString(Object o)
{
if (o == null)
return "nil";
return o.toString();
}
}));
}
public void testToStringObjectArray()
{
assertEquals("1, 2, 3", Util.toString(new Object[] { 1, 2, 3 }));
assertEquals("1, null, 3", Util.toString(new Object[] { 1, null, 3 }));
assertEquals("", Util.toString(null));
assertEquals("1, string, true, 0.3", Util.toString(new Object[] { 1, "string", true, 0.3f }));
}
public void testGetFileCharContent() throws Exception
{
char[] content = new char[] { '1', 'a' };
File file = File.createTempFile("rdt_core_util_test_char", "txt");
try
{
FileWriter out = null;
try
{
out = new FileWriter(file);
out.write(content);
}
finally
{
if (out != null)
out.close();
}
assertArrayContentsEquals(content, Util.getFileCharContent(file, null));
}
finally
{
file.delete();
}
}
public void testCamelCaseToUnderscores()
{
assertEquals("this_method", Util.camelCaseToUnderscores("thisMethod"));
assertEquals("this_method", Util.camelCaseToUnderscores("ThisMethod"));
assertEquals("self", Util.camelCaseToUnderscores("self"));
}
public void testUnderscoresToCamelCase()
{
assertEquals("ThisMethod", Util.underscoresToCamelCase("this_method"));
assertEquals("Self", Util.underscoresToCamelCase("self"));
}
public void testIsOperator()
{
assertTrue(Util.isOperator("+"));
assertTrue(Util.isOperator("/="));
assertTrue(Util.isOperator("/"));
assertTrue(Util.isOperator("*="));
assertTrue(Util.isOperator("**"));
assertTrue(Util.isOperator("*"));
assertTrue(Util.isOperator("-="));
assertTrue(Util.isOperator("="));
assertTrue(Util.isOperator("+="));
assertTrue(Util.isOperator("-"));
assertTrue(Util.isOperator(">>"));
assertTrue(Util.isOperator("<<"));
assertTrue(Util.isOperator("&"));
assertTrue(Util.isOperator("|"));
assertTrue(Util.isOperator("&&"));
assertTrue(Util.isOperator("||"));
assertTrue(Util.isOperator("||="));
assertTrue(Util.isOperator(">"));
assertTrue(Util.isOperator("<"));
assertTrue(Util.isOperator("<="));
assertTrue(Util.isOperator(">="));
assertTrue(Util.isOperator("<=>"));
assertTrue(Util.isOperator("=="));
assertTrue(Util.isOperator("==="));
assertTrue(Util.isOperator("!="));
assertTrue(Util.isOperator("=~"));
assertTrue(Util.isOperator("!~"));
assertTrue(Util.isOperator(".."));
assertTrue(Util.isOperator("..."));
assertTrue(Util.isOperator("^"));
assertTrue(Util.isOperator("."));
assertTrue(Util.isOperator("%"));
assertTrue(Util.isOperator("[]"));
assertTrue(Util.isOperator("!"));
assertTrue(Util.isOperator("~"));
assertFalse(Util.isOperator(","));
assertFalse(Util.isOperator("chris"));
assertFalse(Util.isOperator("null"));
assertFalse(Util.isOperator("1"));
}
public void testIsKeyword()
{
assertTrue(Util.isKeyword("true"));
assertTrue(Util.isKeyword("false"));
assertTrue(Util.isKeyword("def"));
assertTrue(Util.isKeyword("end"));
assertTrue(Util.isKeyword("retry"));
assertTrue(Util.isKeyword("return"));
assertTrue(Util.isKeyword("class"));
assertTrue(Util.isKeyword("module"));
assertTrue(Util.isKeyword("self"));
assertTrue(Util.isKeyword("super"));
assertTrue(Util.isKeyword("nil"));
assertFalse(Util.isKeyword(null));
assertFalse(Util.isKeyword("chris"));
assertFalse(Util.isKeyword("test"));
}
public void testFindFileWithOptionalSuffix() throws Exception
{
List<File> filesToCleanUp = new ArrayList<File>();
String tmpDir = System.getProperty("java.io.tmpdir");
File dirToUse = new File(tmpDir, "coreUtilTest");
dirToUse.mkdir();
File exeFile = new File(dirToUse, "ruby1.9.exe");
filesToCleanUp.add(exeFile);
File binFile = new File(dirToUse, "ruby1.6");
filesToCleanUp.add(binFile);
File txtFile = new File(dirToUse, "ruby18.txt");
filesToCleanUp.add(txtFile);
for (File file : filesToCleanUp)
{
file.createNewFile();
}
filesToCleanUp.add(dirToUse);
try
{
assertEquals(exeFile.getAbsolutePath(), Util.findFileWithOptionalSuffix(
dirToUse.getAbsolutePath() + File.separator + "ruby.exe").getAbsolutePath());
assertEquals(txtFile.getAbsolutePath(), Util.findFileWithOptionalSuffix(
dirToUse.getAbsolutePath() + File.separator + "ruby.txt").getAbsolutePath());
assertEquals(binFile.getAbsolutePath(), Util.findFileWithOptionalSuffix(
dirToUse.getAbsolutePath() + File.separator + "ruby").getAbsolutePath());
}
finally
{
for (File file : filesToCleanUp)
{
if (!file.delete())
{
file.deleteOnExit();
}
}
}
}
}