Преглед на файлове

Try to stop the downloader test flaking.

Replace tempremental in-order mocking with a real output stream.
Allow maps to be serialised in any order.

Change-Id: Ie181cc23920b98717acdcac0fce02a9afdce6e85
Reviewed-on: http://gerrit.dmdirc.com/4066
Reviewed-by: Greg Holmes <greg@dmdirc.com>
Automatic-Compile: DMDirc Build Manager
changes/66/4066/2
Chris Smith преди 9 години
родител
ревизия
c4dde2f42b
променени са 1 файла, в които са добавени 25 реда и са изтрити 22 реда
  1. 25
    22
      test/com/dmdirc/util/io/DownloaderTest.java

+ 25
- 22
test/com/dmdirc/util/io/DownloaderTest.java Целия файл

@@ -26,16 +26,10 @@ import com.google.common.collect.Lists;
26 26
 import com.google.common.collect.Maps;
27 27
 import com.google.common.jimfs.Configuration;
28 28
 import com.google.common.jimfs.Jimfs;
29
-import org.junit.Before;
30
-import org.junit.Test;
31
-import org.junit.runner.RunWith;
32
-import org.mockito.InOrder;
33
-import org.mockito.Mock;
34
-import org.mockito.runners.MockitoJUnitRunner;
35 29
 
36 30
 import java.io.ByteArrayInputStream;
31
+import java.io.ByteArrayOutputStream;
37 32
 import java.io.IOException;
38
-import java.io.OutputStream;
39 33
 import java.net.URLConnection;
40 34
 import java.nio.charset.Charset;
41 35
 import java.nio.file.FileSystem;
@@ -43,24 +37,36 @@ import java.nio.file.Files;
43 37
 import java.nio.file.Path;
44 38
 import java.util.Map;
45 39
 
46
-import static org.junit.Assert.*;
40
+import org.junit.Before;
41
+import org.junit.Test;
42
+import org.junit.runner.RunWith;
43
+import org.mockito.Mock;
44
+import org.mockito.runners.MockitoJUnitRunner;
45
+
46
+import static org.junit.Assert.assertEquals;
47
+import static org.junit.Assert.assertFalse;
48
+import static org.junit.Assert.assertTrue;
47 49
 import static org.mockito.Matchers.anyBoolean;
48
-import static org.mockito.Matchers.anyByte;
49 50
 import static org.mockito.Matchers.anyInt;
50
-import static org.mockito.Mockito.*;
51
+import static org.mockito.Mockito.atLeastOnce;
52
+import static org.mockito.Mockito.never;
53
+import static org.mockito.Mockito.verify;
54
+import static org.mockito.Mockito.when;
51 55
 
52 56
 @RunWith(MockitoJUnitRunner.class)
53 57
 public class DownloaderTest {
54 58
 
55 59
     @Mock private URLConnection mockedConnection;
56
-    @Mock private OutputStream os;
57 60
     @Mock private DownloadListener listener;
61
+    private ByteArrayOutputStream os;
58 62
     private FileSystem fakeFS;
59 63
 
60 64
     @Before
61 65
     public void setup() throws IOException {
62 66
         fakeFS = Jimfs.newFileSystem(Configuration.unix());
63
-        ByteArrayInputStream is = new ByteArrayInputStream(
67
+        os = new ByteArrayOutputStream();
68
+
69
+        final ByteArrayInputStream is = new ByteArrayInputStream(
64 70
                 "OMG IM A FAKE DOWNLOAD".getBytes("UTF-8"));
65 71
         when(mockedConnection.getInputStream()).thenReturn(is);
66 72
         when(mockedConnection.getOutputStream()).thenReturn(os);
@@ -72,7 +78,7 @@ public class DownloaderTest {
72 78
         new TestableDownloader().getPage("rar");
73 79
         verify(mockedConnection, never()).setRequestProperty("Content-Type",
74 80
                 "application/x-www-form-urlencoded");
75
-        verify(os, never()).write(anyByte());
81
+        assertEquals(0, os.size());
76 82
     }
77 83
 
78 84
     @Test
@@ -81,10 +87,7 @@ public class DownloaderTest {
81 87
         new TestableDownloader().getPage("rar", postData);
82 88
         verify(mockedConnection).setRequestProperty("Content-Type",
83 89
                 "application/x-www-form-urlencoded");
84
-        final InOrder order = inOrder(os);
85
-        for (int i=0; i < postData.length(); i++) {
86
-            order.verify(os).write((byte) postData.charAt(i));
87
-        }
90
+        assertEquals(postData, os.toString());
88 91
     }
89 92
 
90 93
     @Test
@@ -92,14 +95,13 @@ public class DownloaderTest {
92 95
         final Map<String, String> postData = Maps.newHashMap();
93 96
         postData.put("key1", "value1");
94 97
         postData.put("key2", "value2");
95
-        final String postDataString = "key1=value1&key2=value2";
96 98
         new TestableDownloader().getPage("rar", postData);
97 99
         verify(mockedConnection).setRequestProperty("Content-Type",
98 100
                 "application/x-www-form-urlencoded");
99
-        final InOrder order = inOrder(os);
100
-        for (int i=0; i < postDataString.length(); i++) {
101
-            order.verify(os).write(postDataString.charAt(i));
102
-        }
101
+
102
+        final String postDataString1 = "key1=value1&key2=value2";
103
+        final String postDataString2 = "key2=value2&key1=value1";
104
+        assertTrue(postDataString1.equals(os.toString()) || postDataString2.equals(os.toString()));
103 105
     }
104 106
 
105 107
     @Test
@@ -125,6 +127,7 @@ public class DownloaderTest {
125 127
     }
126 128
 
127 129
     private class TestableDownloader extends Downloader {
130
+        @Override
128 131
         protected URLConnection getURLConnection(final String url) throws IOException {
129 132
             return mockedConnection;
130 133
         }

Loading…
Отказ
Запис