Skip to content

Commit 4bd4b29

Browse files
feat(test): #87 Add tests to jug (#113)
1 parent d42f907 commit 4bd4b29

File tree

3 files changed

+510
-111
lines changed

3 files changed

+510
-111
lines changed

src/main/java/com/fasterxml/uuid/Jug.java

+115-111
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public class Jug
4747
OPTIONS.put("verbose", "v");
4848
}
4949

50-
protected static void printUsage()
50+
protected void printUsage()
5151
{
5252
String clsName = Jug.class.getName();
5353
System.err.println("Usage: java "+clsName+" [options] type");
@@ -75,7 +75,7 @@ protected static void printUsage()
7575
System.err.println(" epoch-based / e: generate UUID based on current time (as 'epoch') and random number");
7676
}
7777

78-
private static void printMap(Map<String,String> m, PrintStream out, boolean option)
78+
private void printMap(Map<String,String> m, PrintStream out, boolean option)
7979
{
8080
int i = 0;
8181
int len = m.size();
@@ -102,6 +102,10 @@ private static void printMap(Map<String,String> m, PrintStream out, boolean opti
102102

103103
public static void main(String[] args)
104104
{
105+
new Jug().run(args);
106+
}
107+
108+
public void run(String[] args) {
105109
if (args.length == 0) {
106110
printUsage();
107111
return;
@@ -123,7 +127,7 @@ public static void main(String[] args)
123127
if (tmp == null) {
124128
if (!TYPES.containsValue(type)) {
125129
System.err.println("Unrecognized UUID generation type '"+
126-
type+"'; currently available ones are:");
130+
type+"'; currently available ones are:");
127131
printMap(TYPES, System.err, false);
128132
System.err.println();
129133
System.exit(1);
@@ -136,7 +140,7 @@ public static void main(String[] args)
136140

137141
NoArgGenerator noArgGenerator = null; // random- or time-based
138142
StringArgGenerator nameArgGenerator = null; // name-based
139-
143+
140144
for (int i = 0; i < count; ++i) {
141145
String opt = args[i];
142146

@@ -170,46 +174,46 @@ public static void main(String[] args)
170174
try {
171175
String next;
172176
switch (option) {
173-
case 'c':
174-
// Need a number now:
175-
next = args[++i];
176-
try {
177-
genCount = Integer.parseInt(next);
178-
} catch (NumberFormatException nex) {
179-
System.err.println("Invalid number argument for option '"+opt+"', exiting.");
180-
System.exit(1);
181-
}
182-
if (genCount < 1) {
183-
System.err.println("Invalid number argument for option '"+opt+"'; negative numbers not allowed, ignoring (defaults to 1).");
184-
}
185-
break;
186-
case 'e':
187-
// Need the ethernet address:
188-
next = args[++i];
189-
try {
190-
addr = EthernetAddress.valueOf(next);
191-
} catch (NumberFormatException nex) {
192-
System.err.println("Invalid ethernet address for option '"+opt+"', error: "+nex.toString());
193-
System.exit(1);
194-
}
195-
break;
196-
case 'h':
197-
printUsage();
198-
return;
199-
case 'n':
200-
// Need the name
201-
name = args[++i];
202-
break;
203-
case 'p': // performance:
204-
performance = true;
205-
break;
206-
case 's':
207-
// Need the namespace id
208-
nameSpace = args[++i];
209-
break;
210-
case 'v':
211-
verbose = true;
212-
break;
177+
case 'c':
178+
// Need a number now:
179+
next = args[++i];
180+
try {
181+
genCount = Integer.parseInt(next);
182+
} catch (NumberFormatException nex) {
183+
System.err.println("Invalid number argument for option '"+opt+"', exiting.");
184+
System.exit(1);
185+
}
186+
if (genCount < 1) {
187+
System.err.println("Invalid number argument for option '"+opt+"'; negative numbers not allowed, ignoring (defaults to 1).");
188+
}
189+
break;
190+
case 'e':
191+
// Need the ethernet address:
192+
next = args[++i];
193+
try {
194+
addr = EthernetAddress.valueOf(next);
195+
} catch (NumberFormatException nex) {
196+
System.err.println("Invalid ethernet address for option '"+opt+"', error: "+nex.toString());
197+
System.exit(1);
198+
}
199+
break;
200+
case 'h':
201+
printUsage();
202+
return;
203+
case 'n':
204+
// Need the name
205+
name = args[++i];
206+
break;
207+
case 'p': // performance:
208+
performance = true;
209+
break;
210+
case 's':
211+
// Need the namespace id
212+
nameSpace = args[++i];
213+
break;
214+
case 'v':
215+
verbose = true;
216+
break;
213217
}
214218
} catch (IndexOutOfBoundsException ie) {
215219
// We get here when an arg is missing...
@@ -227,80 +231,80 @@ public static void main(String[] args)
227231
boolean usesRnd = false;
228232

229233
switch (typeC) {
230-
case 't': // time-based
231-
case 'o': // reordered-time-based (Version 6)
232-
// 30-Jun-2022, tatu: Is this true? My former self must have had his
233-
// reasons so leaving as is but... odd.
234-
usesRnd = true;
235-
// No address specified? Need a dummy one...
236-
if (addr == null) {
237-
if (verbose) {
238-
System.out.print("(no address specified, generating dummy address: ");
234+
case 't': // time-based
235+
case 'o': // reordered-time-based (Version 6)
236+
// 30-Jun-2022, tatu: Is this true? My former self must have had his
237+
// reasons so leaving as is but... odd.
238+
usesRnd = true;
239+
// No address specified? Need a dummy one...
240+
if (addr == null) {
241+
if (verbose) {
242+
System.out.print("(no address specified, generating dummy address: ");
243+
}
244+
addr = EthernetAddress.constructMulticastAddress(new java.util.Random(System.currentTimeMillis()));
245+
if (verbose) {
246+
System.out.print(addr.toString());
247+
System.out.println(")");
248+
}
239249
}
240-
addr = EthernetAddress.constructMulticastAddress(new java.util.Random(System.currentTimeMillis()));
241-
if (verbose) {
242-
System.out.print(addr.toString());
243-
System.out.println(")");
250+
noArgGenerator = (typeC == 't')
251+
? Generators.timeBasedGenerator(addr)
252+
: Generators.timeBasedReorderedGenerator(addr);
253+
break;
254+
case 'r': // random-based
255+
usesRnd = true;
256+
{
257+
SecureRandom r = new SecureRandom();
258+
if (verbose) {
259+
System.out.print("(using secure random generator, info = '"+r.getProvider().getInfo()+"')");
260+
}
261+
noArgGenerator = Generators.randomBasedGenerator(r);
244262
}
245-
}
246-
noArgGenerator = (typeC == 't')
247-
? Generators.timeBasedGenerator(addr)
248-
: Generators.timeBasedReorderedGenerator(addr);
249-
break;
250-
case 'r': // random-based
251-
usesRnd = true;
252-
{
253-
SecureRandom r = new SecureRandom();
254-
if (verbose) {
255-
System.out.print("(using secure random generator, info = '"+r.getProvider().getInfo()+"')");
263+
break;
264+
case 'e': // epoch-time-based
265+
usesRnd = true;
266+
{
267+
SecureRandom r = new SecureRandom();
268+
if (verbose) {
269+
System.out.print("(using secure random generator, info = '"+r.getProvider().getInfo()+"')");
270+
}
271+
noArgGenerator = Generators.timeBasedEpochGenerator(r);
256272
}
257-
noArgGenerator = Generators.randomBasedGenerator(r);
258-
}
259-
break;
260-
case 'e': // epoch-time-based
261-
usesRnd = true;
262-
{
263-
SecureRandom r = new SecureRandom();
264-
if (verbose) {
265-
System.out.print("(using secure random generator, info = '"+r.getProvider().getInfo()+"')");
273+
break;
274+
case 'm': // random-epoch-time-based
275+
usesRnd = true;
276+
{
277+
SecureRandom r = new SecureRandom();
278+
if (verbose) {
279+
System.out.print("(using secure random generator, info = '"+r.getProvider().getInfo()+"')");
280+
}
281+
noArgGenerator = Generators.timeBasedEpochRandomGenerator(r);
266282
}
267-
noArgGenerator = Generators.timeBasedEpochGenerator(r);
268-
}
269-
break;
270-
case 'm': // random-epoch-time-based
271-
usesRnd = true;
272-
{
273-
SecureRandom r = new SecureRandom();
274-
if (verbose) {
275-
System.out.print("(using secure random generator, info = '"+r.getProvider().getInfo()+"')");
283+
break;
284+
case 'n': // name-based
285+
if (nameSpace == null) {
286+
System.err.println("--name-space (-s) - argument missing when using method that requires it, exiting.");
287+
System.exit(1);
276288
}
277-
noArgGenerator = Generators.timeBasedEpochRandomGenerator(r);
278-
}
279-
break;
280-
case 'n': // name-based
281-
if (nameSpace == null) {
282-
System.err.println("--name-space (-s) - argument missing when using method that requires it, exiting.");
283-
System.exit(1);
284-
}
285-
if (name == null) {
286-
System.err.println("--name (-n) - argument missing when using method that requires it, exiting.");
287-
System.exit(1);
288-
}
289-
if (typeC == 'n') {
290-
String orig = nameSpace;
291-
nameSpace = nameSpace.toLowerCase();
292-
if (nameSpace.equals("url")) {
293-
nsUUID = NameBasedGenerator.NAMESPACE_URL;
294-
} else if (nameSpace.equals("dns")) {
295-
nsUUID = NameBasedGenerator.NAMESPACE_DNS;
296-
} else {
297-
System.err.println("Unrecognized namespace '"+orig
298-
+"'; only DNS and URL allowed for name-based generation.");
289+
if (name == null) {
290+
System.err.println("--name (-n) - argument missing when using method that requires it, exiting.");
299291
System.exit(1);
300292
}
301-
}
302-
nameArgGenerator = Generators.nameBasedGenerator(nsUUID);
303-
break;
293+
if (typeC == 'n') {
294+
String orig = nameSpace;
295+
nameSpace = nameSpace.toLowerCase();
296+
if (nameSpace.equals("url")) {
297+
nsUUID = NameBasedGenerator.NAMESPACE_URL;
298+
} else if (nameSpace.equals("dns")) {
299+
nsUUID = NameBasedGenerator.NAMESPACE_DNS;
300+
} else {
301+
System.err.println("Unrecognized namespace '"+orig
302+
+"'; only DNS and URL allowed for name-based generation.");
303+
System.exit(1);
304+
}
305+
}
306+
nameArgGenerator = Generators.nameBasedGenerator(nsUUID);
307+
break;
304308
}
305309

306310
// And then let's rock:

0 commit comments

Comments
 (0)