const std = @import("std"); const testing = std.testing; test "dataset command argument parsing" { // Test various dataset command argument combinations const test_cases = [_]struct { args: []const []const u8, expected_action: ?[]const u8, should_be_valid: bool, }{ .{ .args = &[_][]const u8{"list"}, .expected_action = "list", .should_be_valid = true }, .{ .args = &[_][]const u8{ "register", "test_dataset", "https://example.com/data.zip" }, .expected_action = "register", .should_be_valid = true }, .{ .args = &[_][]const u8{ "info", "test_dataset" }, .expected_action = "info", .should_be_valid = true }, .{ .args = &[_][]const u8{ "search", "test" }, .expected_action = "search", .should_be_valid = true }, .{ .args = &[_][]const u8{}, .expected_action = null, .should_be_valid = false }, .{ .args = &[_][]const u8{"invalid"}, .expected_action = null, .should_be_valid = false }, }; for (test_cases) |case| { if (case.should_be_valid and case.expected_action != null) { const expected = case.expected_action.?; try testing.expect(case.args.len > 0); try testing.expect(std.mem.eql(u8, case.args[0], expected)); } } } test "dataset URL validation" { // Test URL format validation const valid_urls = [_][]const u8{ "http://example.com/data.zip", "https://example.com/data.zip", "s3://bucket/data.csv", "gs://bucket/data.csv", }; const invalid_urls = [_][]const u8{ "ftp://example.com/data.zip", "example.com/data.zip", "not-a-url", "", }; for (valid_urls) |url| { try testing.expect(url.len > 0); try testing.expect(std.mem.startsWith(u8, url, "http://") or std.mem.startsWith(u8, url, "https://") or std.mem.startsWith(u8, url, "s3://") or std.mem.startsWith(u8, url, "gs://")); } for (invalid_urls) |url| { try testing.expect(!std.mem.startsWith(u8, url, "http://") and !std.mem.startsWith(u8, url, "https://") and !std.mem.startsWith(u8, url, "s3://") and !std.mem.startsWith(u8, url, "gs://")); } }