Hands on Testing Java: Lab #3

Experiment #8: Characters and Character Strings

Do this...
Create a test-case class named Experiment08Test.

Textual Data

Textual data is represented in Java as a string of characters, which is implemented by the String data type. A character in Java is represented by the char data type.

A String literal begins and ends with double quotes, ", with any number of characters between the double quotes. A char literal begins and ends with single quotes, ', with exactly one character between the single quotes.

One important thing to understand is that a char is not a String and similarly a String is not a char.

Do this...
Create a test method in Experiment08Test named testTextTypes(), and add these statement:

assertEquals("a String is not a char", "H", 'H');
assertEquals("a char is not a String", 'H', "H");

Then compile the code.

Question #03.08.01 Write down the exact error message the compiler gives you for each line of code.
To be answered in Exercise Questions/lab03.txt.

Do this...
Comment out these bad lines of code.

Character Values

Let's try some declarations. This declares and initializes a char variable:

char ch1 = 'H';

Do this...
Create a test method in Experiment08Test named testChars(), and add this declaration. Compile, and run for a green bar. (You aren't asserting anything yet, so the real test here is to be able to compile the code.)

Compilers thrive on strict rules, and above we noted that a char represents a character. Is this singular important? What about two characters?

Do this...
Add this to the test:

char ch2 = 'Hi';

Then compile the test-case class.

Question #03.08.02 Write down the exact error message the compiler gives you.
To be answered in Exercise Questions/lab03.txt.

Question #03.08.03 What's the chance that we could put three or more characters in the single quotes?
To be answered in Exercise Questions/lab03.txt.

Do this...
Comment out the bad declaration.

Do this...
Add an assertEquals() statement to the test method to assert the value of ch1.

String Values

A string is a "string of characters". That's "characters", plural---more than one. If the compiler is as strict as I claim it is, this plural probably is significant.

Do this...
Create a test method in Experiment08Test named testStrings(), and add this declaration:

String str1 = "Hi there!";

Compile and run for a green bar.

Adding more characters seems reasonable, but what about fewer? How about one character in a String?

Do this...
Add this declaration to the test method:

String str2 = "H";

Compile and run the code for a green bar.

Interesting. What about no characters?

Do this...
Add this declaration to the test method:

String str3 = "";

Compile and run the code for a green bar.

This string literal with no characters in it is known as the empty string. It may seem a little silly, but it is handy in a variety of situations.

So, as it turns out, a String can have any number of characters in it.

String Operator

There's one String operator, and you'll use over and over again. The operator is the concatenation operator, represented in Java with the plus sign, +. So we can concatenate two Strings together. "Hi" + " " + "there" creates a new String "Hi there"---it contains all of the characters from the first, second, and third Strings in that expression.

If that's really the case, then this should work just fine:

assertEquals("string concatenation", "Hi there", "Hi" + " " + "there");

Do this...
Add that assert statement to testStrings(), compile, and run for a green bar.

Actually, Java is very flexible in concatenating Strings. The operands could even be chars:

Do this...
Add this assert statement to the test method:

assertEquals("string concatenation with a char", ???, "Hi" + ' ' + "there");

Replace the ??? with the appropriate value, compile, and run the test-case class for a green bar.

In fact, Java is very, very flexible in concatenating Strings. You can use any type of data in a concatenation:

Do this...
Add this assert statement to the test method:

assertEquals("int concatenated to string", ???, 123 + "456");

Replace the ??? with the appropriate value, compile, and run the test-case class for a green bar.

In Java, Strings are more "important" than ints, so this is seen as String concatenation. Consequently, the integer 123 is turned into a String consisting of the appropriate characters; that String is concatenated with the second String.

Terminology

character, concatenation operator, empty string, string of characters