Index: editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/CacheTest.java |
=================================================================== |
--- editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/CacheTest.java (revision 0) |
+++ editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/CacheTest.java (revision 0) |
@@ -0,0 +1,171 @@ |
+package com.google.dart.tools.core.analysis; |
+ |
+import junit.framework.TestCase; |
+ |
+import java.io.File; |
+import java.io.IOException; |
+import java.io.StringReader; |
+import java.io.StringWriter; |
+import java.util.ArrayList; |
+import java.util.HashMap; |
+import java.util.HashSet; |
+import java.util.Map; |
+import java.util.Set; |
+ |
+public class CacheTest extends TestCase { |
+ |
+ private StringWriter stringWriter; |
+ private CacheWriter cacheWriter; |
+ private StringReader stringReader; |
+ private CacheReader cacheReader; |
+ |
+ public void test_AnalysisCache_boolean() throws Exception { |
+ initWriter(); |
+ cacheWriter.writeBoolean(true); |
+ cacheWriter.writeBoolean(false); |
+ initReader(); |
+ assertTrue(cacheReader.readBoolean()); |
+ assertFalse(cacheReader.readBoolean()); |
+ assertTrue(stringReader.read() == -1); |
+ } |
+ |
+ public void test_AnalysisCache_empty() throws Exception { |
+ initWriter(); |
+ initReader(); |
+ assertTrue(stringReader.read() == -1); |
+ } |
+ |
+ public void test_AnalysisCache_filePaths() throws Exception { |
+ initWriter(); |
+ ArrayList<File> expected = new ArrayList<File>(); |
+ expected.add(new File("one")); |
+ expected.add(new File("two/three").getAbsoluteFile()); |
+ String endTag = "my-end-tag"; |
+ cacheWriter.writeFilePaths(expected, endTag); |
+ cacheWriter.writeString("another"); |
+ initReader(); |
+ ArrayList<File> actual = new ArrayList<File>(); |
+ cacheReader.readFilePaths(actual, endTag); |
+ assertEquals(expected, actual); |
+ assertEquals("another", cacheReader.readString()); |
+ assertTrue(stringReader.read() == -1); |
+ } |
+ |
+ public void test_AnalysisCache_string_backslash() throws Exception { |
+ writeAndReadStrings("\\hello\\"); |
+ } |
+ |
+ public void test_AnalysisCache_string_backslash2() throws Exception { |
+ writeAndReadStrings("\\hel\\\nlo\\"); |
+ } |
+ |
+ public void test_AnalysisCache_string_bang() throws Exception { |
+ writeAndReadStrings("!one"); |
+ } |
+ |
+ public void test_AnalysisCache_string_bang2() throws Exception { |
+ writeAndReadStrings("!one!\r!two!"); |
+ } |
+ |
+ public void test_AnalysisCache_string_cr() throws Exception { |
+ writeAndReadStrings("one\rtwo"); |
+ } |
+ |
+ public void test_AnalysisCache_string_cr_newline() throws Exception { |
+ writeAndReadStrings("one\r\ntwo"); |
+ } |
+ |
+ public void test_AnalysisCache_string_empty() throws Exception { |
+ writeAndReadStrings(""); |
+ } |
+ |
+ public void test_AnalysisCache_string_multiple() throws Exception { |
+ writeAndReadStrings("one", "", "!one", "!one!\r!two!", "/comp\"plex\\", "four"); |
+ } |
+ |
+ public void test_AnalysisCache_string_newline() throws Exception { |
+ writeAndReadStrings("one\ntwo"); |
+ } |
+ |
+ public void test_AnalysisCache_string_simple() throws Exception { |
+ writeAndReadStrings("hello"); |
+ } |
+ |
+ public void test_AnalysisCache_string_slash() throws Exception { |
+ writeAndReadStrings("/hello/"); |
+ } |
+ |
+ public void test_AnalysisCache_stringFileMap() throws Exception { |
+ initWriter(); |
+ Map<String, File> expected = new HashMap<String, File>(); |
+ expected.put("one", new File("xOne")); |
+ expected.put("two", new File("something")); |
+ expected.put("three", new File("third")); |
+ String endTag = "my-end-tag"; |
+ cacheWriter.writeStringFileMap(expected, endTag); |
+ cacheWriter.writeString("another"); |
+ initReader(); |
+ Map<String, File> actual = cacheReader.readStringFileMap(endTag); |
+ assertEquals(expected, actual); |
+ assertEquals("another", cacheReader.readString()); |
+ assertTrue(stringReader.read() == -1); |
+ } |
+ |
+ public void test_AnalysisCache_stringSet() throws Exception { |
+ initWriter(); |
+ Set<String> expected = new HashSet<String>(); |
+ expected.add("one"); |
+ expected.add("two"); |
+ expected.add("three"); |
+ String endTag = "my-end-tag"; |
+ cacheWriter.writeStringSet(expected, endTag); |
+ cacheWriter.writeString("another"); |
+ initReader(); |
+ HashSet<String> actual = cacheReader.readStringSet(endTag); |
+ assertEquals(expected, actual); |
+ assertEquals("another", cacheReader.readString()); |
+ assertTrue(stringReader.read() == -1); |
+ } |
+ |
+ public void test_AnalysisCache_versionInvalid() throws Exception { |
+ stringReader = new StringReader("stuff"); |
+ try { |
+ cacheReader = new CacheReader(stringReader); |
+ fail("Expected IOException because of invalid version number"); |
+ } catch (IOException e) { |
+ //$FALL-THROUGH$ |
+ } |
+ } |
+ |
+ public void test_AnalysisCache_versionMissing() throws Exception { |
+ stringReader = new StringReader(""); |
+ try { |
+ cacheReader = new CacheReader(stringReader); |
+ fail("Expected IOException because of missing version number"); |
+ } catch (IOException e) { |
+ //$FALL-THROUGH$ |
+ } |
+ } |
+ |
+ private void initReader() throws IOException { |
+ stringReader = new StringReader(stringWriter.toString()); |
+ cacheReader = new CacheReader(stringReader); |
+ } |
+ |
+ private void initWriter() { |
+ stringWriter = new StringWriter(200); |
+ cacheWriter = new CacheWriter(stringWriter); |
+ } |
+ |
+ private void writeAndReadStrings(String... strings) throws IOException { |
+ initWriter(); |
+ for (String string : strings) { |
+ cacheWriter.writeString(string); |
+ } |
+ initReader(); |
+ for (String string : strings) { |
+ assertEquals(string, cacheReader.readString()); |
+ } |
+ assertTrue(stringReader.read() == -1); |
+ } |
+} |