1
+ package io.muun.apollo.data.os
2
+
3
+ import io.muun.apollo.data.toSafeAscii
4
+ import org.junit.Assert
5
+ import org.junit.Test
6
+
7
+ class ExtensionsTest {
8
+
9
+ private val languages = arrayListOf (
10
+ " ascii: Hello word!!" ,
11
+ " japanese: ドメイン名例" ,
12
+ " japaneseWithAscii: MajiでKoiする5秒前" ,
13
+ " already encoded japanese: \u30c9\u30e1\u30a4\u30f3\u540d\u4f8b " ,
14
+ " korean: 도메인" ,
15
+ " thai: ยจฆฟคฏข" ,
16
+ " russian: правда" ,
17
+ " emoji: 😉" ,
18
+ " non encoded: \\\\ ud83d9" ,
19
+ " non-ascii mixup: 「 Б ü æ α 例 αβγ 」" ,
20
+ ).joinToString(" \n " )
21
+
22
+ private val expectedEncodedLanguages = " ascii: Hello word!!\n " +
23
+ " japanese: \\ u30c9\\ u30e1\\ u30a4\\ u30f3\\ u540d\\ u4f8b\n " +
24
+ " japaneseWithAscii: Maji\\ u3067Koi\\ u3059\\ u308b5\\ u79d2\\ u524d\n " +
25
+ " already encoded japanese: \\ u30c9\\ u30e1\\ u30a4\\ u30f3\\ u540d\\ u4f8b\n " +
26
+ " korean: \\ ub3c4\\ uba54\\ uc778\n " +
27
+ " thai: \\ u0e22\\ u0e08\\ u0e06\\ u0e1f\\ u0e04\\ u0e0f\\ u0e02\n " +
28
+ " russian: \\ u043f\\ u0440\\ u0430\\ u0432\\ u0434\\ u0430\n " +
29
+ " emoji: \\ ud83d\\ ude09\n " +
30
+ " non encoded: \\\\ ud83d9\n " +
31
+ " non-ascii mixup: \\ u300c \\ u0411 \\ u00fc \\ u00e6 \\ u03b1 \\ u4f8b \\ u03b1\\ u03b2\\ u03b3 \\ u300d"
32
+
33
+ private val actualResponse = " {\n " +
34
+ " \" epochInMilliseconds\" : 1734567549279,\n " +
35
+ " \" batteryLevel\" : 92,\n " +
36
+ " \" maxBatteryLevel\" : 100,\n " +
37
+ " \" batteryHealth\" : \" GOOD\" ,\n " +
38
+ " \" batteryDischargePrediction\" : -1,\n " +
39
+ " \" batteryState\" : \" UNPLUGGED\" ,\n " +
40
+ " \" totalInternalStorage\" : 3087986688,\n " +
41
+ " \" freeInternalStorage\" : 866512896,\n " +
42
+ " \" freeExternalStorage\" : [\n " +
43
+ " 530092032,\n " +
44
+ " 75595776\n " +
45
+ " ],\n " +
46
+ " \" totalExternalStorage\" : [\n " +
47
+ " 18224549888,\n " +
48
+ " 2438987776\n " +
49
+ " ],\n " +
50
+ " \" totalRamStorage\" : 1922134016,\n " +
51
+ " \" freeRamStorage\" : 519774208,\n " +
52
+ " \" dataState\" : \" DATA_DISCONNECTED\" ,\n " +
53
+ " \" simStates\" : [\n " +
54
+ " \" SIM_STATE_READY\" ,\n " +
55
+ " \" SIM_STATE_READY\"\n " +
56
+ " ],\n " +
57
+ " \" networkTransport\" : \" WIFI\" ,\n " +
58
+ " \" androidUptimeMillis\" : 450455711,\n " +
59
+ " \" androidElapsedRealtimeMillis\" : 787550180,\n " +
60
+ " \" androidBootCount\" : 980,\n " +
61
+ " \" language\" : \" es_ES\" ,\n " +
62
+ " \" timeZoneOffsetInSeconds\" : -14400,\n " +
63
+ " \" telephonyNetworkRegion\" : \" VE\" ,\n " +
64
+ " \" simRegion\" : \" ve\" ,\n " +
65
+ " \" appDataDir\" : \" /data/user/0/io.muun.apollo\" ,\n " +
66
+ " \" vpnState\" : 0,\n " +
67
+ " \" appImportance\" : 230,\n " +
68
+ " \" displayMetrics\" : {\n " +
69
+ " \" density\" : 1.75,\n " +
70
+ " \" densityDpi\" : 280,\n " +
71
+ " \" widthPixels\" : 720,\n " +
72
+ " \" heightPixels\" : 1422,\n " +
73
+ " \" xdpi\" : 281.353,\n " +
74
+ " \" ydpi\" : 283.028\n " +
75
+ " },\n " +
76
+ " \" usbConnected\" : 0,\n " +
77
+ " \" usbPersistConfig\" : \" mtp\" ,\n " +
78
+ " \" bridgeEnabled\" : 0,\n " +
79
+ " \" bridgeDaemonStatus\" : \" stopped\" ,\n " +
80
+ " \" developerEnabled\" : 1,\n " +
81
+ " \" proxyHttp\" : \"\" ,\n " +
82
+ " \" proxyHttps\" : \"\" ,\n " +
83
+ " \" proxySocks\" : \"\" ,\n " +
84
+ " \" autoDateTime\" : 1,\n " +
85
+ " \" autoTimeZone\" : 1,\n " +
86
+ " \" timeZoneId\" : \" America/Caracas\" ,\n " +
87
+ " \" androidDateFormat\" : \" d/M/yy\" ,\n " +
88
+ " \" regionCode\" : \" ES\" ,\n " +
89
+ " \" androidCalendarIdentifier\" : \" gregory\" ,\n " +
90
+ " \" androidMobileRxTraffic\" : 0,\n " +
91
+ " \" androidSimOperatorId\" : \" 73404\" ,\n " +
92
+ " \" androidSimOperatorName\" : \" Corporación Digitel\" ,\n " +
93
+ " \" androidMobileOperatorId\" : \" 73402\" ,\n " +
94
+ " \" mobileOperatorName\" : \" DIGITEL\" ,\n " +
95
+ " \" androidMobileRoaming\" : false,\n " +
96
+ " \" androidMobileDataStatus\" : 0,\n " +
97
+ " \" androidMobileRadioType\" : 1,\n " +
98
+ " \" androidMobileDataActivity\" : 2,\n " +
99
+ " \" androidNetworkLink\" : {\n " +
100
+ " \" interfaceName\" : \" wlan0\" ,\n " +
101
+ " \" routesSize\" : 3,\n " +
102
+ " \" routesInterfaces\" : [\n " +
103
+ " \" wlan0\"\n " +
104
+ " ],\n " +
105
+ " \" hasGatewayRoute\" : 1,\n " +
106
+ " \" dnsAddresses\" : [\n " +
107
+ " \" 192.168.0.1\"\n " +
108
+ " ],\n " +
109
+ " \" linkHttpProxyHost\" : \"\"\n " +
110
+ " }\n " +
111
+ " }"
112
+
113
+ private val expectedEncodedResponse = " {\n " +
114
+ " \" epochInMilliseconds\" : 1734567549279,\n " +
115
+ " \" batteryLevel\" : 92,\n " +
116
+ " \" maxBatteryLevel\" : 100,\n " +
117
+ " \" batteryHealth\" : \" GOOD\" ,\n " +
118
+ " \" batteryDischargePrediction\" : -1,\n " +
119
+ " \" batteryState\" : \" UNPLUGGED\" ,\n " +
120
+ " \" totalInternalStorage\" : 3087986688,\n " +
121
+ " \" freeInternalStorage\" : 866512896,\n " +
122
+ " \" freeExternalStorage\" : [\n " +
123
+ " 530092032,\n " +
124
+ " 75595776\n " +
125
+ " ],\n " +
126
+ " \" totalExternalStorage\" : [\n " +
127
+ " 18224549888,\n " +
128
+ " 2438987776\n " +
129
+ " ],\n " +
130
+ " \" totalRamStorage\" : 1922134016,\n " +
131
+ " \" freeRamStorage\" : 519774208,\n " +
132
+ " \" dataState\" : \" DATA_DISCONNECTED\" ,\n " +
133
+ " \" simStates\" : [\n " +
134
+ " \" SIM_STATE_READY\" ,\n " +
135
+ " \" SIM_STATE_READY\"\n " +
136
+ " ],\n " +
137
+ " \" networkTransport\" : \" WIFI\" ,\n " +
138
+ " \" androidUptimeMillis\" : 450455711,\n " +
139
+ " \" androidElapsedRealtimeMillis\" : 787550180,\n " +
140
+ " \" androidBootCount\" : 980,\n " +
141
+ " \" language\" : \" es_ES\" ,\n " +
142
+ " \" timeZoneOffsetInSeconds\" : -14400,\n " +
143
+ " \" telephonyNetworkRegion\" : \" VE\" ,\n " +
144
+ " \" simRegion\" : \" ve\" ,\n " +
145
+ " \" appDataDir\" : \" /data/user/0/io.muun.apollo\" ,\n " +
146
+ " \" vpnState\" : 0,\n " +
147
+ " \" appImportance\" : 230,\n " +
148
+ " \" displayMetrics\" : {\n " +
149
+ " \" density\" : 1.75,\n " +
150
+ " \" densityDpi\" : 280,\n " +
151
+ " \" widthPixels\" : 720,\n " +
152
+ " \" heightPixels\" : 1422,\n " +
153
+ " \" xdpi\" : 281.353,\n " +
154
+ " \" ydpi\" : 283.028\n " +
155
+ " },\n " +
156
+ " \" usbConnected\" : 0,\n " +
157
+ " \" usbPersistConfig\" : \" mtp\" ,\n " +
158
+ " \" bridgeEnabled\" : 0,\n " +
159
+ " \" bridgeDaemonStatus\" : \" stopped\" ,\n " +
160
+ " \" developerEnabled\" : 1,\n " +
161
+ " \" proxyHttp\" : \"\" ,\n " +
162
+ " \" proxyHttps\" : \"\" ,\n " +
163
+ " \" proxySocks\" : \"\" ,\n " +
164
+ " \" autoDateTime\" : 1,\n " +
165
+ " \" autoTimeZone\" : 1,\n " +
166
+ " \" timeZoneId\" : \" America/Caracas\" ,\n " +
167
+ " \" androidDateFormat\" : \" d/M/yy\" ,\n " +
168
+ " \" regionCode\" : \" ES\" ,\n " +
169
+ " \" androidCalendarIdentifier\" : \" gregory\" ,\n " +
170
+ " \" androidMobileRxTraffic\" : 0,\n " +
171
+ " \" androidSimOperatorId\" : \" 73404\" ,\n " +
172
+ " \" androidSimOperatorName\" : \" Corporaci\\ u00f3n Digitel\" ,\n " +
173
+ " \" androidMobileOperatorId\" : \" 73402\" ,\n " +
174
+ " \" mobileOperatorName\" : \" DIGITEL\" ,\n " +
175
+ " \" androidMobileRoaming\" : false,\n " +
176
+ " \" androidMobileDataStatus\" : 0,\n " +
177
+ " \" androidMobileRadioType\" : 1,\n " +
178
+ " \" androidMobileDataActivity\" : 2,\n " +
179
+ " \" androidNetworkLink\" : {\n " +
180
+ " \" interfaceName\" : \" wlan0\" ,\n " +
181
+ " \" routesSize\" : 3,\n " +
182
+ " \" routesInterfaces\" : [\n " +
183
+ " \" wlan0\"\n " +
184
+ " ],\n " +
185
+ " \" hasGatewayRoute\" : 1,\n " +
186
+ " \" dnsAddresses\" : [\n " +
187
+ " \" 192.168.0.1\"\n " +
188
+ " ],\n " +
189
+ " \" linkHttpProxyHost\" : \"\"\n " +
190
+ " }\n " +
191
+ " }"
192
+
193
+ @Test
194
+ fun toSafeAsciiExtensionTest () {
195
+ val encodedLanguages = languages.toSafeAscii()
196
+
197
+ Assert .assertEquals(encodedLanguages, expectedEncodedLanguages)
198
+ }
199
+
200
+ @Test
201
+ fun realResponseToSafeAsciiExtensionTest () {
202
+ val encodedResponse = actualResponse.toSafeAscii()
203
+
204
+ Assert .assertEquals(encodedResponse, expectedEncodedResponse)
205
+ }
206
+ }
0 commit comments