const std = @import("std"); const spec_data = @import("spec_data"); const expected_identifiers = [_][]const u8{ "com.termux", "com.termux.api", "com.termux.boot", "com.termux.float", "com.termux.gui", "com.termux.styling", "com.termux.tasker", "com.termux.widget", "com.termux.x11", }; pub const Fixture = struct { given: bool = false, inspected: bool = false, pub fn init() !Fixture { return .{}; } pub fn deinit(fixture: *Fixture) void { fixture.* = undefined; } pub fn given_generated_android_allowlist(fixture: *Fixture) !void { std.debug.assert(!fixture.given); try std.testing.expectEqual(expected_identifiers.len, spec_data.android_packages.len); fixture.given = true; } pub fn when_inspect_android_allowlist(fixture: *Fixture) !void { std.debug.assert(fixture.given); std.debug.assert(!fixture.inspected); fixture.inspected = true; } pub fn then_inv_android_allowlist_identities(fixture: *Fixture) !void { std.debug.assert(fixture.inspected); for (expected_identifiers, 0..) |identifier, index| { try std.testing.expectEqualStrings( identifier, spec_data.android_packages[index].identifier, ); for (spec_data.android_packages[0..index]) |previous| { try std.testing.expect(!std.mem.eql(u8, previous.identifier, identifier)); } } } pub fn then_inv_android_allowlist_roles(fixture: *Fixture) !void { std.debug.assert(fixture.inspected); for (spec_data.android_packages) |package| { if (std.mem.eql(u8, package.identifier, "com.termux")) { try std.testing.expectEqual(spec_data.AndroidPackageRole.base, package.role); } else { try std.testing.expectEqual(spec_data.AndroidPackageRole.add_on, package.role); } } } pub fn forbid_no_android_allowlist_base_addon(fixture: *Fixture) !void { std.debug.assert(fixture.inspected); for (spec_data.android_packages) |package| { if (std.mem.eql(u8, package.identifier, "com.termux")) { try std.testing.expect(package.role != .add_on); } } } };