Skip to content

Commit 93ca0d9

Browse files
authored
Merge pull request #5 from nats-io/test-coverage
Test Coverage and Cleanup
2 parents 2117e1b + b0360ee commit 93ca0d9

File tree

6 files changed

+155
-8
lines changed

6 files changed

+155
-8
lines changed

src/main/java/io/nats/client/support/JsonParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,7 @@ private JsonValue asNumber(String val) throws JsonParseException {
432432
throw new JsonParseException("val ["+val+"] is not a valid number.");
433433
}
434434

435-
private boolean isDecimalNotation(final String val) {
435+
static boolean isDecimalNotation(final String val) {
436436
return val.indexOf('.') > -1 || val.indexOf('e') > -1
437437
|| val.indexOf('E') > -1 || "-0".equals(val);
438438
}

src/main/java/io/nats/client/support/JsonUtils.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ public abstract class JsonUtils {
3333
private static final String QCOLON = "\":";
3434
private static final String QCOMMA = "\",";
3535
private static final String COMMA = ",";
36-
private static final String COLON = ":";
3736

3837
private JsonUtils() {} /* ensures cannot be constructed */
3938

src/test/java/io/nats/client/support/DateTimeUtilsTests.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,11 @@ public void testToRfc3339() {
4343
Instant i = Instant.ofEpochSecond(1611186068);
4444
ZonedDateTime zdt1 = ZonedDateTime.ofInstant(i, ZoneId.systemDefault());
4545
ZonedDateTime zdt2 = ZonedDateTime.ofInstant(i, DateTimeUtils.ZONE_ID_GMT);
46-
System.out.println(zdt1);
47-
System.out.println(zdt2);
4846
assertEquals(zdt1.toEpochSecond(), zdt2.toEpochSecond());
4947

5048
String rfc1 = DateTimeUtils.toRfc3339(zdt1);
5149
String rfc2 = DateTimeUtils.toRfc3339(zdt2);
5250
assertEquals(rfc1, rfc2);
53-
System.out.println(zdt2.toEpochSecond());
5451

5552
assertEquals("2021-01-20T23:41:08.579594000Z", DateTimeUtils.toRfc3339(DateTimeUtils.parseDateTime("2021-01-20T23:41:08.579594Z")));
5653
assertEquals("2021-02-02T19:18:28.347722551Z", DateTimeUtils.toRfc3339(DateTimeUtils.parseDateTime("2021-02-02T11:18:28.347722551-08:00")));

src/test/java/io/nats/client/support/JsonEncodingTests.java

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818

1919
import java.util.List;
2020

21-
import static io.nats.client.support.Encoding.jsonDecode;
22-
import static io.nats.client.support.Encoding.jsonEncode;
21+
import static io.nats.client.support.Encoding.*;
22+
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
2323
import static org.junit.jupiter.api.Assertions.assertEquals;
2424

2525
public final class JsonEncodingTests {
@@ -68,4 +68,36 @@ private void _testJsonEncodeDecode(String encodedInput, String targetDecode, Str
6868
assertEquals(targetEncode, encoded);
6969
}
7070
}
71+
72+
@SuppressWarnings("deprecation")
73+
@Test
74+
public void testBase64Encoding() {
75+
String text = "blahblah";
76+
byte[] btxt = text.getBytes();
77+
String surl = "https://nats.io/";
78+
byte[] burl = surl.getBytes();
79+
80+
byte[] encBytes = Encoding.base64Encode(btxt);
81+
byte[] uencBytes = Encoding.base64UrlEncode(btxt);
82+
assertEquals("YmxhaGJsYWg", new String(encBytes));
83+
assertEquals("YmxhaGJsYWg", new String(uencBytes));
84+
assertEquals("YmxhaGJsYWg", toBase64Url(text));
85+
assertEquals("YmxhaGJsYWg", toBase64Url(btxt));
86+
assertEquals(text, fromBase64Url("YmxhaGJsYWg"));
87+
assertArrayEquals(btxt, base64UrlDecode(encBytes));
88+
assertArrayEquals(btxt, base64UrlDecode(uencBytes));
89+
90+
//noinspection deprecation
91+
encBytes = Encoding.base64Encode(burl);
92+
uencBytes = Encoding.base64UrlEncode(burl);
93+
assertEquals("aHR0cHM6Ly9uYXRzLmlvLw", new String(encBytes));
94+
assertEquals("aHR0cHM6Ly9uYXRzLmlvLw", new String(uencBytes));
95+
assertEquals("aHR0cHM6Ly9uYXRzLmlvLw", toBase64Url(surl));
96+
assertEquals("aHR0cHM6Ly9uYXRzLmlvLw", toBase64Url(burl));
97+
assertEquals(surl, fromBase64Url("aHR0cHM6Ly9uYXRzLmlvLw"));
98+
assertArrayEquals(burl, base64UrlDecode(encBytes));
99+
assertArrayEquals(burl, base64UrlDecode(uencBytes));
100+
101+
assertEquals("+ hello world", uriDecode("+%20hello%20world"));
102+
}
71103
}

src/test/java/io/nats/client/support/JsonParsingTests.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,12 @@ public void testNumberParsing() throws JsonParseException {
674674
assertEquals(JsonValue.Type.BIG_DECIMAL, parse("00.001").type);
675675
assertEquals(JsonValue.Type.BIG_INTEGER, parse("12345678901234567890").type);
676676

677+
assertTrue(JsonParser.isDecimalNotation("-0"));
678+
assertTrue(JsonParser.isDecimalNotation("1.1"));
679+
assertTrue(JsonParser.isDecimalNotation("-24e7345"));
680+
assertTrue(JsonParser.isDecimalNotation("-24E7345"));
681+
assertFalse(JsonParser.isDecimalNotation("12345"));
682+
677683
String str = new BigInteger( Long.toString(Long.MAX_VALUE) ).add( BigInteger.ONE ).toString();
678684
assertEquals(JsonValue.Type.BIG_INTEGER, parse(str).type);
679685

src/test/java/io/nats/client/support/JsonUtilsTests.java

Lines changed: 114 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import io.ResourceUtils;
1717
import org.junit.jupiter.api.Test;
1818

19+
import java.time.Duration;
1920
import java.time.ZonedDateTime;
2021
import java.util.ArrayList;
2122
import java.util.HashMap;
@@ -37,7 +38,8 @@ public void testBeginEnd() {
3738

3839
sb = beginFormattedJson();
3940
addField(sb, "name", "value");
40-
endFormattedJson(sb);
41+
String ended = endFormattedJson(sb);
42+
assertEquals("{\n \"name\":\"value\"\n}", ended);
4143
assertEquals("{\n \"name\":\"value\"\n}", sb.toString());
4244

4345
sb = beginJsonPrefixed(null);
@@ -150,6 +152,9 @@ public void testAddFields() {
150152
addField(sb, "zdt", DateTimeUtils.gmtNow());
151153
assertEquals(149, sb.length());
152154

155+
addFieldWhenGreaterThan(sb, "xgt", null, 1);
156+
assertEquals(149, sb.length());
157+
153158
addFieldWhenGreaterThan(sb, "xgt", 0L, 1);
154159
assertEquals(149, sb.length());
155160

@@ -158,6 +163,111 @@ public void testAddFields() {
158163

159164
addFieldWhenGreaterThan(sb, "xgt", 2L, 1);
160165
assertEquals(157, sb.length());
166+
167+
addRawJson(sb, "n/a", null);
168+
assertEquals(157, sb.length());
169+
170+
addRawJson(sb, "n/a", "");
171+
assertEquals(157, sb.length());
172+
173+
addRawJson(sb, "raw", "raw");
174+
assertEquals(167, sb.length());
175+
176+
addFieldEvenEmpty(sb, "ee1", null);
177+
assertEquals(176, sb.length());
178+
179+
addFieldEvenEmpty(sb, "ee2", "");
180+
assertEquals(185, sb.length());
181+
182+
addFieldWhenGteMinusOne(sb, "n/a", null);
183+
assertEquals(185, sb.length());
184+
185+
addFieldWhenGteMinusOne(sb, "n/a", -2L);
186+
assertEquals(185, sb.length());
187+
188+
addFieldWhenGteMinusOne(sb, "gtem1", -1L);
189+
assertEquals(196, sb.length());
190+
191+
addFieldAsNanos(sb, "n/a", null);
192+
assertEquals(196, sb.length());
193+
194+
addFieldAsNanos(sb, "n/a", Duration.ZERO);
195+
assertEquals(196, sb.length());
196+
197+
addFieldAsNanos(sb, "n/a", Duration.ofNanos(-1));
198+
assertEquals(196, sb.length());
199+
200+
addFieldAsNanos(sb, "fan", Duration.ofNanos(1000000));
201+
assertEquals(210, sb.length());
202+
203+
addEnumWhenNot(sb, "n/a", null, JsonValue.Type.STRING);
204+
assertEquals(210, sb.length());
205+
206+
addEnumWhenNot(sb, "n/a", JsonValue.Type.STRING, JsonValue.Type.STRING);
207+
assertEquals(210, sb.length());
208+
209+
addEnumWhenNot(sb, "ewn", JsonValue.Type.STRING, JsonValue.Type.LONG);
210+
assertEquals(225, sb.length());
211+
212+
//noinspection unchecked
213+
addField(sb, "n/a", (Map)null);
214+
assertEquals(225, sb.length());
215+
216+
Map<String, String> map = new HashMap<>();
217+
addField(sb, "n/a", map);
218+
assertEquals(225, sb.length());
219+
220+
map.put("mfoo", "mbar");
221+
addField(sb, "afmap", map);
222+
assertEquals(249, sb.length());
223+
224+
addFldWhenTrue(sb, "whentrue", true);
225+
assertEquals(265, sb.length());
226+
227+
_addList(sb, "al1", new ArrayList<>(), StringBuilder::append);
228+
assertEquals(274, sb.length());
229+
230+
List<Integer> ilist = new ArrayList<>();
231+
_addList(sb, "al2", ilist, StringBuilder::append);
232+
assertEquals(283, sb.length());
233+
234+
ilist.add(1);
235+
_addList(sb, "al3", ilist, StringBuilder::append);
236+
assertEquals(293, sb.length());
237+
238+
ilist.add(2);
239+
_addList(sb, "al4", ilist, StringBuilder::append);
240+
assertEquals(305, sb.length());
241+
242+
List<String> slist = new ArrayList<>();
243+
addStrings(sb, "n/a", slist);
244+
assertEquals(305, sb.length());
245+
246+
slist.add("s");
247+
addStrings(sb, "slist", slist);
248+
assertEquals(319, sb.length());
249+
250+
List<Duration> durs = new ArrayList<>();
251+
addDurations(sb, "dur1", durs);
252+
assertEquals(319, sb.length());
253+
254+
durs.add(Duration.ofMillis(1));
255+
addDurations(sb, "dur2", durs);
256+
assertEquals(336, sb.length());
257+
258+
addJsons(sb, "n/a", null);
259+
assertEquals(336, sb.length());
260+
261+
List<JsonValue> jlist = new ArrayList<>();
262+
addJsons(sb, "n/a", jlist);
263+
assertEquals(336, sb.length());
264+
265+
JsonValue jv = new JsonValue("jv");
266+
jlist.add(jv);
267+
addJsons(sb, "jsons", jlist);
268+
assertEquals(351, sb.length());
269+
System.out.println(sb);
270+
System.out.println(sb.length());
161271
}
162272

163273
@Test
@@ -174,12 +284,15 @@ public void testParseLong() {
174284
assertEquals(-999, safeParseLong("18446744073709551616", -999));
175285
assertEquals(-999, safeParseLong(null, -999));
176286
assertEquals(-999, safeParseLong("notanumber", -999));
287+
assertEquals(1, safeParseLong("1"));
177288
}
178289

179290
@Test
180291
public void testMiscCoverage() {
181292
String json = ResourceUtils.resourceAsString("StreamInfo.json");
182293
printFormatted(JsonParser.parseUnchecked(json));
294+
295+
assertEquals("\"JsonUtilsTests\":", toKey(this.getClass()));
183296
}
184297

185298
@Test

0 commit comments

Comments
 (0)