-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvarious_test.go
More file actions
134 lines (106 loc) · 2.42 KB
/
various_test.go
File metadata and controls
134 lines (106 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package gpelements
import (
"encoding/json"
"encoding/xml"
"fmt"
"strings"
"testing"
)
var (
testTLE = `0 ISS (ZARYA)
1 25544U 98067A 20262.67636574 .00000241 00000+0 12514-4 0 9990
2 25544 51.6432 245.8351 0000884 104.2674 236.9442 15.48952759246507`
)
func sameTLELine(line, check string) bool {
if strings.TrimSpace(line) == strings.TrimSpace(check) {
return true
}
// '1 08820U 76039A 20262.42169440 -.00000003 00000-0 00000+0 0 9998'
// '1 08820U 76039A 20262.42169440 -.00000003 00000-0 00000-0 0 9999'
// Recompute checksum.
line = line[0 : len(line)-1]
line = line + checksum(line)
return strings.TrimSpace(line) == strings.TrimSpace(check)
}
func TestTLEOne(t *testing.T) {
var (
tle = testTLE
e *Elements
err error
js []byte
)
t.Run("TLE", func(t *testing.T) {
lines := strings.SplitN(tle, "\n", 3)
if len(lines) != 3 {
t.Fatal(len(lines))
}
if e, err = ParseTLE(lines[0], lines[1], lines[2]); err != nil {
t.Fatal(err)
}
if js, err = json.MarshalIndent(e, "", " "); err != nil {
t.Fatal(err)
}
check := make([]string, 3)
check[0], check[1], check[2], err = e.MarshalTLE()
if err != nil {
t.Fatal(err)
}
for i, line := range lines {
if !sameTLELine(line, check[i]) {
err = fmt.Errorf("different\n'%s'\n'%s'\n\n", line, check[i])
t.Fatal(err)
}
}
})
t.Run("CSV", func(t *testing.T) {
csv, err := e.MarshalCSV()
if err != nil {
t.Fatal(err)
}
check, _, err := ParseCSV(csv)
if err != nil {
t.Fatal(err)
}
jsc, err := json.MarshalIndent(check, "", " ")
if err != nil {
t.Fatal(err)
}
if string(jsc) != string(js) {
t.Fatal(string(jsc))
}
})
t.Run("KVN", func(t *testing.T) {
kvn, err := e.MarshalKVN()
if err != nil {
t.Fatal(err)
}
check, _, err := ParseKVN(kvn)
if err != nil {
t.Fatalf("error %s\n%s", err, kvn)
}
jsc, err := json.MarshalIndent(check, "", " ")
if err != nil {
t.Fatal(err)
}
if string(jsc) != string(js) {
t.Fatal(string(jsc))
}
})
t.Run("XML", func(t *testing.T) {
bs, err := xml.MarshalIndent(e, "", " ")
if err != nil {
t.Fatal(err)
}
check := NewElements()
if err := xml.Unmarshal(bs, check); err != nil {
t.Fatal(err)
}
jsc, err := json.MarshalIndent(check, "", " ")
if err != nil {
t.Fatal(err)
}
if string(jsc) != string(js) {
t.Fatal(string(js) + "\n" + string(bs) + "\n" + string(jsc))
}
})
}