package com.levelup.java.string;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.apache.log4j.Logger;
import org.junit.Test;
/**
* This java example will demonstrate comparing
* strings. Check out http://en.wikipedia.org/wiki/String_intern_pool
*
* @author Justin Musgrove
* @see <a href='http://www.leveluplunch.com/java/examples/compare-strings-java/'>Compare strings</a>
*
*/
public class CompareStrings {
private static final Logger logger = Logger.getLogger(CompareStrings.class);
@Test
public void compare_strings_in_java () {
boolean stringEquals = "test".equals("test");
assertTrue(stringEquals);
}
@Test
public void compare_strings_compiler_interned_in_java () {
String leftString = "test";
String rightString = "test";
if (leftString == rightString) {
logger.info("yes these are true b/c literals are interned by compiler");
}
assertEquals(leftString, rightString);
}
@Test
public void compare_strings_concatenation_in_java () {
String leftString = "test";
String rightString = "te" + "st";
if (leftString == rightString) {
logger.info("yes these are true b/c concatenation "
+ "of string literals happens at compile "
+ "time resulting in same objects");
}
assertEquals(leftString, rightString);
}
@Test
public void compare_strings_ignoring_case_in_java () {
boolean stringEquals = "test".equalsIgnoreCase("TEST");
assertTrue(stringEquals);
}
@Test
public void compare_strings_with_nulls_in_java () {
String leftString = null;
String rightString = null;
if (leftString == rightString) {
logger.info("yes");
}
assertEquals(leftString, rightString);
}
@SuppressWarnings("null")
@Test(expected=NullPointerException.class)
public void compare_strings_with_nulls_with_exception_in_java () {
String leftString = null;
String rightString = null;
logger.info("strings are objects so if "
+ "access a method on a null object, null pointer exception");
leftString.equals(rightString);
}
}