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