Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskDataStoreTest.java')
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskDataStoreTest.java74
1 files changed, 66 insertions, 8 deletions
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskDataStoreTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskDataStoreTest.java
index 0ad07bd3b..9c60fc9d1 100644
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskDataStoreTest.java
+++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskDataStoreTest.java
@@ -16,7 +16,9 @@ import java.util.Date;
import junit.framework.TestCase;
+import org.apache.commons.lang.RandomStringUtils;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.mylyn.commons.sdk.util.CommonTestUtil;
import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager;
import org.eclipse.mylyn.internal.tasks.core.data.TaskDataState;
import org.eclipse.mylyn.internal.tasks.core.data.TaskDataStore;
@@ -198,8 +200,6 @@ public class TaskDataStoreTest extends TestCase {
setupData();
data.getRoot().createAttribute("attribute").setValue("\u0000");
- File file = File.createTempFile("mylyn", null);
- file.deleteOnExit();
storage.putTaskData(file, state);
try {
@@ -213,8 +213,6 @@ public class TaskDataStoreTest extends TestCase {
setupData();
data.getRoot().createAttribute("attribute").setValue("\u0001\u001F");
- File file = File.createTempFile("mylyn", null);
- file.deleteOnExit();
storage.putTaskData(file, state);
TaskDataState state2 = storage.getTaskDataState(file);
@@ -225,8 +223,6 @@ public class TaskDataStoreTest extends TestCase {
setupData();
data.getRoot().createAttribute("attribute").setValue("\u007F\u0080");
- File file = File.createTempFile("mylyn", null);
- file.deleteOnExit();
storage.putTaskData(file, state);
TaskDataState state2 = storage.getTaskDataState(file);
@@ -237,8 +233,6 @@ public class TaskDataStoreTest extends TestCase {
setupData();
data.getRoot().createAttribute("attribute").setValue("\u0001\u001F\u007F\u0080");
- File file = File.createTempFile("mylyn", null);
- file.deleteOnExit();
storage.putTaskData(file, state);
if (System.getProperty("java.version").compareTo("1.6") < 0) {
@@ -257,4 +251,68 @@ public class TaskDataStoreTest extends TestCase {
}
}
+ public void testCorruptedData() throws Exception {
+ if (!hasXerces()) {
+ System.err.println("Skipping testCorruptedData() due to Xerces missing");
+ return;
+ }
+ state = storage.getTaskDataState(CommonTestUtil.getFile(this, "testdata/taskdata-bug406647.zip"));
+ assertFalse(state.getRepositoryData().getRoot().toString().contains("<ke"));
+ assertFalse(state.getRepositoryData().getRoot().toString().contains("<va"));
+ assertFalse(state.getRepositoryData().getRoot().toString().contains("ey>"));
+ assertFalse(state.getRepositoryData().getRoot().toString().contains("al>"));
+ }
+
+ private boolean hasXerces() {
+ try {
+ Class.forName("org.apache.xerces.parsers.SAXParser");
+ return true;
+ } catch (ClassNotFoundException e) {
+ return false;
+ }
+ }
+
+ public void testRandomDataXml_1_0() throws Exception {
+ randomData(32, Integer.MAX_VALUE);
+ }
+
+ public void testRandomDataXml_1_1() throws Exception {
+ if (!hasXerces()) {
+ System.err.println("Skipping testRandomDataXml_1_1 due to Xerces missing");
+ return;
+ }
+ randomData(0, Integer.MAX_VALUE);
+ }
+
+ private void randomData(int start, int end) throws Exception {
+ setupData();
+
+ for (int i = 0; i < 1000; i++) {
+ TaskAttribute attribute = data.getRoot().createAttribute("testId");
+ attribute.getMetaData().setLabel(generateString(start, end));
+ attribute.putOption(generateString(start, end), generateString(start, end));
+ attribute.putOption(generateString(start, end), generateString(start, end));
+ attribute.addValue(generateString(start, end));
+ attribute.addValue(generateString(start, end));
+ if (start == 0) {
+ // ensure that XML is read as version 1.1
+ attribute.addValue(generateString(start, end) + "\u0001");
+ }
+ }
+
+ String expectedValue = data.getRoot().toString();
+ storage.putTaskData(file, state);
+
+ state = storage.getTaskDataState(file);
+ String actualValue = state.getRepositoryData().getRoot().toString();
+ assertEquals(expectedValue, actualValue);
+ }
+
+ /**
+ * Returns a random string that doesn't contain "key" or "val".
+ */
+ private String generateString(int start, int end) {
+ return RandomStringUtils.random(1000, start, end, true, true);
+ }
+
}

Back to the top