diff tests/UrlTester.java @ 834:5aa19bbed0d6 monetdbs

Comments and formatting
author Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
date Wed, 13 Dec 2023 15:39:47 +0100 (16 months ago)
parents 9f6fe96c0ead
children 839d76eeb4ae
line wrap: on
line diff
--- a/tests/UrlTester.java
+++ b/tests/UrlTester.java
@@ -5,410 +5,410 @@ import java.net.URISyntaxException;
 import java.util.ArrayList;
 
 public class UrlTester {
-    final String filename;
-    final int verbose;
-    final BufferedReader reader;
-    int lineno = 0;
-    int testCount = 0;
-    Target target = null;
-    Target.Validated validated = null;
+	final String filename;
+	final int verbose;
+	final BufferedReader reader;
+	int lineno = 0;
+	int testCount = 0;
+	Target target = null;
+	Target.Validated validated = null;
 
-    public UrlTester(String filename, BufferedReader reader, int verbose) {
-        this.filename = filename;
-        this.verbose = verbose;
-        this.reader = reader;
-    }
+	public UrlTester(String filename, BufferedReader reader, int verbose) {
+		this.filename = filename;
+		this.verbose = verbose;
+		this.reader = reader;
+	}
 
-    public UrlTester(String filename, int verbose) throws IOException {
-        this.filename = filename;
-        this.verbose = verbose;
-        this.reader = new BufferedReader(new FileReader(filename));
-    }
+	public UrlTester(String filename, int verbose) throws IOException {
+		this.filename = filename;
+		this.verbose = verbose;
+		this.reader = new BufferedReader(new FileReader(filename));
+	}
 
-    public static void main(String[] args) throws IOException {
-        ArrayList<String> filenames = new ArrayList<>();
-        int verbose = 0;
-        for (String arg : args) {
-            switch (arg) {
-                case "-vvv":
-                    verbose++;
-                case "-vv":
-                    verbose++;
-                case "-v":
-                    verbose++;
-                    break;
-                case "-h":
-                case "--help":
-                    exitUsage(null);
-                    break;
-                default:
-                    if (!arg.startsWith("-")) {
-                        filenames.add(arg);
-                    } else {
-                        exitUsage("Unexpected argument: " + arg);
-                    }
-                    break;
-            }
-        }
+	public static void main(String[] args) throws IOException {
+		ArrayList<String> filenames = new ArrayList<>();
+		int verbose = 0;
+		for (String arg : args) {
+			switch (arg) {
+				case "-vvv":
+					verbose++;
+				case "-vv":
+					verbose++;
+				case "-v":
+					verbose++;
+					break;
+				case "-h":
+				case "--help":
+					exitUsage(null);
+					break;
+				default:
+					if (!arg.startsWith("-")) {
+						filenames.add(arg);
+					} else {
+						exitUsage("Unexpected argument: " + arg);
+					}
+					break;
+			}
+		}
 
-        runUnitTests();
+		runUnitTests();
 
-        try {
-            if (filenames.isEmpty()) {
-                runAllTests();
-            } else {
-                for (String filename : filenames) {
-                    new UrlTester(filename, verbose).run();
-                }
-            }
-        } catch (Failure e) {
-            System.err.println("Test failed: " + e.getMessage());
-            System.exit(1);
-        }
-    }
+		try {
+			if (filenames.isEmpty()) {
+				runAllTests();
+			} else {
+				for (String filename : filenames) {
+					new UrlTester(filename, verbose).run();
+				}
+			}
+		} catch (Failure e) {
+			System.err.println("Test failed: " + e.getMessage());
+			System.exit(1);
+		}
+	}
 
-    private static void exitUsage(String message) {
-        if (message != null) {
-            System.err.println(message);
-        }
-        System.err.println("Usage: UrlTester OPTIONS [FILENAME..]");
-        System.err.println("Options:");
-        System.err.println("   -v        Be more verbose");
-        System.err.println("   -h --help Show this help");
-        int status = message == null ? 0 : 1;
-        System.exit(status);
-    }
+	private static void exitUsage(String message) {
+		if (message != null) {
+			System.err.println(message);
+		}
+		System.err.println("Usage: UrlTester OPTIONS [FILENAME..]");
+		System.err.println("Options:");
+		System.err.println("   -v        Be more verbose");
+		System.err.println("   -h --help Show this help");
+		int status = message == null ? 0 : 1;
+		System.exit(status);
+	}
 
-    public static UrlTester forResource(String resourceName, int verbose) throws FileNotFoundException {
-        InputStream stream = UrlTester.class.getResourceAsStream(resourceName);
-        if (stream == null) {
-            throw new FileNotFoundException("Resource " + resourceName);
-        }
-        BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
-        return new UrlTester(resourceName, reader, verbose);
-    }
+	public static UrlTester forResource(String resourceName, int verbose) throws FileNotFoundException {
+		InputStream stream = UrlTester.class.getResourceAsStream(resourceName);
+		if (stream == null) {
+			throw new FileNotFoundException("Resource " + resourceName);
+		}
+		BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
+		return new UrlTester(resourceName, reader, verbose);
+	}
 
-    public static void runAllTests() throws IOException, Failure {
-        runUnitTests();
-        UrlTester.forResource("/tests.md", 0).run();
-        UrlTester.forResource("/javaspecific.md", 0).run();
-    }
+	public static void runAllTests() throws IOException, Failure {
+		runUnitTests();
+		UrlTester.forResource("/tests.md", 0).run();
+		UrlTester.forResource("/javaspecific.md", 0).run();
+	}
 
-    public static void runUnitTests() {
-        testDefaults();
-        testParameters();
-    }
+	public static void runUnitTests() {
+		testDefaults();
+		testParameters();
+	}
 
-    private static void testDefaults() {
-        Target target = new Target();
+	private static void testDefaults() {
+		Target target = new Target();
 
-        for (Parameter parm : Parameter.values()) {
-            Object expected = parm.getDefault();
-            if (expected == null)
-                continue;
-            Object actual = target.getObject(parm);
-            if (!expected.equals(actual)) {
-                throw new RuntimeException("Default for " + parm.name + " expected to be <" + expected + "> but is <" + actual + ">");
-            }
-        }
-    }
+		for (Parameter parm : Parameter.values()) {
+			Object expected = parm.getDefault();
+			if (expected == null)
+				continue;
+			Object actual = target.getObject(parm);
+			if (!expected.equals(actual)) {
+				throw new RuntimeException("Default for " + parm.name + " expected to be <" + expected + "> but is <" + actual + ">");
+			}
+		}
+	}
 
-    private static void testParameters() {
-        for (Parameter parm : Parameter.values()) {
-            Parameter found = Parameter.forName(parm.name);
-            if (parm != found) {
-                String foundStr = found != null ? found.name : "null";
-                throw new RuntimeException("Looking up <" + parm.name + ">, found <" + foundStr);
-            }
-        }
-    }
+	private static void testParameters() {
+		for (Parameter parm : Parameter.values()) {
+			Parameter found = Parameter.forName(parm.name);
+			if (parm != found) {
+				String foundStr = found != null ? found.name : "null";
+				throw new RuntimeException("Looking up <" + parm.name + ">, found <" + foundStr);
+			}
+		}
+	}
 
-    public void run() throws Failure, IOException {
-        try {
-            processFile();
-        } catch (Failure e) {
-            if (e.getFilename() == null) {
-                e.setFilename(filename);
-                e.setLineno(lineno);
-                throw e;
-            }
-        }
-    }
+	public void run() throws Failure, IOException {
+		try {
+			processFile();
+		} catch (Failure e) {
+			if (e.getFilename() == null) {
+				e.setFilename(filename);
+				e.setLineno(lineno);
+				throw e;
+			}
+		}
+	}
 
-    private void processFile() throws IOException, Failure {
-        while (true) {
-            String line = reader.readLine();
-            if (line == null)
-                break;
-            lineno++;
-            processLine(line);
-        }
-        if (verbose >= 1) {
-            System.out.println();
-            System.out.println("Ran " + testCount + " tests in " + lineno + " lines");
-        }
-    }
+	private void processFile() throws IOException, Failure {
+		while (true) {
+			String line = reader.readLine();
+			if (line == null)
+				break;
+			lineno++;
+			processLine(line);
+		}
+		if (verbose >= 1) {
+			System.out.println();
+			System.out.println("Ran " + testCount + " tests in " + lineno + " lines");
+		}
+	}
 
-    private void processLine(String line) throws Failure {
-        line = line.replaceFirst("\\s+$", ""); // remove trailing
-        if (target == null && line.equals("```test")) {
-            if (verbose >= 2) {
-                if (testCount > 0) {
-                    System.out.println();
-                }
-                System.out.println("\u25B6 " + filename + ":" + lineno);
-            }
-            target = new Target();
-            testCount++;
-            return;
-        }
-        if (target != null) {
-            if (line.equals("```")) {
-                stopProcessing();
-                return;
-            }
-            handleCommand(line);
-        }
-    }
+	private void processLine(String line) throws Failure {
+		line = line.replaceFirst("\\s+$", ""); // remove trailing
+		if (target == null && line.equals("```test")) {
+			if (verbose >= 2) {
+				if (testCount > 0) {
+					System.out.println();
+				}
+				System.out.println("\u25B6 " + filename + ":" + lineno);
+			}
+			target = new Target();
+			testCount++;
+			return;
+		}
+		if (target != null) {
+			if (line.equals("```")) {
+				stopProcessing();
+				return;
+			}
+			handleCommand(line);
+		}
+	}
 
-    private void stopProcessing() {
-        target = null;
-        validated = null;
-    }
+	private void stopProcessing() {
+		target = null;
+		validated = null;
+	}
 
-    private void handleCommand(String line) throws Failure {
-        if (verbose >= 3) {
-            System.out.println(line);
-        }
-        if (line.isEmpty())
-            return;
+	private void handleCommand(String line) throws Failure {
+		if (verbose >= 3) {
+			System.out.println(line);
+		}
+		if (line.isEmpty())
+			return;
 
-        String[] parts = line.split("\\s+", 2);
-        String command = parts[0];
-        switch (command.toUpperCase()) {
-            case "ONLY":
-                handleOnly(true, parts[1]);
-                return;
-            case "NOT":
-                handleOnly(false, parts[1]);
-                return;
-            case "PARSE":
-                handleParse(parts[1], null);
-                return;
-            case "ACCEPT":
-                handleParse(parts[1], true);
-                return;
-            case "REJECT":
-                handleParse(parts[1], false);
-                return;
-            case "SET":
-                handleSet(parts[1]);
-                return;
-            case "EXPECT":
-                handleExpect(parts[1]);
-                return;
-            default:
-                throw new Failure("Unexpected command: " + command);
-        }
+		String[] parts = line.split("\\s+", 2);
+		String command = parts[0];
+		switch (command.toUpperCase()) {
+			case "ONLY":
+				handleOnly(true, parts[1]);
+				return;
+			case "NOT":
+				handleOnly(false, parts[1]);
+				return;
+			case "PARSE":
+				handleParse(parts[1], null);
+				return;
+			case "ACCEPT":
+				handleParse(parts[1], true);
+				return;
+			case "REJECT":
+				handleParse(parts[1], false);
+				return;
+			case "SET":
+				handleSet(parts[1]);
+				return;
+			case "EXPECT":
+				handleExpect(parts[1]);
+				return;
+			default:
+				throw new Failure("Unexpected command: " + command);
+		}
 
-    }
+	}
 
-    private void handleOnly(boolean mustBePresent, String rest) throws Failure {
-        boolean found = false;
-        for (String part : rest.split("\\s+")) {
-            if (part.equals("jdbc")) {
-                found = true;
-                break;
-            }
-        }
-        if (found != mustBePresent) {
-            // do not further process this block
-            stopProcessing();
-        }
-    }
+	private void handleOnly(boolean mustBePresent, String rest) throws Failure {
+		boolean found = false;
+		for (String part : rest.split("\\s+")) {
+			if (part.equals("jdbc")) {
+				found = true;
+				break;
+			}
+		}
+		if (found != mustBePresent) {
+			// do not further process this block
+			stopProcessing();
+		}
+	}
 
-    private int findEqualSign(String rest) throws Failure {
-        int index = rest.indexOf('=');
-        if (index < -1)
-            throw new Failure("Expected to find a '='");
-        return index;
-    }
+	private int findEqualSign(String rest) throws Failure {
+		int index = rest.indexOf('=');
+		if (index < -1)
+			throw new Failure("Expected to find a '='");
+		return index;
+	}
 
-    private String splitKey(String rest) throws Failure {
-        int index = findEqualSign(rest);
-        return rest.substring(0, index);
-    }
+	private String splitKey(String rest) throws Failure {
+		int index = findEqualSign(rest);
+		return rest.substring(0, index);
+	}
 
-    private String splitValue(String rest) throws Failure {
-        int index = findEqualSign(rest);
-        return rest.substring(index + 1);
-    }
+	private String splitValue(String rest) throws Failure {
+		int index = findEqualSign(rest);
+		return rest.substring(index + 1);
+	}
 
-    private void handleSet(String rest) throws Failure {
-        validated = null;
-        String key = splitKey(rest);
-        String value = splitValue(rest);
+	private void handleSet(String rest) throws Failure {
+		validated = null;
+		String key = splitKey(rest);
+		String value = splitValue(rest);
 
-        try {
-            target.setString(key, value);
-        } catch (ValidationError e) {
-            throw new Failure(e.getMessage());
-        }
-    }
+		try {
+			target.setString(key, value);
+		} catch (ValidationError e) {
+			throw new Failure(e.getMessage());
+		}
+	}
 
-    private void handleParse(String rest, Boolean shouldSucceed) throws Failure {
-        URISyntaxException parseError = null;
-        ValidationError validationError = null;
+	private void handleParse(String rest, Boolean shouldSucceed) throws Failure {
+		URISyntaxException parseError = null;
+		ValidationError validationError = null;
 
-        validated = null;
-        try {
-            target.barrier();
-            MonetUrlParser.parse(target, rest);
-        } catch (URISyntaxException e) {
-            parseError = e;
-        } catch (ValidationError e) {
-            validationError = e;
-        }
+		validated = null;
+		try {
+			target.barrier();
+			MonetUrlParser.parse(target, rest);
+		} catch (URISyntaxException e) {
+			parseError = e;
+		} catch (ValidationError e) {
+			validationError = e;
+		}
 
-        if (parseError == null && validationError == null) {
-            try {
-                tryValidate();
-            } catch (ValidationError e) {
-                validationError = e;
-            }
-        }
+		if (parseError == null && validationError == null) {
+			try {
+				tryValidate();
+			} catch (ValidationError e) {
+				validationError = e;
+			}
+		}
 
-        if (shouldSucceed == Boolean.FALSE) {
-            if (parseError != null || validationError != null)
-                return; // happy
-            else
-                throw new Failure("URL unexpectedly parsed and validated");
-        }
+		if (shouldSucceed == Boolean.FALSE) {
+			if (parseError != null || validationError != null)
+				return; // happy
+			else
+				throw new Failure("URL unexpectedly parsed and validated");
+		}
 
-        if (parseError != null)
-            throw new Failure("Parse error: " + parseError);
-        if (validationError != null && shouldSucceed == Boolean.TRUE)
-            throw new Failure("Validation error: " + validationError);
-    }
+		if (parseError != null)
+			throw new Failure("Parse error: " + parseError);
+		if (validationError != null && shouldSucceed == Boolean.TRUE)
+			throw new Failure("Validation error: " + validationError);
+	}
 
-    private void handleExpect(String rest) throws Failure {
-        String key = splitKey(rest);
-        String expectedString = splitValue(rest);
+	private void handleExpect(String rest) throws Failure {
+		String key = splitKey(rest);
+		String expectedString = splitValue(rest);
 
-        Object actual = null;
-        try {
-            actual = extract(key);
-        } catch (ValidationError e) {
-            throw new Failure(e.getMessage());
-        }
+		Object actual = null;
+		try {
+			actual = extract(key);
+		} catch (ValidationError e) {
+			throw new Failure(e.getMessage());
+		}
 
-        Object expected;
-        try {
-            if (actual instanceof Boolean)
-                expected = ParameterType.Bool.parse(key, expectedString);
-            else if (actual instanceof Integer)
-                expected = ParameterType.Int.parse(key, expectedString);
-            else
-                expected = expectedString;
-        } catch (ValidationError e) {
-            String typ = actual.getClass().getName();
-            throw new Failure("Cannot convert expected value <" + expectedString + "> to " + typ + ": " + e.getMessage());
-        }
+		Object expected;
+		try {
+			if (actual instanceof Boolean)
+				expected = ParameterType.Bool.parse(key, expectedString);
+			else if (actual instanceof Integer)
+				expected = ParameterType.Int.parse(key, expectedString);
+			else
+				expected = expectedString;
+		} catch (ValidationError e) {
+			String typ = actual.getClass().getName();
+			throw new Failure("Cannot convert expected value <" + expectedString + "> to " + typ + ": " + e.getMessage());
+		}
 
-        if (actual.equals(expected))
-            return;
-        throw new Failure("Expected " + key + "=<" + expectedString + ">, found <" + actual + ">");
-    }
+		if (actual.equals(expected))
+			return;
+		throw new Failure("Expected " + key + "=<" + expectedString + ">, found <" + actual + ">");
+	}
 
-    private Target.Validated tryValidate() throws ValidationError {
-        if (validated == null)
-            validated = target.validate();
-        return validated;
-    }
+	private Target.Validated tryValidate() throws ValidationError {
+		if (validated == null)
+			validated = target.validate();
+		return validated;
+	}
 
-    private Object extract(String key) throws ValidationError, Failure {
-        switch (key) {
-            case "valid":
-                try {
-                    tryValidate();
-                } catch (ValidationError e) {
-                    return Boolean.FALSE;
-                }
-                return Boolean.TRUE;
+	private Object extract(String key) throws ValidationError, Failure {
+		switch (key) {
+			case "valid":
+				try {
+					tryValidate();
+				} catch (ValidationError e) {
+					return Boolean.FALSE;
+				}
+				return Boolean.TRUE;
 
-            case "connect_scan":
-                return tryValidate().connectScan();
-            case "connect_port":
-                return tryValidate().connectPort();
-            case "connect_unix":
-                return tryValidate().connectUnix();
-            case "connect_tcp":
-                return tryValidate().connectTcp();
-            case "connect_tls_verify":
-                switch (tryValidate().connectVerify()) {
-                    case None:
-                        return "";
-                    case Cert:
-                        return "cert";
-                    case Hash:
-                        return "hash";
-                    case System:
-                        return "system";
-                    default:
-                        throw new IllegalStateException("unreachable");
-                }
-            case "connect_certhash_digits":
-                return tryValidate().connectCertHashDigits();
-            case "connect_binary":
-                return tryValidate().connectBinary();
-            case "connect_clientkey":
-                return tryValidate().connectClientKey();
-            case "connect_clientcert":
-                return tryValidate().connectClientCert();
+			case "connect_scan":
+				return tryValidate().connectScan();
+			case "connect_port":
+				return tryValidate().connectPort();
+			case "connect_unix":
+				return tryValidate().connectUnix();
+			case "connect_tcp":
+				return tryValidate().connectTcp();
+			case "connect_tls_verify":
+				switch (tryValidate().connectVerify()) {
+					case None:
+						return "";
+					case Cert:
+						return "cert";
+					case Hash:
+						return "hash";
+					case System:
+						return "system";
+					default:
+						throw new IllegalStateException("unreachable");
+				}
+			case "connect_certhash_digits":
+				return tryValidate().connectCertHashDigits();
+			case "connect_binary":
+				return tryValidate().connectBinary();
+			case "connect_clientkey":
+				return tryValidate().connectClientKey();
+			case "connect_clientcert":
+				return tryValidate().connectClientCert();
 
-            default:
-                Parameter parm = Parameter.forName(key);
-                if (parm != null)
-                    return target.getObject(parm);
-                else
-                    throw new Failure("Unknown attribute: " + key);
-        }
-    }
+			default:
+				Parameter parm = Parameter.forName(key);
+				if (parm != null)
+					return target.getObject(parm);
+				else
+					throw new Failure("Unknown attribute: " + key);
+		}
+	}
 
-    public static class Failure extends Exception {
-        private String filename = null;
-        private int lineno = -1;
+	public static class Failure extends Exception {
+		private String filename = null;
+		private int lineno = -1;
 
-        public Failure(String message) {
-            super(message);
-        }
+		public Failure(String message) {
+			super(message);
+		}
 
-        @Override
-        public String getMessage() {
-            StringBuilder buffer = new StringBuilder();
-            if (filename != null) {
-                buffer.append(filename).append(":");
-                if (lineno >= 0)
-                    buffer.append(lineno).append(":");
-            }
-            buffer.append(super.getMessage());
-            return buffer.toString();
-        }
+		@Override
+		public String getMessage() {
+			StringBuilder buffer = new StringBuilder();
+			if (filename != null) {
+				buffer.append(filename).append(":");
+				if (lineno >= 0)
+					buffer.append(lineno).append(":");
+			}
+			buffer.append(super.getMessage());
+			return buffer.toString();
+		}
 
-        public String getFilename() {
-            return filename;
-        }
+		public String getFilename() {
+			return filename;
+		}
 
-        public void setFilename(String filename) {
-            this.filename = filename;
-        }
+		public void setFilename(String filename) {
+			this.filename = filename;
+		}
 
-        public int getLineno() {
-            return lineno;
-        }
+		public int getLineno() {
+			return lineno;
+		}
 
-        public void setLineno(int lineno) {
-            this.lineno = lineno;
-        }
-    }
+		public void setLineno(int lineno) {
+			this.lineno = lineno;
+		}
+	}
 }