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