1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.data;
18
19
20 import java.io.BufferedReader;
21 import java.io.File;
22 import java.io.IOException;
23 import java.io.InputStream;
24 import java.io.InputStreamReader;
25 import java.io.Reader;
26 import java.net.URISyntaxException;
27 import java.net.URL;
28 import java.nio.charset.StandardCharsets;
29 import java.nio.file.Paths;
30
31 import org.junit.Assert;
32 import org.junit.Test;
33
34 public class DataSourceTest {
35
36 @Test
37 public void testNullStream() throws IOException {
38 DataSource ds = new DataSource("non-existent", () -> (InputStream) null);
39 Assert.assertEquals("non-existent", ds.getName());
40 Assert.assertNull(ds.getOpener().openStreamOnce());
41 Assert.assertNull(ds.getOpener().openReaderOnce());
42 }
43
44 @Test
45 public void testNullReader() throws IOException {
46 DataSource ds = new DataSource("non-existent", () -> (Reader) null);
47 Assert.assertEquals("non-existent", ds.getName());
48 Assert.assertNull(ds.getOpener().openStreamOnce());
49 Assert.assertNull(ds.getOpener().openReaderOnce());
50 }
51
52 @Test
53 public void testFileName() throws IOException, URISyntaxException {
54 URL url = DirectoryCrawlerTest.class.getClassLoader().getResource("regular-data/UTC-TAI.history");
55 DataSource ds = new DataSource(Paths.get(url.toURI()).toString());
56 Assert.assertTrue(ds.getName().endsWith("UTC-TAI.history"));
57 Assert.assertTrue(ds.getOpener().rawDataIsBinary());
58 try (InputStream is = ds.getOpener().openStreamOnce();
59 InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8);
60 BufferedReader br = new BufferedReader(isr)) {
61 checkHistory(br);
62 }
63 }
64
65 @Test
66 public void testFile() throws IOException, URISyntaxException {
67 URL url = DirectoryCrawlerTest.class.getClassLoader().getResource("regular-data/UTC-TAI.history");
68 DataSource ds = new DataSource(new File(url.toURI().getPath()));
69 Assert.assertTrue(ds.getName().endsWith("UTC-TAI.history"));
70 Assert.assertTrue(ds.getOpener().rawDataIsBinary());
71 try (InputStream is = ds.getOpener().openStreamOnce();
72 InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8);
73 BufferedReader br = new BufferedReader(isr)) {
74 checkHistory(br);
75 }
76 }
77
78 @Test
79 public void testUri() throws IOException, URISyntaxException {
80 URL url = DirectoryCrawlerTest.class.getClassLoader().getResource("regular-data/UTC-TAI.history");
81 DataSource ds = new DataSource(url.toURI());
82 Assert.assertTrue(ds.getName().endsWith("UTC-TAI.history"));
83 Assert.assertTrue(ds.getOpener().rawDataIsBinary());
84 try (InputStream is = ds.getOpener().openStreamOnce();
85 InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8);
86 BufferedReader br = new BufferedReader(isr)) {
87 checkHistory(br);
88 }
89 }
90
91 @Test
92 public void testDirectInputStream() throws IOException {
93 DataSource ds = new DataSource("UTC-TAI.history",
94 () -> DataSourceTest.class.
95 getClassLoader().
96 getResourceAsStream("regular-data/UTC-TAI.history"));
97 Assert.assertEquals("UTC-TAI.history", ds.getName());
98 Assert.assertTrue(ds.getOpener().rawDataIsBinary());
99 try (InputStream is = ds.getOpener().openStreamOnce();
100 InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8);
101 BufferedReader br = new BufferedReader(isr)) {
102 checkHistory(br);
103 }
104 }
105
106 @Test
107 public void testInputStreamToReader() throws IOException {
108 DataSource ds = new DataSource("UTC-TAI.history",
109 () -> DataSourceTest.class.
110 getClassLoader().
111 getResourceAsStream("regular-data/UTC-TAI.history"));
112 Assert.assertEquals("UTC-TAI.history", ds.getName());
113 Assert.assertTrue(ds.getOpener().rawDataIsBinary());
114 try (Reader r = ds.getOpener().openReaderOnce();
115 BufferedReader br = new BufferedReader(r)) {
116 checkHistory(br);
117 }
118 }
119
120 @Test
121 public void testDirectReader() throws IOException {
122 DataSource ds = new DataSource("UTC-TAI.history",
123 () -> new InputStreamReader(DataSourceTest.class.
124 getClassLoader().
125 getResourceAsStream("regular-data/UTC-TAI.history"),
126 StandardCharsets.UTF_8));
127 Assert.assertEquals("UTC-TAI.history", ds.getName());
128 Assert.assertFalse(ds.getOpener().rawDataIsBinary());
129 try (Reader r = ds.getOpener().openReaderOnce();
130 BufferedReader br = new BufferedReader(r)) {
131 checkHistory(br);
132 }
133 }
134
135 @Test
136 public void testReaderToInputStream() throws IOException {
137 DataSource ds = new DataSource("UTC-TAI.history",
138 () -> new InputStreamReader(DataSourceTest.class.
139 getClassLoader().
140 getResourceAsStream("regular-data/UTC-TAI.history"),
141 StandardCharsets.UTF_8));
142 Assert.assertEquals("UTC-TAI.history", ds.getName());
143 Assert.assertFalse(ds.getOpener().rawDataIsBinary());
144 try (InputStream is = ds.getOpener().openStreamOnce();
145 InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8);
146 BufferedReader br = new BufferedReader(isr)) {
147 checkHistory(br);
148 }
149 }
150
151 private void checkHistory(final BufferedReader br) throws IOException {
152 Assert.assertEquals("", br.readLine());
153 Assert.assertEquals(" ---------------", br.readLine());
154 Assert.assertEquals(" UTC-TAI.history", br.readLine());
155 Assert.assertEquals(" ---------------", br.readLine());
156 Assert.assertEquals(" RELATIONSHIP BETWEEN TAI AND UTC", br.readLine());
157 for (int lineNumber = 6; lineNumber < 47; ++lineNumber) {
158 br.readLine();
159 }
160 Assert.assertEquals(" 2012 Jul 1 - 2015 Jul 1 35s", br.readLine());
161 Assert.assertEquals(" 2015 Jul 1 - 36s", br.readLine());
162 Assert.assertEquals(" ----------------------------------------------------------------------", br.readLine());
163 Assert.assertNull(br.readLine());
164 }
165
166 }