Adding more unit tests.
diff --git a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/grammar/CompoundElement_charCount_Test.java b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/grammar/CompoundElement_charCount_Test.java
new file mode 100644
index 0000000..5a7f449
--- /dev/null
+++ b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/grammar/CompoundElement_charCount_Test.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2011 Google Inc.
+ *
+ * All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse
+ * Public License v1.0 which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ */
+package com.google.eclipse.protobuf.ui.grammar;
+
+import static com.google.eclipse.protobuf.ui.grammar.CompoundElement.*;
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.junit.Assert.assertThat;
+
+import org.junit.Test;
+
+/**
+ * Tests for <code>{@link CompoundElement#charCount()}</code>.
+ *
+ * @author alruiz@google.com (Alex Ruiz)
+ */
+public class CompoundElement_charCount_Test {
+
+ @Test public void should_return_number_of_characters_in_value() {
+ assertThat(DEFAULT_EQUAL.charCount(), equalTo(DEFAULT_EQUAL.toString().length()));
+ assertThat(DEFAULT_EQUAL_IN_BRACKETS.charCount(), equalTo(DEFAULT_EQUAL_IN_BRACKETS.toString().length()));
+ }
+
+}
diff --git a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/grammar/CompoundElement_indexOf_Test.java b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/grammar/CompoundElement_indexOf_Test.java
new file mode 100644
index 0000000..15ef28d
--- /dev/null
+++ b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/grammar/CompoundElement_indexOf_Test.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2011 Google Inc.
+ *
+ * All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse
+ * Public License v1.0 which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ */
+package com.google.eclipse.protobuf.ui.grammar;
+
+import static com.google.eclipse.protobuf.ui.grammar.CommonKeyword.*;
+import static com.google.eclipse.protobuf.ui.grammar.CompoundElement.DEFAULT_EQUAL;
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.junit.Assert.assertThat;
+
+import org.junit.Test;
+
+/**
+ * Tests for <code>{@link CompoundElement#indexOf(CommonKeyword)}</code>.
+ *
+ * @author alruiz@google.com (Alex Ruiz)
+ */
+public class CompoundElement_indexOf_Test {
+
+ @Test public void should_return_index_of_keyword_as_substring() {
+ assertThat(DEFAULT_EQUAL.indexOf(EQUAL), equalTo(DEFAULT_EQUAL.toString().indexOf(EQUAL.toString())));
+ }
+
+ @Test public void should_return_negative_one_if_keyword_not_found() {
+ assertThat(DEFAULT_EQUAL.indexOf(TRUE), equalTo(-1));
+ }
+}
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/grammar/CompoundElement.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/grammar/CompoundElement.java
index 18612a5..030ea0f 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/grammar/CompoundElement.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/grammar/CompoundElement.java
@@ -11,7 +11,7 @@
import static com.google.eclipse.protobuf.ui.grammar.CommonKeyword.*;
/**
- * Element composed of one or more keywords.
+ * Element composed of more than one keyword.
*
* @author alruiz@google.com (Alex Ruiz)
*/
@@ -27,28 +27,18 @@
private final String value;
- private static String join(CommonKeyword...keywords) {
+ private static String join(Object...objects) {
StringBuilder buffer = new StringBuilder();
- int count = keywords.length;
+ int count = objects.length;
for (int i = 0; i < count; i++) {
- buffer.append(keywords[i].toString());
- if (i < count - 1) buffer.append(" ");
- }
- return buffer.toString();
- }
-
- private static String join(CompoundElement...elements) {
- StringBuilder buffer = new StringBuilder();
- int count = elements.length;
- for (int i = 0; i < count; i++) {
- buffer.append(elements[i].value);
+ buffer.append(objects[i].toString());
if (i < count - 1) buffer.append(" ");
}
return buffer.toString();
}
private static String inBrackets(CompoundElement element) {
- return String.format("[%s]", element.value);
+ return OPENING_BRACKET + element.value + CLOSING_BRACKET;
}
private CompoundElement(String value) {
@@ -66,7 +56,7 @@
}
/**
- * Returns the number of characters in this compound element.
+ * Returns the number of characters in this compound element (similar to calling {@code toString().length()}.)
* @return the number of characters in this compound element.
*/
public int charCount() {
@@ -74,7 +64,8 @@
}
/**
- * Returns the index within this compound element of the first occurrence of the value of the specified keyword.
+ * Returns the index within this compound element of the first occurrence of the value of the specified keyword
+ * (similar to calling {@code toString().indexOf(keyword.toString())}.
* @param keyword the given keyword.
* @return the index within this compound element of the first occurrence of the value of the specified keyword; -1
* if the value of the given keyword is not found.